我正在尝试阅读包含以下内容的txt文件:
的test.txt
3,4
5,6
7,8
每一对都在一行。我想将这些值放在一个数组中。但是我想根据测试文本中的对数来调整数组大小。
所以我计算了txt文件中可用的行数,直到EOF
并将数量分配给数组以分配sizeof
数组。然后当我尝试使用文件读取文件时fscanf
我得到了一些奇怪的数字,甚至不是像2342,123123
这样的txt文件的一部分。
这是我的代码:
#include <stdio.h>
int main(int argc , char **argv)
{
FILE *pf;
int k;
int counter=0;
int c;
pf = fopen("test.txt", "r");
if(pf==NULL)
{
printf("its nuull");
}
else
{
do
{
c=fgetc(pf);
if(c=='\n')
counter++;
}while(c!=EOF);
printf("counter value is = %d\n", counter);
int b[counter][2];
for(k=0;k<counter;k++)
{
fscanf(pf,"%d, %d" ,&b[k][0],&b[k][1]);
printf("%d,%d\n" ,b[k][0],b[k][1]);
}
}
fclose(pf);
}
答案 0 :(得分:4)
我想你需要打电话:
rewind(pf);
显示您的计数器值后。
这会将文件指针重置为文件的开头。
答案 1 :(得分:1)
问题可能是当前文件指针指向文件的末尾。您现在需要从文件的开头读取,因此您需要执行以下操作:
rewind(pf);
还有其他机制 - 例如fseek
或fsetpos
,但我会在这里使用rewind
。
您也可以检查来自fscanf的返回 - 这将返回分配的输入项目数。如果这不是2(在你的情况下),那么出了点问题。