c字符串标记化问题

时间:2009-09-25 14:33:36

标签: c string

char *str = malloc (14);
sprintf(str, "%s", "one|two|three");

char *token1, *token2, *token3;
char *start = str;

token1 = str;
char *end = strchr (str, '|');
str = end + 1;
end = '\0';

token2 = str;
end = strchr (str, '|');
str = end + 1;
end = '\0';

...

free(start);

这是免费工作,因为我已经将str中的字节设置为null以便对它进行标记化吗?

2 个答案:

答案 0 :(得分:5)

是的它有效,free并不关心null终止的位置。或者即使有一个。您可以将malloc / free用于任何类型的数据,而不仅仅是空终止字符串。

答案 1 :(得分:3)

免费不检查数据的内容。所以是的,这是正确的