无法正确打印txt文件

时间:2016-11-09 15:25:24

标签: c file scanf feof

嗨我有这个文本文件,其中第二个字符中的第一列是第二个,第三个是整数..但是我无法读取和打印正确的值。

所以这个文件试图读取:

c 6
o 4 3
o 2 4
o 3 2
o 1 1
o 3 3

以下是代码:

#include <stdio.h>
#include <stdlib.h>

#define N 6

int main (int argc, char *argv[]) 
{
  int i;
  int M[N];
  int U[N];
  char c ;
  FILE* fichier = NULL;

  fichier = fopen("pb1.txt","r");

if(fichier!= NULL )
  { 
    while(!feof(fichier))   
    {
    fscanf(fichier, "%c %d %d", &c, &M[i], &U[i]); 

    printf("%c %d %d \n", c, M[i],U[i]);
    }

  }
}

这是输出的样子

c 6 1472131424 
o 4 3 

 4 3 
o 2 4 

 2 4 
o 3 2 

 3 2 
o 1 1 

 1 1 
o 3 3 

 3 3 

我不知道为什么它给了我这个。谢谢

1 个答案:

答案 0 :(得分:1)

我在这里看到的第一个问题是你使用i未初始化的值。它调用undefined behavior

详细说明,i是一个自动局部变量,除非明确初始化,否则将具有不确定的值。尝试使用它将导致UB。

此外,您从未增加i的值,该值应该用作存储和打印值的索引。

最后,在尝试使用扫描值之前,请务必检查scanf()和系列的返回值以确保成功。

那就是说,请参阅Why is “while ( !feof (file) )” always wrong?