【发布时间】:2014-10-16 06:28:24
【问题描述】:
如果我正在读取文件的第一行并存储在某个变量中,如果我再次读取同一个文件并存储在不同的数组中,我的数组会跳过第一行吗?
a1,a2,a3,a4,a5
b1,b2,b3,b4,b5
c1,c2,c3,c4,c5
d1,d2,d3,d4,d5
e1,e2,e3,e4,e5
我的代码看起来像这样
FILE* fp1 = fopen("test.csv","r");
if(fp1 == NULL)
{
printf("Failed to open file\n");
return 1;
}
fscanf(fp1,"%[^\n]",variable);
while((fscanf(fp1,"%[^,],%[^,],%[^,],%[^,],%[^\n]\n",C1,C2,C3,C4,C5)>0))
{
some function()
}
for(i=1;i<=5;i++)
{
printf("%s\t", C1[i]);
printf("%s\n", C2[i]);
}
我的输出从文件的第二行开始,即
C1[i] = {b1,c1,d1,e1} but not a1
C2[i] = {b2,c2,d2,e2} but not a2
有人可以简要说明为什么第一行被跳过了吗?
谢谢,
【问题讨论】:
-
尝试倒带文件,即 fp1.rewind()。然后它将指向文件的开头
-
没有被跳过。您不是“再次读取文件”。你读了第一行并用它做了一件事,然后你读了第二行到最后几行,用它们做了不同的事情。
-
@chris : OP 正在使用 C。所以我认为调用会像
rewind(fp1);。 -
谢谢大家的建议,@hobbs:我的问题是如果我第二次使用 fscanf(fp1),它会从第二行读取还是从第一行读取?谢谢
-
fscanf(fp1,"%*[^\n]%*c");: 跳过第一行。
标签: c file csv readfile c-strings