如何在C中读取csv的特定列

时间:2018-01-04 16:28:38

标签: c algorithm file csv

我有一个csv文件,我想得到第二列的数据。就像那样:

 1st row:    4   8   6
 2nd row:    3   2   2
 3rd row:    7   7   5

我会将它们添加到AVLTREE中,但主要问题是如何获取特别的第二列数据?它们用分号分隔。

4;8;6;
3;2;2;
7;7;5;

到目前为止,我只有这段代码

int main()
{
int c;
char buffer[1000];
FILE *f = fopen("file.txt", "r");
if(f == NULL)
{
    printf("Error can't open file \n");
}
while (fgets(buffer,1000,f) != NULL)
{
    char *p = strtok(buffer, ";");
    while(p)
    {
        printf("%s\n", p);
        p=strtok(NULL, ";");
    }

    printf("%c",c);
}
fclose(f);
}

1 个答案:

答案 0 :(得分:0)

如果你想在C中解析CSV,我可以建议你使用库。 我正在使用这个,它完美地工作:https://sourceforge.net/projects/cccsvparser/

如果你想自己做,我建议你检查一下strtok函数:http://manpagesfr.free.fr/man/man3/strtok.3.html 此函数在参数中使用字符串和分隔符,并为您提供与分隔符匹配的下一个元素。

如果您想使用strtok,我也可以建议您查看此链接:How does strtok() split the string into tokens in C?