字符串函数strtok()详解

什么是strtok()函数?

strtok()函数是C语言的一个标准库函数,它可以将一个字符串按照指定的分隔符切割成若干个子串,并返回每个子串的指针。这样,我们就可以方便地处理一些复杂的字符串,比如从一行文本中提取单词,或者从一个路径中提取文件名等。

strtok()函数的原型和参数

strtok()函数的原型如下:

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

其中,str是要被切割的字符串,delim是包含分隔符的字符串。在第一次调用strtok()函数时,需要将str作为第一个参数传入,之后的调用需要将第一个参数设置为NULL,以便继续从上次的位置切割。

strtok()函数的返回值和注意事项

strtok()函数的返回值是一个char*类型的指针,指向被切割出的子串的首地址。如果没有更多的子串,或者参数不合法,那么返回NULL。

需要注意的是,strtok()函数会破坏被切割的字符串的完整性,即每次切割后,原来的字符串就会少掉一部分,分隔符的位置会被替换成’\0’字符。因此,如果要保持原字符串的完整性,可以使用其他的方法,如strchr()和sscanf()的组合等。

另外,strtok()函数不是线程安全的,因为它会使用一个静态变量来保存上次切割的位置。如果多个线程同时调用strtok()函数,那么可能会出现错误。为了解决这个问题,可以使用strtok_r()或strtok_s()函数,它们会使用一个额外的参数来保存上次切割的位置,从而保证线程安全性。

strtok()函数的示例代码

下面是一个使用strtok()函数的示例代码,它将一个字符串按照逗号和空格切割,并打印出每个子串:

#include <stdio.h>
#include <string.h>

int main()
{
    char str[] = "Hello, world! This is a test.";
    const char delim[] = ", ";
    char *token;

    // 第一次调用strtok()函数,传入str和delim
    token = strtok(str, delim);

    // 循环调用strtok()函数,传入NULL和delim
    while (token != NULL)
    {
        // 打印出每个子串
        printf("%s\n", token);

        // 继续调用strtok()函数,传入NULL和delim
        token = strtok(NULL, delim);
    }

    return 0;
}

运行结果如下:

Hello
world!
This
is
a
test.
  • 6
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值