除了strtok之外还有另一种方法可以用逗号分隔符拆分字符串吗?

时间:2016-11-27 23:17:16

标签: c

我正在阅读CSV文件,我想将每一行分成多个不同的变量。我关于strtok,有些人推荐它,其他人说它有问题。那么还有另一种分裂我的字符串的方法吗?

2 个答案:

答案 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("");
    }
}

这很简单。