目录
函数参数:char * strtok ( char * str, const char * delimiters );
函数的作用:将字符串以自定义的字符为节点将字符串切开.
函数的使用
int main()
{
char arr1[] = "cai@163.com";
char arr2[30] = { 0 };
strcpy(arr2, arr1);
const char* p = "@.";//用于去切割字符串char*s = NULL;//声明一个字符指针变量,用于存储在for循环中每次循环中所切出来的字符串,为了避免其成为野指针,所以将它的初始值设定为NULL
for (s = strtok(arr2, p); s != NULL; s = strtok(NULL, p))//所以这个函数就是拿NULL当个存档点了
(初始化)//第一次直接从头开始
//这个s = strtok(arr2, p)就是用p去切割最初的的arr2 然后赋值给s(判定)//然后判定到后面不是NULL的话就继续进行 并且用NULL打个存档点 下一次循环的时候就从这个上一次循环生成的存档点开始(这个NULL存储的实际上是上一次切割完成后的字符串)
(调整)//s = strtok(NULL, p)和s = strtok(arr2, p)同理 就是用p先找到上一次的存档点NULL,然后从这个存档点向后继续找下一个标记点并且继续分解字符串
{
printf("%s\n", s );
}
return 0;
}
总结:
设定一个char型字符串数组将操作对象复制一份
设定一个指针(p)用于去定位并且切割字符串
设定一个指针(s)用于去存储每阶段切出来的字符串
NULL的作用 ,一方面是用来判定要不要继续这个循环,更重要的另一个方面就是为指针p做一个存档点,让指针p知道下一次从哪里开始继续进行对字符串的切割