关于strtok的一点简单认识
来源:互联网 发布:网络语言黑洞什么意思 编辑:程序博客网 时间:2024/06/05 17:21
之前写过一段代码,用strtok来解析一段文件路径,给他一层层的分开,
char *tmpStr = "\\dir\\dir1\\dir2\\test.txt";char buffer[128] = {0};strcpy(buffer,tmpStr);char *p = NULL;p = strtok(buffer,"/\\");int dirNum = 0;while(p){dirNum ++;printf("000: %s\n",p);p = strtok(NULL,"/\\");}//memset(buffer,0,128);//strcpy(buffer,tmpStr); //here is the secretp = NULL;p = strtok(buffer,"/\\");while(p){dirNum ++;printf("001: %s\n",p);p = strtok(NULL,"/\\");}
这个时候跑下来结果是啥:
000: dir
000: dir1
000: dir2
000: test.txt
001: dir
这就有点儿让人纳闷了,你不是应该是下面这样吗?
000: dir
000: dir1
000: dir2
000: test.txt
001: dir
001: dir1
001: dir2
001: test.txt
仔细看看buffer里面的内容才发现,第一次解析路径,循环调用strtok之后,里面的内容已经变成了下面这样:
\\dir\000dir1\000dir2\000test.txt
你这不是坑哥么?
所以第二次循环调用strtok后,就只剩一个dir打印出来了,
妈蛋,把那两行注释的:
p = strtok(NULL,"/\\");}//memset(buffer,0,128);//strcpy(buffer,tmpStr); //here is the secretp = NULL;p = strtok(buffer,"/\\");memset(buffer,0,128)和strcpy(buffer,tmpStr)取消注释就好了,
把buffer里面内容清空在写一次,唉,想当初这个bug可是解了好久呀,大半天呢。
0 0
- 关于strtok的一点简单认识
- 关于Session的一点认识
- 关于AIR的一点认识
- 关于炒股的一点认识
- 关于框架的一点认识
- 关于学习的一点认识
- 关于HandlerThread的一点认识
- 关于堆栈的一点认识
- 关于云的一点认识。
- 关于Editor和Renderer的一点认识
- 关于分布式数据库的一点认识
- 关于DropDownList绑定数据的一点认识
- 关于actionAdapter的一点小认识
- 关于Oracle索引的一点认识
- 关于对设计模式的一点认识
- 关于DropDownList绑定数据的一点认识
- 关于String Pool的一点认识
- 关于C#的索引一点认识
- Hibernate4.3.5 双向一对多示例
- 花心雨的世界
- Spring实例化Bean的三种方式
- redis数据结构
- 1058. A+B in Hogwarts (20)
- 关于strtok的一点简单认识
- Codeforces 453A Little Pony and Expected Maximum 概率期望
- Linux Shortcut Key
- [DFS][toj1009Sticks]
- [编程之美] PSet2.11 寻找最近点对
- 并查集及并查集的路径压缩
- 菜鸟学习javaweb(二)--可变参数
- EAS数据库IO等待分析及优化报告
- iOS 如何选择delegate、notification、KVO?