strtok是字符串切割函数
定义
参数一:待切割字符串 参数二:分隔符集合 首次调用时传递参数为: strtok(str,seps); 之后再次调用时传递参数为: strtok(NULL,seps); 若可以切割,函数返回值为字符指针,各段切割好的字符串 若分割完毕,函数返回值为空指针
举例
用“.“或者”@”切割字符串"litianyi@hust.edu@cn"得到
itianyi hust edu cn
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<string.h>
#include<assert.h>
#include<stdlib.h>
int main()
{char str[30] = "litianyi@hust.edu@cn";char seps[] = ".@";char* s1 = NULL;//第一次调用时strtok函数找到@符号,将@符号改为'\0',记录位置,//下次调用时strtok函数从'\0'处开始向后切割字符串,所以之后调用传递NULL即可//可以分析得出strtok函数内部必有static修饰的局部变量s1 = strtok(str, seps);printf("%s\n", s1);//再次调用时找到'.',将‘.'改为'\0',返回hust,记录位置s1 = strtok(NULL, seps);printf("%s\n", s1);//第三次调用时找到'@',将‘@'改为'\0',返回edu,记录位置s1 = strtok(NULL, seps);printf("%s\n", s1);//第四次调用时返回cns1 = strtok(NULL, seps);printf("%s\n", s1);//第五次调用时返回空指针,结束分割s1 = strtok(NULL, seps);if (s1 == NULL){printf("我是空指针");}
}
运行结果
实际用法
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<string.h>
#include<assert.h>
#include<stdlib.h>int main()
{char str[30] = "litianyi@hust.edu@cn";char seps[] = ".@";char* s1 = NULL;/*实际用法*/for (s1=strtok(str,seps);s1!=NULL;s1=strtok(NULL,seps)){printf("%s\n", s1);}
}