strtok 与 strsep 函数说明
来源:互联网 发布:写真偶像 知乎 编辑:程序博客网 时间:2024/05/11 23:29
这几天处理字符串,突然遇到字符串分割问题,上网查了一些资料后,找到这两个函数,strtok与strsep函数。网上举的例子千篇一律,下面我根据函数的实现源码,记录一下使用说明,供大家讨论,欢迎大牛拍砖!PS:找个库函数源码的在线查询网站真不容易,先找到了这个http://sources.redhat.com/cgi-bin/cvsweb.cgi/libc/?cvsroot=glibc
之后,发现了经常去找软件的oschina有源码库,真是踏破铁鞋无觅处,得来全不费工夫!
http://www.oschina.net/code/explore/glibc-2.9/string/strtok.c
http://www.linuxso.com/linuxbiancheng/15482.html
#include <stdio.h> #include <string.h> int main() { char token[] ="abdczxbcdefgh"; printf("%s\n",token); char *tokenremain = token; char *tok1 = strtok(tokenremain,"cde"); printf("tok1:%s\n",tok1); tok1 = strtok(NULL,"cde"); printf("tok1:%s\n",tok1); return 0; }
[root@ test]# ./strtok abdczxbcdefghtok1:abtok1:zxb
总结:strtok内部记录上次调用字符串的位置,所以不支持多线程,可重入版本为strtok_r,有兴趣的可以研究一下。它适用于分割关键字在字符串之间是“单独”或是 “连续“在一起的情况。
#include <stdio.h> #include <string.h> int main() { char token[] ="abdzxbcdefgh"; printf("%s\n",token); char *tokenremain = token; char *tok1 = strsep(&tokenremain,"cde"); printf("tok1:%s,token:%s\n",tok1,tokenremain); tok1 = strsep(&tokenremain,"cde"); printf("tok1:%s,token:%s\n",tok1,tokenremain); return 0; }
root@ test]# ./strsep abdzxbcdefghtok1:ab,token:zxbcdefghtok1:zxb,token:defgh
总结:strsep返回值为分割后的开始字符串,并将函数的第一个参数指针指向分割后的剩余字符串。它适用于分割关键字在两个字符串之间只严格出现一次的情况。
所以通过阅读函数实现源码,可以灵活运用这两个函数,为自己所用!
PS:因为函数内部会修改原字符串变量,所以传入的参数不能是不可变字符串(即文字常量区)。
如 char *tokenremain ="abcdefghij"//编译时为文字常量,不可修改。
strtok(tokenremain,"cde");
strsep(&tokenremain,"cde");
编译通过,运行时会报段错误。
- strtok 与 strsep 函数说明
- strtok 与 strsep 函数说明
- strtok 与 strsep 函数说明(转)
- 字符串分割函数StringTokenizer与strtok,strsep的比较
- strtok和strsep函数详解
- strtok和strsep函数详解
- strtok和strsep函数详解
- strtok和strsep函数详解
- strtok和strsep函数详解
- strtok和strsep函数详解
- strtok和strsep函数详解
- 字符串分割函数---strtok和strsep函数
- strtok strsep
- 嵌入式 字符串分割(切分):strtok()与strsep()
- strtok 与 strsep 函数,分割函数.对于符号或者其他.非常好用
- 字符串分割函数strtok和strsep使用注意事项
- strtok strtok_s & strsep
- 学习strtok()和strsep()
- SQL Server觸發器
- 解析VB.NET如何连接数据库
- JS数组去重函数
- php 验证码linux下只显示画布,不显示验证码的终极解决方法
- 笔记本设置wifi热点
- strtok 与 strsep 函数说明
- myeclipse使用教程
- C#关键字
- HDU4500:小Q系列故事——屌丝的逆袭
- oracle 11g PL/SQL Programming学习六
- asterisk架构
- hiberate分页错误
- APT 攻击
- PHP webservice