c语言 字符串 strtok,C 语言 - 字符串操作 - strtok

说明

字符串分隔

函数原型

char * strtok(char * s,const char * ct)

{

char *sbegin, *send;

sbegin = s ? s : ___strtok;

if (!sbegin) {

return NULL;

}

sbegin += strspn(sbegin,ct);

if (*sbegin == '\0') {

___strtok = NULL;

return( NULL );

}

send = strpbrk( sbegin, ct);

if (send && *send != '\0')

*send++ = '\0';

___strtok = send;

return (sbegin);

}

s 被分隔的字符串,如果 s=NULL,使用__strok,这是一个定义在 string.h 中的全局变量,保存分隔剩余下来的值

ct 分隔符,可以包含多个,例如:”,:|”

返回值

成功 返回指向分隔结果中第一个字符串,比如: str=“abc|123”, delim=“|”,返回值指向“abc”

不成功 NULL

例子

把"Fred male 25,John male 62,Anna female 16“中的人员信息分隔出来保存到 person 的结构体中

#include

#include

int main()

{

int i=0;

char buffer[200]="Fred male 25,John male 62,Anna female 16";

char *p=0;

char *tmp[3]={0};

char *buf = buffer;

struct person

{

char *name;

char *sex;

char *age;

};

struct person persons[3];

/*

* buf=strtok(NULL, ",") NULL 表示使用__strtok, 即分割剩下的部分

*/

for(buf=strtok(buffer,","); buf!=NULL; buf=strtok(NULL, ","))

{

tmp[i++] = buf;

}

for(int i=0; i<3; i++)

{

p = strtok(tmp[i]," ");

persons[i].name = p;

p = strtok(NULL," ");

persons[i].sex = p;

p = strtok(NULL," ");

persons[i].age = p;

}

for (int j=0; j

{

printf(">%s %s %s

}

return 0;

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值