C语言 strtok线程不安全

一、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;
}
相关推荐
潜创微科技--高清音视频芯片方案开发6 小时前
2026年C转DP芯片方案深度分析:从适配场景到成本性能的优选指南
c语言·开发语言
青桔柠薯片8 小时前
从C语言到裸机运行:i.MX6ULL 的 GPIO 控制与编译链接过程分析
c语言·开发语言·imx6ull
xiaobobo33308 小时前
c语言结构体相关箭头运算符和点号运算符的联系以及c语言的“索引”思想
c语言·箭头运算符·点号运算符·索引思想
weixin_537590458 小时前
《C程序设计语言》练习答案(练习1-13)
c语言·开发语言·c#
always_TT9 小时前
从Python_Java转学C语言需要注意什么?
java·c语言·python
DA022110 小时前
Linux驱动-I2C总线驱动
linux·c语言·linux驱动
always_TT11 小时前
C语言保留字与标识符规则
c语言·开发语言
AI科技星13 小时前
光速螺旋量子几何统一场论——基于 v ≡ c 公理的四大基本力全维度求导证明与精准数值验证
c语言·开发语言·人工智能·算法·机器学习·平面
程序猿编码13 小时前
隐匿注入型ELF加壳器:原理、设计与实现深度解析(C/C++ 代码实现)
c语言·网络·c++·elf·代码注入
爱编码的小八嘎13 小时前
C语言完美演绎6-4
c语言