我如何准备c中特定列的行?

问题描述 投票:0回答:1

在检查该列是否为“常规”之后,我尝试了多种方法来读取新行,但仍然无法使用。它是一个csv文件,在每个fgets之后都会用逗号分隔,我需要一个包含其数据的特定列。

这是我的代码:

char fi[1024];
while(!feof(CsvFile)){
    //Read
    fgets(fi, 1024, CsvFile);
    if(strstr(fi, "General") == 0){
        fscanf(CsvFile, "%[^\n]s", fi);
        printf("%s", fi);
    }
    fgetc(CsvFile);
}

它不打印我想要的。

c file csv stream fgets
1个回答
0
投票

读取CSV文件比比您想象的要复杂得多(请参阅https://tools.ietf.org/html/rfc4180)。您必须考虑所有规则。例如,如果单元格包含逗号,则内容必须用"包围。

但是,您可以实现简体版,该假定:

  • CSV文件由行组成;
  • 一行最多为MAX_LINE个字符;
  • 一行是由单元格组成的;
  • 一个单元格以逗号或换行符结尾;
  • 一个单元格包含逗号或换行符以外的任何内容。

下面的代码一次读取一行,然后使用strtok将该行拆分为单元格。

欢迎您,祝您好运!

strtok
© www.soinside.com 2019 - 2024. All rights reserved.