首页 > 编程笔记

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

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

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

参数

返回值

返回下一个子串的首地址,如果没有更多的子串,则返回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() 或其他线程安全版本可能更为合适。

推荐阅读