我想问一下,如果有任何方法,我可以使用C编程检索最后一列的第一列的值。
谢谢!
答案 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)。