strtok
strtok 函数是C标准库中的字符串处理函数,用于将字符串拆分成子字符串,使用指定的分隔符进行拆分。
函数原型
char *strtok(char *str, const char *delim);
-
str:要拆分的字符串,第一次调用时传入待拆分的字符串,后续调用时传入NULL。 -
delim:分隔符字符串,指定用于拆分的分隔符。 -
返回值:返回拆分后的子字符串的指针,如果没有可拆分的子字符串,返回
NULL。
函数详解
strtok 函数将字符串 str 拆分成一系列子字符串,每个子字符串以 delim 中的字符作为分隔符。第一次调用时,需要传入要拆分的原始字符串,后续调用只需传入 NULL。
-
第一次调用:
strtok在第一次调用时,接受原始字符串str和分隔符delim。- 它会查找
str中的第一个不包含分隔符的字符,作为第一个子字符串的开头。 - 然后它查找下一个分隔符,并将该位置之后的字符作为下一个子字符串的开头。
- 以此类推,直到遇到字符串末尾或者无法找到更多的分隔符。
-
后续调用:
- 传入
NULL作为第一个参数,strtok会继续使用原始字符串,并继续查找下一个子字符串。
- 传入
具体用法
下面是一个简单的示例,演示了如何使用 strtok 将一个字符串拆分成子字符串:
#include <stdio.h>
#include <string.h>
int main() {
char str[] = "hello,world,how,are,you";
const char delim[] = ",";
// 第一次调用 strtok,传入原始字符串
char *token = strtok(str, delim);
// 循环遍历所有子字符串
while (token != NULL) {
printf("Token: %s\n", token);
// 后续调用 strtok,传入 NULL
token = strtok(NULL, delim);
}
return 0;
}
在此示例中,我们将字符串 "hello,world,how,are,you" 使用逗号作为分隔符进行拆分。strtok 函数首次调用传入原始字符串,后续调用传入 NULL,以继续拆分。每次调用 strtok 都会返回一个拆分后的子字符串,直到无法找到更多的分隔符。

浙公网安备 33010602011771号