char str[] = "int\0x,y;\0";
char* token = strtok(str, ",");
while (token != NULL) {
printf("%s\n", token);
token = strtok(NULL, ",");
}
在给定的代码中,strtok() 在第一次迭代后为我打印“int”,但如果我将它更改为字符串“double”(代替 int),它会返回 NULL 并且不会进入 while 循环.
尝试更改字符串,并在网络上搜索...
一旦遇到终止零字符
'\0'
,下一次调用中的函数strtok
就会返回一个空指针。
所以对于这个代码片段
char str[] = "int\0x,y;\0";
char* token = strtok(str, ",");
while (token != NULL) {
printf("%s\n", token);
token = strtok(NULL, ",");
}
在 while 循环中调用
strtok
返回一个空指针。
从函数的角度来看
strtok
它处理一个字符串"int"
.
如果你像这样改变数组
char str[] = "double\0x,y;\0";
或
char str[] = "double";
效果将是相同的,而不是字符串
"int"
第一次调用strtok
将返回一个指向字符串"double"
.的指针