Linux学习—strtok函数的基本实现

1.简述

分解字符串为一组字符串。s为要分解的字符,delim为分隔符字符(如果传入字符串,则传入的字符串中每个字符均为分割符)。首次调用时,s指向要分解的字符串,之后再次调用要把s设成NULL。

头文件

#include<string.h>

原型

char *strtok(char s[], const char *delim);

使用NULL才可以获取后面的字符,应该为第一次分割后str已经被破坏

	char *p;
    char str[128] = {"hello world linux\n"};
    strtok(str," ");
    p = strtok(NULL," ");

结果:

str:hello
p :world

2.说明

当strtok()在参数s的字符串中发现参数delim中包含的分割字符时,
则会将该字符改为\0 字符。在第一次调用时,strtok()必需给予参数s字符串,
往后的调用则将参数s设置成NULL。每次调用成功则返回指向被分割出片段的指针。

3.返回值

从s开头开始的一个个被分割的串。当s中的字符查找到末尾时,返回NULL。
如果查找不到delim中的字符时,返回当前strtok的字符串的指针。
所有delim中包含的字符都会被滤掉,并将被滤掉的地方设为一处分割的节点

4.注意

使用该函数进行字符串分割时,会破坏被分解字符串的完整,
调用前和调用后的s已经不一样了。
第一次分割之后,原字符串str是分割完成之后的第一个字符串,
剩余的字符串存储在一个静态变量中,因此多线程同时访问该静态变量时,
会出现错误

5.例子

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

int main()
{
        char *p1;
        char *p2;
        char *p3;
        char str[128] = {"hello world linux\n"};
        p1 = strtok(str," ");
        p2 = strtok(NULL," ");
        p3 = strtok(NULL," ");


        printf("%s\n",p1);
        printf("%s\n",p2);
        printf("%s\n",p3);

        return 0;
}

在这里插入图片描述

学识浅薄,希望可以帮到您

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值