1

我正在尝试读取包含以下内容的 txt 文件:

测试.txt

3,4
5,6
7,8

每一对都在一行中。我想将这些值放在一个数组中。但我希望数组大小根据测试 txt 中的对数进行调整。

所以我计算了 txt 文件中可用的行数,直到EOF并将行数分配给数组以分配sizeof数组。然后当我尝试使用读取文件时,fscanf我得到一些奇怪的数字,这些数字甚至不是这个 txt 的一部分像2342,123123.

这是我的代码:

#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);
    }
4

2 回答 2

4

我认为您需要致电:

rewind(pf);

显示您的计数器值后。

这会将文件指针重置为文件的开头。

于 2013-10-11T06:33:34.393 回答
1

问题可能是当前文件指针指向文件末尾。您现在需要从文件的开头读取,因此您需要执行以下操作:

rewind(pf);

还有其他机制 - 例如fseekor fsetpos,但rewind我会在这里使用。

您还可以检查 fscanf 的返回 - 这将返回分配的输入项的数量。如果这不是 2 (在您的情况下),那么出了点问题。

于 2013-10-11T07:38:44.617 回答