- 函数原型
char *strtok (char * str, const char *delim)
- 头文件
string.h
- 函数作用
- 使用
void main() { char str[] = "123\n456\n789\n"; char tmp[] = "abc"; char *p = strtok(str, tmp); if(p) { printf("str: %s\n", p); } printf("str: %s\n", str); }结果: 结论:str字符串中没有delim子字符串时,不会修改str字符串,strtok函数返回str字符串。 第二种情况:str字符串中只有一个delim子字符串。
void main() { char str[] = "123\n456789"; char tmp[] = "\n"; int len = strlen(str); print(str, len); // 将str中的每个元素按照十六进制打印 char *p = strtok(str, tmp); if(p) { printf("str: %s\n", p); } printf("str: %s\n", str); print(str, len); // 将str中的每个元素按照十六进制打印 }结果: 结论:strtok会将str中的delim子字符串替换成'\0'。 第三种情况:str字符串中有多个delim子字符串。
void main() { char str[] = "123\n456\n789\na"; char tmp[] = "\n"; int len = strlen(str); print(str, len); char *p = strtok(str, tmp); while(p) { printf("p: %s\n", p); p = strtok(NULL, tmp); } printf("str: %s\n", str); print(str, len); }结果: 结论:每次调用strtok都会将字符串中的delim子字符串给替换掉,需要注意的是strtok函数的返回值和第一个参数,首次调用strtok需要传入str字符串,非首次调用只需传入NULL,这是因为strtok会记录之前传过的字符串。 标签:tmp,函数,strtok,delim,char,str,字符串 From: https://www.cnblogs.com/chien/p/17328739.html