strtok()的使用
原型声明:strtok()
所属头文件:#include <string.h>
函数原型:
char * strtok ( char * str, const char * delimiters);
通过给定标志字符串delimiters分割目标字符串,目标字符串str不能是常量字符串。若分割成功,则返回第一段子串;若还可以继续分割,则返回第二段字串。
返回的char * 不需要用户释放,因为该函数并没有malloc内存。
案例一(目标:单个字符)
在MQTT中主题的格式一般是这样的:livingroom/device/temperature,需要逐个分割出来,就可以用来strtok()函数。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char *argv[])
{
char str[] = {"livingroom/device/temperature"};
char *token = strtok(str, "/");
while (token)
{
printf("%s ", token);
token = strtok(NULL, "/");
}
printf("\n");
return 0;
}
结果:
案例二(目标:重叠字符)
在自定义数据格式:A||B||C,需要将它们分割出来,也可以用到strtok()函数
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char *argv[])
{
char str[] = {"A||B||C"};
char *token = strtok(str, "||");
while (token)
{
printf("%s ", token);
token = strtok(NULL, "||");
}
printf("\n");
return 0;
}
结果:
案例三(目标:组合字符)
日期时间:2024-07-06 09:45:00,需要将它们按照 年 月 日 时 分 秒
分割出来,也可以用到strtok()函数
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char *argv[])
{
char str[] = {"2024-07-06 09:45:00"};
char *token = strtok(str, "- :");
while (token)
{
printf("%s ", token);
token = strtok(NULL, "- :");
}
printf("\n");
return 0;
}
结果: