我试图从.csv文件中读取一些整数。我不知道到底有多少整数是每行的文件中,我只知道,所有的csv文件是一样的东西:使用fscanf函数从.csv文件中读取int
1,2,3,9,6,3,4
4,5,6,7
2,3,8,9,4
我需要存储阵列中的每一行,但我不”我知道如何从一个文件中读取整数值而不知道该行中有多少个整数。 在我的程序中,我必须检查每行是否只有2个元素,以及第二个元素是否等于我从主接收到的sel值。
void fun1 (sel)
{
int aux[3];
int res;
FILE* fp;
fd=fopen("c:\\myfile.csv","r");
if(fd==NULL)
{
printf("Error");
exit(-1);
}
while(!feof(fd))
{
res=fscanf(fd,"%d,%d,%d",&aux[0],&aux[1],&aux[2]);
if(res==2&&aux[1]==sel)
{
puts("Value ok");
}
}
}
我试图把3 %d在fscanf因为如果行包含超过2个元素我敢肯定,我不需要这条线,但如果该行包含超过3种元素的保留节目没有做任何事情就跑步
我认为这个问题的出现是由于fscanf功能停止时达到'\n',但如何解决,如果我不知道有多少元素包含.csv文件的每一行代码?
-02-09
Marco_D
+0
尝试使用fgetc一次读取一个字符。当行有6或7个值时,你的计划是什么? –
+0
考虑使用['fgets'](/man/3/fgets)来阅读整行。然后使用['strtok'](/man/3/strtok)+ ['strtol'](/man/3/strtol)或[' sscanf'](/man/3/sscanf)解析出数字。 –
+0
您存储整数的数组也需要a)足够大以保存您愿意支持的线上的大多数整数,或者b)动态分配,例如,与'malloc'。 –