一、strtok()函数作用:
用于分割字符串 (tokenize),按照指定的分隔符字符集把字符串拆分成若干个"子串"(token)。
每次调用返回一个子串的指针,没有更多 token 时:返回 NULL。
strtok() 会 修改原字符串 ,在分隔符位置写入 '\0'。
二、为什么线程不安全?
strtok() 在内部使用了一个 静态全局指针 来记录上一次解析的位置。
这意味着:
- 
如果两个线程同时调用
strtok(),它们会互相覆盖内部状态; - 
即使在同一线程里解析多个字符串(没重置),也会被破坏。
 
三、参考示例
#include <stdio.h>
#include <string.h>
int main() {
    char str[] = "apple,banana,orange";
    char *token;
    token = strtok(str, ",");
    while (token != NULL) {
        printf("%s\n", token);
        token = strtok(NULL, ",");
    }
    return 0;
}