【发布时间】:2017-01-25 02:24:39
【问题描述】:
我必须从 CSV 文件中读取数据并在我的 C 函数中使用这些值。
我正在使用以下代码进行此操作:
int arg1;
char arg2[500];
int arg3;
FILE *file;
file=fopen(filename,"r");
if (file == NULL)
{
printf("Not able to open the file\n");
}
while (fgets(line,1000, file)!=NULL)
{
splitline=strtok(line,",");
while(splitline)
{
if(firstargument==1)
{
arg1=atoi(splitline);
printf("First argument is %d ",arg1);
firstargument=2;
}
else if(firstargument==2)
{
splitline[strlen(splitline)]='\0';
strcpy(arg2,splitline);
printf("Second argument is %s\n",arg2);
firstargument=3;
}
else
{
arg3=atoi(splitline);
printf("Third argument is %d ",arg1);
firstargument=1;
}
splitline = strtok(NULL,",");
}
printf("Value to insert Key:%d,Value:%s,Height:%d\n",arg1,arg2,arg3);
inserth(inode,arg1,arg2,arg3);
}
但是当我的 csv 文件的单列包含多个逗号分隔值时 解析失败
350206,Uma,1
350207,Umika,1
350208,"Vaishavi, Vaishnodevi",1
350226,Badriprasad,1
350227,"Kanak, Kanaka",1
有没有办法读取csv文件单列中的多个值?
【问题讨论】:
-
这不是错误,只是参数值输入错误,因为如果我读到第 350227 行,"Kanak, Kanaka",1 my arg1 =350277 arg2="Kanak arg3= Kanaka" 所以你可以如果 arg2=Kanak, Kanaka arg3=1,请参阅 arg3 得到错误值正确
-
您的解析不考虑 " 块,同时使用
strtok()使用简单的逗号分隔。 -
也许使用开源 C 库,例如 github.com/liquidaty/zsv 的库 + CLI