strtok的定义是char * strtok ( char * str , const char * sep );
参数:str是要切割字符串,sep是切割字符的集合。返回类型是char*.
工作原理: strtok 函数找到 str 中的下一个标记,并将其用 \0 结尾,返回一个指向这个标记的指针。
例如:"abcd 1234@qq.com"
分割符集合有空格,@,和点号.
调用strtok函数时传递字符串的首地址过去,strtok找到空格 ,并把这个位置置换为\0,记录这个位置的标记。此时打印出abcd,要想继续打印就要再调用strtok,因为前面已经把这个位置置换为0所以传递NULL,根据以前记录的标记,继续查找到下一个标记。如此反复下去,直到字符串中不存在,返回NULL。所以要想全部打印出来要用for循环。
#include<stdio.h>
#include<string.h>
int main()
{
char ch1[] = "abcd 1234@qq.com";
char* p = " @.";
char ch2[30] = { 0 };
strcpy(ch2, ch1);
char* str = NULL;
for (str = strtok(ch2, p); str != NULL; str = strtok(NULL, p))
{
printf("%s\n", str);
}
}
注意:strtok 函数会改变被操作的字符串,所以在使用 strtok 函数切分的字符串一般都是临时拷贝的内容 并且可修改。所以用strcpy(ch2,ch1).