strtok() 是 C语言的一个标准库函数,定义在<string.h>头文件中。
strtok() 用于将字符串分割成一系列的子串,函数的原型如下:
char *strtok(char *str, const char *delim);
参数
str:要分割的字符串。第一次调用 strtok() 时,这个参数应该是你想要分割的字符串。随后的调用应该将此参数设置为NULL,以便继续从上次的位置分割。
delim:一个包含多个分隔符的字符串。这些字符被用作分隔符,将 str 分割成多个子串。
返回值
返回下一个子串的首地址,如果没有更多的子串,则返回NULL。
【实例】以下 C语言代码示例演示了 strtok() 函数的功能和用法。
#include <stdio.h>
#include <string.h>
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() 或其他线程安全版本可能更为合适。