【问题标题】:How to read specific column of csv in C [duplicate]如何在C中读取csv的特定列[重复]
【发布时间】:2018-06-14 10:25:50
【问题描述】:

我有一个 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);
}

【问题讨论】:

  • 一次读取每一行,并使用strtok
  • 所以你想读 8 2 7?
  • 查看fgetsstrtok
  • 是的,正好是 8 2 7
  • “到目前为止我有这个代码”,它完全没有任何作用。 SO 不是免费的代码编写服务。

标签: c algorithm file csv


【解决方案1】:

如果您想在 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?

【讨论】:

    猜你喜欢
    • 2021-11-11
    • 1970-01-01
    • 2015-02-07
    • 1970-01-01
    • 2021-10-05
    • 1970-01-01
    • 1970-01-01
    • 2020-03-31
    • 2019-11-28
    相关资源
    最近更新 更多