我正在查看 2 个 C 字符串函数 strtok_r() 和 strsep(),并注意到这两个函数都修改了传入的原始字符串的位置。
是否还有其他不修改传入的原始字符串的 C 字符串函数?
在我的应用程序中,原始字符串是动态分配的,所以我希望在解析完成后释放原始字符串。
strtok_r() 的示例
int main(){
char * str = strdup("Tutorial and example");
char* token;
char* rest = str;
printf("%s\n", rest);
while ((token = strtok_r(rest, " ", &rest)))
printf("%s\n", token);
printf("\n%s\n",str);
return(0);
}
输出
Tutorial and example
Tutorial
and
example
Tutorial
在最后一行,我希望 str 指向未修改的 cstring“教程和示例”。
strsep() 也会出现类似的输出。
int main(){
char * str = strdup("Tutorial and example");
char* token;
char* rest = str;
printf("%s\n", rest);
while ((token = strsep(&rest, " ")))
printf("%s\n", token);
if (rest != NULL)
printf("%s\n", rest);
printf("%s\n", str);
return(0);
}
谢谢你。