Loading

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;
}

结果:

posted @ 2024-07-03 20:56  eiSouthBoy  阅读(119)  评论(0)    收藏  举报