2016-11-09 3 views
2

こんにちは私はこのテキストファイルを持っています。文字の第1列は2番目と3番目は整数ですが、値correctleyを読み込んで印刷できません。は正しくtxtファイルを印刷できません

ので、このファイルを読み込むしようとしています:

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

そしてここでは、コードは次のとおりです。これは、出力が

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 

のように見えるものである

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

    } 
} 

ノー持っていますそれが私にこれを与える理由を手がかり。ありがとう

+1

ようこそスタックオーバーフロー! [なぜwhile(!feof(file))が常に間違っているのですか?](http://stackoverflow.com/q/5431941/2173917) –

答えて

1

私がここに見る最初の問題は、i初期化されていない値を使用していることです。それはundefined behaviorを呼び出します。

具体的には、iは自動ローカル変数であり、明示的に初期化されない限り、不確定な値を持ちます。それを使用しようとするとUBにつながります。

また、値を保存して印刷するためのインデックスとして使用されると考えられるiの値を増やしたことはありません。

最後に、スキャンした値を使用しようとする前に、戻り値scanf()とファミリが成功していることを必ず確認してください。

言い換えれば、Why is “while (!feof (file))” always wrong?

関連する問題