strtok()
函数的工作原理。手册上说它将字符串分解为标记,但我无法从手册中理解它实际上是做什么的。我在
str
和*pch
上添加了监视器以检查第一个while循环发生时它的工作情况,当str
的内容只有"this"时,下面显示在屏幕上的输出是如何产生的?/* strtok example */
#include <stdio.h>
#include <string.h>
int main ()
{
char str[] ="- This, a sample string.";
char * pch;
printf ("Splitting string \"%s\" into tokens:\n",str);
pch = strtok (str," ,.-");
while (pch != NULL)
{
printf ("%s\n",pch);
pch = strtok (NULL, " ,.-");
}
return 0;
}
输出:
将字符串“- This,a sample string。”拆分为标记: This a sample string
strtok()
在返回结果之前,会修改输入的字符串并用空字符(NUL)作为分隔符。如果您试图在连续调用strtok()
之间检查整个缓冲区(即str[]),您会发现它已经被修改了。 - Michael FoukarakisNULL
,它会保存最后一个返回结果并从下一个字符继续搜索。这显然使它不是线程安全的,一次只能有一个标记化活动。参考 - DCoder