从CSV文件中检索值
我想问一下,是否有任何方法可以通过使用C编程检索最后for中第一列的值从CSV文件中检索值,c,linux,csv,C,Linux,Csv,我想问一下,是否有任何方法可以通过使用C编程检索最后for中第一列的值 谢谢 假设我的.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,
谢谢 假设我的.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);
}
#包括
#包括
#包括
int main(int argc,char*argv[])
{
如果(argc<2)
{
fprintf(stderr,“用法:%s csv_文件\n”,argv[0]);
申报表(1);
}
文件*f=fopen(argv[1],“rt”);
字符行[256];
无符号int AllocSize=0,Size=0,n;
字符*L_文本;
while(fgets(Line,sizeof(Line),f))
{
printf(“项=%s\n”,strtok(行,”);
printf(“类=%s\n”,strtok(NULL,”);
printf(“供应商=%s\n”,strtok(NULL,”);
}
返回(0);
}
假设我的.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);
}
#包括
#包括
#包括
int main(int argc,char*argv[])
{
如果(argc<2)
{
fprintf(stderr,“用法:%s csv_文件\n”,argv[0]);
申报表(1);
}
文件*f=fopen(argv[1],“rt”);
字符行[256];
无符号int AllocSize=0,Size=0,n;
字符*L_文本;
while(fgets(Line,sizeof(Line),f))
{
printf(“项=%s\n”,strtok(行,”);
printf(“类=%s\n”,strtok(NULL,”);
printf(“供应商=%s\n”,strtok(NULL,”);
}
返回(0);
}
也许你可以看看。也许你可以看看。我想这取决于你的文件大小。如果行不是太大,也不是太多,并且您不关心程序是否使用GNU以外的libcs运行,那么可以使用getline函数将整行读取到内存中,直到到达最后一行。那么它应该像查找第一个逗号一样简单
如果您有一个由小行组成的大文件,您可以查看该文件的结尾,并按字节备份,直到找到一个“\n”。那么你就在最后一行的开头了
如果文件和行都很大,可能对整个文件执行mmap,直到文件末尾,然后读回“\n”可能比所有这些fseek更有效。尽管可以说mmap的可移植性不如fseek(因为fseek是标准的C)。我认为这取决于文件的大小。如果行不是太大,也不是太多,并且您不关心程序是否使用GNU以外的libcs运行,那么可以使用getline函数将整行读取到内存中,直到到达最后一行。那么它应该像查找第一个逗号一样简单 如果您有一个由小行组成的大文件,您可以查看该文件的结尾,并按字节备份,直到找到一个“\n”。那么你就在最后一行的开头了
如果文件和行都很大,可能对整个文件执行mmap,直到文件末尾,然后读回“\n”可能比所有这些fseek更有效。尽管可以说mmap的可移植性不如fseek(因为fseek是标准的C)。如何安装我的意思是什么?我没有在网上找到它,请指导我是的,你必须安装它
make
然后make install
。如何安装我的意思是什么?我没有在网上找到它,请指导我是的,你必须安装它make
然后makeinstall
。这可能是最简单的方法。搜索到底,备份到换行符,提取文本到第一个逗号。这可能是最简单的方法。搜索到底,备份到换行符,提取文本到第一个逗号。