strtok = 字符串切割函数

作用把一长串字符串按照你指定的符号切成一段一段的小字符串。
比如
"LED,ON,1"
用 , 切割 → 切成
"LED" "ON" "1"
char *strtok(char *str, const char *delim);
, : rn#include <string.h>
#include <stdio.h>
int main()
{
char buf[] = "LED,ON,1"; // 要切割的字符串
char *token; // 存放切出来的片段
// 第一次调用传入字符串 + 分隔符
token = strtok(buf, ",");
printf("第1段%sn", token); // LED
// 第二次调用传入 NULL + 分隔符
token = strtok(NULL, ",");
printf("第2段%sn", token); // ON
// 第三次调用
token = strtok(NULL, ",");
printf("第3段%sn", token); // 1
}
输出
第1段LED 第2段ON 第3段1
传 NULL = 继续切上次剩下的字符串
用来解析串口指令
比如串口收到
"LED,ON,1" "LED,OFF,2" "MOTOR,SPEED,500"
用 strtok 切割后
这就是你那个命令解析框架的核心
它会把分隔符变成
所以 不能传常量字符串
strtok("LED,ON,1", ","); // ❌ 崩溃
必须用 数组
char buf[] = "LED,ON,1"; // ✅ 正确 strtok(buf, ",");
裸机 STM32 随便用RTOS 不要用
"LED,,ON" → 切成 LED 和 ON
char buf[] = "LED,ON,1"; char *object = strtok(buf, ","); // "LED" char *cmd = strtok(NULL, ","); // "ON" char *param = strtok(NULL, ","); // "1"
然后你就可以判断
字符串切割神器把长串按符号切成小段。
strtok(字符串, 分隔符)strtok(NULL, 分隔符)会修改原始字符串必须用 char[]不能用常量字符串