C语言strtok():分割字符串

strtok() 是 C语言的一个标准库函数,定义在头文件中。

strtok() 用于将字符串分割成一系列的子串,函数的原型如下:

char *strtok(char *str, const char *delim);

参数

str:要分割的字符串。第一次调用 strtok() 时,这个参数应该是你想要分割的字符串。随后的调用应该将此参数设置为NULL,以便继续从上次的位置分割。

delim:一个包含多个分隔符的字符串。这些字符被用作分隔符,将 str 分割成多个子串。

返回值

返回下一个子串的首地址,如果没有更多的子串,则返回NULL。

【实例】以下 C语言代码示例演示了 strtok() 函数的功能和用法。

#include

#include

int main() {

char str[] = "Hello, World! Let's explore strtok.";

const char *delimiters = " ,!.";

// 获取第一个子串

char *token = strtok(str, delimiters);

// 继续获取其他的子串

while (token != NULL) {

printf("%s\n", token);

token = strtok(NULL, delimiters); // 注意传递NULL来获取下一个子串

}

return 0;

}

上述代码使用空格、逗号、感叹号和句点作为分隔符来分割字符串。输出结果如下:

Hello

World

Let's

explore

strtok

注意,strtok() 函数在操作过程中会更改原始字符串,所以请确保只在可以修改的字符串上使用它。此外,由于 strtok() 在内部使用静态指针来保持调用之间的状态,因此它不是线程安全的。在多线程环境中使用 strtok_r() 或其他线程安全版本可能更为合适。

2025-11-12 19:15:42