从CSV文件中检索值

时间:2011-02-25 13:10:53

标签: c linux csv

我想问一下,如果有任何方法,我可以使用C编程检索最后一列的第一列的值。

谢谢!

3 个答案:

答案 0 :(得分:2)

假设我的.csv文件看起来像这样,
这些字段是项目编号类号供应商编号

1111,1414,1000  
1112,1010, 1001  
1113,1112,1002    

用于读取上述.csv文件值的C代码:

#include <stdio.h>  
#include <stdlib.h>  
#include <string.h>  

int main(int argc, char* argv[])  
{  
   if (argc < 2)  
   {  
      fprintf(stderr,"Usage: %s csv_file\n",argv[0]);  
      return(1);  
   }  

    FILE *f = fopen(argv[1], "rt");  
    char Line[256];  
    unsigned int AllocSize = 0, Size = 0, n;  
    char *L_text;  

    while(fgets(Line, sizeof(Line), f))  
    {  

      printf("Item = %s \n",strtok(Line, ", "));  
      printf("Class = %s \n",strtok(NULL, ", "));  
      printf("Supplier = %s \n",strtok(NULL, ", "));  

    }  
   return(0);  
}  

答案 1 :(得分:2)

也许你可以看一下libcsv

答案 2 :(得分:1)

我认为这取决于文件的大小。如果行不是太大,那么它们并不是太多而且你不关心你的程序是不是用GNU以外的libcs​​运行的,你可以使用getline函数将整行读入内存直到你到达最后一行。然后它应该像找到第一个逗号一样简单。

如果你有一个由小行组成的大文件,你可以查看文件的末尾并按字节备份字节,直到找到'\ n'。然后你就在最后一行的开头。

如果文件和行都很大,也许在整个文件上做一个mmap到它的末尾,然后回读'\ n'可能比所有那些fseek更有效。虽然mmap可以说比fseeks更不便携(因为fseek是标准C)。