c 语言切割字符串函数,C 语言字符串分割函数

strtok() 函数实现字符串分割

实例代码:

#include

#include

int main(int argc, char ** argv)

{

char test[] = "hello world c!!";

char ch[] = " ";

char * ptr = strtok(test, ch); // 实现字符串的分割

while(ptr != NULL)

{

printf("%s\n", ptr);

ptr = strtok(NULL, ch);

}

return 0;

}

例子:

int is_comment(char * content)

{

int i = 0;

int len = strlen(content);

while(i < len && isspace(content[i]) != 0)

{

++i;

}

if(i >= len || content[i] == '#') // empty line or comment line

return 0;

else

return 1;

}

int open(FILE ** f)

{

char *filename = "key.conf";

if((*f = fopen(filename, "rw")) == NULL)

{

// no such file

return ENOENT;

}

else

{

return 0;

}

}

int close(FILE **f)

{

return fclose(*f);

}

int read_id(FILE *f)

{

char content[MAX_LENGTH];

char *id = NULL;

while(!feof(f))

{

fgets(content, MAX_LENGTH, f);

content[strlen(content) - 2] ='\0';

if(0 != is_comment(content))

{

id = strtok(content, " ");

if(id != NULL)

{

printf("%s\n", id);

}

else

return -1;

}

}

return 0;

}

int read_key(FILE *f)

{

char content[MAX_LENGTH];

char *key;

while(!feof(f))

{

fgets(content, MAX_LENGTH, f);

content[strlen(content) - 2] ='\0';

if(0 != is_comment(content))

{

key = strtok(content, " ");

if(key != NULL)

{

key = strtok(NULL, " ");

if(key != NULL)

{

printf("%s\n", key);

}

else

return -1;

}

else

return -1;

}

}

return 0;

}

int read_uuid(FILE *f)

{

char content[MAX_LENGTH];

char *uuid;

while(!feof(f))

{

fgets(content, MAX_LENGTH, f);

content[strlen(content) - 2] ='\0';

if(0 != is_comment(content))

{

uuid = strtok(content, " ");

if(uuid != NULL)

{

uuid = strtok(NULL, " ");

if(uuid != NULL)

{

uuid = strtok(NULL, " ");

if(uuid != NULL)

{

printf("%s\n", uuid);

}

}

else

return -1;

}

else

return -1;

}

}

return 0;

}

int main(int argc, char ** argv)

{

FILE *f = NULL;

open(&f);

//printf("space = %d\n", isspace(' '));

read_id(f);

fseek(f,0,0);

read_key(f);

fseek(f,0,0);

read_uuid(f);

close(&f);

return 0;

}

key.conf结构:

## comment: start with '#'

## style: plain text

## format: [uuid,...]

## uuid has upper limit for one key, the upper limit is 10

10000001 asdfgh123456i719 550E8400-E29B-11D4-A716-446655440000

10000002 asdfgh123456i710

10000003 asdfgh123456i711 550E8400-E29B-11D4-A716-44665544asdf

10000004 asdfgh123456i712

10000005 asdfgh123456i713 550E8400-E29B-11D4-A716-44665544asdf,550E8400-E29B-11D4-A716-446655440987

# end

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值