Linux下C语言字符串操作之分割字符串总结


c/cpp中如何分割字符串,类似于split的功能

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.       

4.      int main(){

5.          //id,姓名,语文,数学,英语

6.          charstr[]="2,张三,89,99,66";

7.          char*token=strtok(str,",");

8.          while(token!=NULL){

扫描二维码关注公众号,回复: 1050827 查看本文章

9.              printf("%s\t",token);

10.          token=strtok(NULL,",");

11.      } 

12.      printf("\n");

13.      return 0;

14.  }

示例程序输出:

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.       

4.      int main(){

5.          //id,姓名,语文,数学,英语

6.          charstr[]="2,张三,89,99,66";

7.          //str是一个指针常量,而strsep的第一个参数需要一个指向指针的指针,所以不能对str做取地址操作,

8.          //这里再定义一个指针变量就可以取地址操作了。否则会出现段错误。

9.          char *strv=str;

10.      char*token=strsep( &strv,",");

11.      while(token!=NULL){

12.          printf("%s\t",token);

13.          token=strsep( &strv,",");

14.      } 

15.      printf("\n");

16.      return 0;

17.  }

说明:此函数也会修改第一个参数的内容,所以必须保证提供的不是字符串常量。


参考资料:

http://biancheng.dnbcw.info/c/452773.html

http://biancheng.dnbcw.info/c/452774.html

http://www.oschina.net/code/snippet_2325404_47570

http://blog.csdn.net/bg2bkk/article/details/37569555

转载地址:https://blog.csdn.net/benpaobagzb/article/details/50719197

猜你喜欢

转载自blog.csdn.net/menghuanbeike/article/details/80108780