c字符串标记化问题

use*_*033 1 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);
Run Code Online (Sandbox Code Playgroud)

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

Bri*_*ndy 5

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