【发布时间】:2011-04-22 20:16:07
【问题描述】:
请向我解释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;
}
输出:
拆分字符串“- 这是一个示例字符串。”进入令牌: 这 一种 样本 细绳【问题讨论】:
-
strtok()通过在返回前用 NUL 终止标记来修改其参数字符串。如果您尝试检查整个缓冲区 (str[]),您会看到它在连续调用strtok()之间被修改。 -
不要看
str,而是看str[0],str[1],str[2], ... -
@pmg: 我看了 str[0] 和 str[1].str[1] 应该是 '\0',但那里是个空格。
-
老实说,我从来没有费心去检查,但我想它存储了最后一个传入的指针,以及它离开的位置。如果指针为NULL就可以继续,否则清空重新开始。
-
@Firegun: static variable.
标签: c string split token strtok