我正在阅读CSV文件,我想将每一行分成多个不同的变量。我关于strtok,有些人推荐它,其他人说它有问题。那么还有另一种分裂我的字符串的方法吗?
答案 0 :(得分:2)
要解析CSV源代码行,您必须处理可嵌入"
个字符的,
分隔字符串的语法。您无法直接使用strtok()
。此外,strtok()
认为分隔符序列等同于单个分隔符,这绝对不是您想要的,
分隔符。
我担心你必须手工编写解析器 ,迭代CSV行,最好读入大缓冲区,并使用某种状态机。
答案 1 :(得分:0)
您可以strchr
循环中的分隔符并对每个分段执行某些操作。
例如,这将在逗号上拆分参数并打印每个字段:
int main(int argc, char** argv)
{
for(int i = 1; i<argc; i++){
char const *p0,*p1;
for(p0=argv[i]; (p1=strchr(p0,',')); p0=p1+1 ){
fwrite(p0,p1-p0,1,stdout); puts("");
}
fwrite(p0,strlen(p0),1,stdout); puts("");
}
}
这很简单。