c - 读取文本文件时遇到问题

标签 c

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

测试.txt

3,4
5,6
7,8

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

所以我计算了 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);
    }

最佳答案

我想你需要打电话:

rewind(pf);

在显示您的计数器值之后。

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

关于c - 读取文本文件时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19311542/

相关文章:

c - OpenMP 在同一内存块中并发写入

c - C 中的堆大小限制

c++ - 使用 float 和 double 进行非常小的数字的数学运算

c - 如何使用 C 代码计算调用图函数的堆栈大小

c - 数值微分方程求解器算法意外出现段错误

C 程序退出并出现错误 ORA-12162 : TNS:net service name is incorrectly specified

C printf 输出到变量

c++ - 将 AES 加密的十六进制字符串转换回 C++ 中的字符串

c - 如何用C语言实现快速I/O?

c - 指针游戏数组不知道如何将指针向后移动