Strtok是包含在头文件<string.h>的一个库函数,这个函数的使用是非常特殊的。
char * strtok ( char * str, const char * delimiters )
这一行代码是strtok函数的定义,参数是两个指针,前者指向一个被查找的字符串,后者指向 一个由分隔符组成的字符串。
使用演示
char arr[] = "qwe.rtyui,op";//定义被查找的数组
char str[200] = { 0 };
strcpy(str, arr);//创造一个数组的镜像用于对比
const char* p = ".,(";//创建分隔符字符串
char* s = strtok(str, p);//使用一个字符指针来接收函数的返回值
printf("%s\n", s);
由于函数的返回值是字符指针,所以用一个字符指针接收并打印出来。
在第一次strtok生效时,函数会将第一个分隔符的地址记录下来并将其改为\0(也就是字符串的结束标志),并返回分隔符之前字符串的地址,所以以上代码的输出将为"qwe"。
那么第一个分隔符之后的字符串怎么办呢,将函数第二次调用即可,strtok函数第二次及以后的调用不需要再传递被查找字符串的地址了,因为函数已经将第一个分隔符的地址记录了,传入一个空指针即可重复以上操作,即返回被分割的字符串的地址,见以下完整代码及结果:
#include<stdio.h>
#include<string.h>
int main()
{
char arr[]