C 语言

关注公众号 jb51net

关闭
首页 > 软件编程 > C 语言 > C 语言 strtok 函数

C 语言 strtok 函数超详细讲解(推荐)

作者:WYH287

在C语言中,strtok函数是一个用于分割字符串的函数,本文给大家介绍C 语言strtok 函数超详细讲解,本文通过实例代码给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧

一、strtok 是啥?(一句话)

strtok = 字符串切割函数
作用:把一长串字符串,按照你指定的符号,切成一段一段的小字符串。

比如:

"LED,ON,1"

, 切割 → 切成

"LED"   "ON"   "1"

二、函数原型

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

三、最简单例子(一看就会)

#include <string.h>
#include <stdio.h>
int main()
{
    char buf[] = "LED,ON,1";  // 要切割的字符串
    char *token;              // 存放切出来的片段
    // 第一次调用:传入字符串 + 分隔符
    token = strtok(buf, ",");
    printf("第1段:%s\n", token);  // LED
    // 第二次调用:传入 NULL + 分隔符
    token = strtok(NULL, ",");
    printf("第2段:%s\n", token);  // ON
    // 第三次调用
    token = strtok(NULL, ",");
    printf("第3段:%s\n", token);  // 1
}

输出:

第1段:LED
第2段:ON
第3段:1

四、strtok 最关键规则(必须记)

  1. 第一次调用:必须传入要切割的字符串
  2. 后面调用:必须传 NULL
    传 NULL = 继续切上次剩下的字符串
  3. 切完了 → 返回 NULL

五、你在 STM32 里用来干嘛?

用来解析串口指令!

比如串口收到:

"LED,ON,1"
"LED,OFF,2"
"MOTOR,SPEED,500"

用 strtok 切割后:

这就是你那个命令解析框架的核心!

六、strtok 超级大坑(必看!发CSDN爆款)

❌ 大坑 1:strtok会破坏原始字符串

它会把分隔符变成 \0
所以 不能传常量字符串

strtok("LED,ON,1", ",");  // ❌ 崩溃!

必须用 数组

char buf[] = "LED,ON,1";  // ✅ 正确
strtok(buf, ",");

❌ 大坑 2:不是线程安全(不可重入)

裸机 STM32 随便用,RTOS 不要用!

❌ 大坑 3:多个连续分隔符会被当成一个

"LED,,ON" → 切成 LED 和 ON

七、你工程里的正确用法(命令解析)

char buf[] = "LED,ON,1";
char *object = strtok(buf, ",");    // "LED"
char *cmd    = strtok(NULL, ",");   // "ON"
char *param  = strtok(NULL, ",");   // "1"

然后你就可以判断:

八、总结(适合发CSDN)

strtok 是什么?

字符串切割神器,把长串按符号切成小段。

怎么用?

  1. 第一次:strtok(字符串, 分隔符)
  2. 后续:strtok(NULL, 分隔符)
  3. 得到片段,处理逻辑

最重要坑

会修改原始字符串,必须用 char[],不能用常量字符串!

到此这篇关于C 语言 strtok 函数超详细讲解(推荐)的文章就介绍到这了,更多相关C 语言 strtok 函数内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文