Chinaunix首页 | 论坛 | 博客
  • 博客访问: 495436
  • 博文数量: 51
  • 博客积分: 257
  • 博客等级: 二等列兵
  • 技术积分: 1489
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-02 18:30
个人简介

Unix/Linux, mysql, web,企业应用

文章分类

全部博文(51)

文章存档

2015年(1)

2014年(1)

2013年(48)

2012年(1)

我的朋友

分类: C/C++

2013-03-24 17:05:57

1,分割字符串
char *strtok(char *str, const char *delim);
功能:分解字符串为一组字符串。str为要分解的字符串,delim为分隔符字符串。实质上的处理是,strtok在str中查找包含在delim中的字符并用NULL(’\0′)来替换,直到找遍整个字符串。
说明:首次调用时,str指向要分解的字符串,之后再次调用要把str设成NULL。strtok在str中查找包含在delim中的字符并用NULL(’\0′)来替换,直到找遍整个字符串。
返回值:从str开头开始的一个个被分割的串。当没有被分割的串时则返回NULL。所有delim中包含的字符都会被滤掉,并将被滤掉的地方设为一处分割的节点。
示例:
  1. #include <stdio.h>
  2. #include <string.h>

  3. int main(){
  4.     //id,姓名,语文,数学,英语
  5.     char str[]="2,张三,89,99,66";
  6.     char *token=strtok(str,",");
  7.     while(token!=NULL){
  8.         printf("%s\t",token);
  9.         token=strtok(NULL,",");
  10.     }
  11.     printf("\n");
  12.     return 0;
  13. }
示例程序输出:
  1. 2   张三  89  99  66
说明:str参数必须设置为数组的形式,而不是字符串常量(如:char *str="2,张三,89,99,66";),因为strtok在执行过程中会对str进行修改,必须保证str是可写的。

2,分割字符串(还是分割字符串)
char *strsep(char **stringp, const char *delim);

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

  3. int main(){
  4.     //id,姓名,语文,数学,英语
  5.     char str[]="2,张三,89,99,66";
  6.     //str是一个指针常量,而strsep的第一个参数需要一个指向指针的指针,所以不能对str做取地址操作,
  7.     //这里再定义一个指针变量就可以取地址操作了。否则会出现段错误。
  8.     char *strv=str;
  9.     char *token=strsep&strv,",");
  10.     while(token!=NULL){
  11.         printf("%s\t",token);
  12.         token=strsep&strv,",");
  13.     }
  14.     printf("\n");
  15.     return 0;
  16. }
说明:此函数也会修改第一个参数的内容,所以必须保证提供的不是字符串常量。



阅读(10616) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~