C/C++中字符串切割(split)
2013-07-02 17:01
302 查看
工作中,大部分文本都是\n分隔行,由\t分隔列的数据(其实就是一个 table)。一般都行python,awk来处理,顺便读取一个字段(就是table中的单元格)非常方便。C里没有直接提供字符串split的方法,我以前一直用strtok,但是它有一个问题,比如处理一个字符串“a1\tb2\t\tc4”,分割后是"a1""b2""c4",第三个空字段被略过了,这显然不是我们的预期(导致了列错乱)。之前也没有什么好办法,今天偶然看到一个函数,strsep说是现在基本用这个了,好奇之下,试了下,果然就解决之前的问题了。
a1
b2
c4
a1
b2
c4
另外我百度之,这个函数返回是char *的,tcc里有warning: assignment makes pointer from integer without a cast。gcc里倒是没试,有机会用到再看。
本文出自 “木又寸的技术博客” 博客,请务必保留此出处http://jianshusoft.blog.51cto.com/2380869/1240277
#include <stdio.h> int main() { char str[100] = "a1\tb2\t\tc4" ; char *s = str; //char *p = strsep(&s, "\t"); char *p = strtok(s, "\t"); while(p){ printf("%s\n", p); p = strtok(NULL, "\t"); //p = strsep(&s, "\t"); } return 0; }输出:
a1
b2
c4
#include <stdio.h> int main() { char str[100] = "a1\tb2\t\tc4" ; char *s = str; char *p = strsep(&s, "\t"); //char *p = strtok(s, "\t"); while(p){ printf("%s\n", p); //p = strtok(NULL, "\t"); p = strsep(&s, "\t"); } return 0; }输出:
a1
b2
c4
另外我百度之,这个函数返回是char *的,tcc里有warning: assignment makes pointer from integer without a cast。gcc里倒是没试,有机会用到再看。
本文出自 “木又寸的技术博客” 博客,请务必保留此出处http://jianshusoft.blog.51cto.com/2380869/1240277
相关文章推荐
- C/C++--字符串切割及去两端空格
- Java split()方法实现切割字符串
- C++中string字符串切割的两种方法
- C++中用字符串来切割字符串
- C++字符串切割的两种方法
- 如何在C++中使用类似python的字符串split()函数
- c# 字符串切割 split
- c/cpp中怎样切割字符串,相似于split的功能
- C++ 字符串分割 split
- Java split()方法实现切割字符串
- c++的字符串char与string相互转化,以及string的,切割,替换字符,字符串相关的函数整理
- C++之字符串分割函数split
- split+ Pattern切割字符串
- c++ 读取txt文件,split分割字符串
- 在C++中实现字符串分割--split
- Java split()方法实现切割字符串
- c++ 字符串切割
- C++字符串切分: split实现
- c++的字符串char与string相互转化,以及string的,切割,替换字符,字符串拼接方法(object向c++转型系列教程2)
- split+ Pattern切割字符串