Appearance
都是用来进行字符串切割的函数。
strtok
功能:将字符串分割为若干个子串
cpp
char *strtok(char *str, const char *delim)- 参数:
- str:需要分割的字符串
- delim:分割符,可以为包含多个字符的字符串
- 返回值:
- 返回一个指向下一个子串的指针,如果没有子串返回 NULL
注意事项
- 在第一次调用该函数时,需要使用字符串作为第一参数。在同一个源字符串上多次调用此函数时,第一个参数应为 NULL。
- 在第一次调用时,可以存储返回指针以备后续调用使用。例如:
char *token = strtok(str, delim);,以后的调用可以使用strtok(NULL, delim);来继续切分该字符串。 - 原字符串会被修改,被分割的子串会被空字符'\0'替换掉。
使用示例
cpp
char str[] = "hello,world";
char *token = strtok(str, ",");
while(token != NULL) {
printf("%s\n", token);
token = strtok(NULL, ",");
}输出结果:
hello
worldstrsep()
和 strtok() 一样,但它返回的指针指向分隔符后面的第一个字符,因此,使用 strsep 的时候,需要在切分之前判断返回的指针是否为NULL,以确保字符串被完全切分。
The strsep() function was introduced as a replacement for strtok(3), since the latter cannot handle empty fields. However, strtok(3) conforms to C89/C99 and hence is more portable.