2011-04-03 9 views
2

私は最も無害なCプログラムを書いたが、期待した結果が得られなかった。私はあなたが私のエラーがどこにあるかを教えてくれることを願っていますC getcharエラー

これはコードです:

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

int main(int argc, char** argv) { 
    int c, var4; 
    double var1,var2,var3; 

    while ((c = getchar()) != EOF) { 

     while (c != ':') { 
      putchar(c); 
      c = getchar(); 
     } 
     //scanf("%d/%d/%d",&mm,&dd,&yy); 
     //scanf("%lf%lf%lf%d",&var1,&var2,&var3,&var4); 
    } 
    return 0; 
} 

と私は入力のために、このファイルを使用しています(コマンド・ラインのリダイレクト)

名1 - CODE1:
2011年4月3日4.5 5.6 9.8 145
2011年4月3日6.5 4.6 9.9 185
Name2は - CODE2:
2011年5月3日4.5 5.6 9.8 135
2011年5月3日6.5 4.6 9.9 165

エラーがwhileループ中に表示されます(私はprintf代わりのputcharを試み、それが延々と-1を印刷し、EOFに到達しないように思われる)

私はそれがすべてだと思っ私は事前にあなたの助けに感謝します。

+0

どのようなエラーが表示されますか?あなたは 'Name1 - Code1'を見ることを期待していると思いますか? 'char c;'を試しましたか? –

+0

みんなに感謝して申し訳ありません、それは愚かな質問のようなものでした –

答えて

2

あなたは1文字を取得してから、':'をチェックする内部ループに入りますが、EOFはチェックしていません。したがって、ファイルが:で終わらない限り(外側のループで見られるように)、内部ループはEOFに達すると永遠に回転します。

1

内部ループはEOFで停止しません。

theeファイルが完成したため、getchar (EOF == -1)からエラーが発生しています。それは無限に印刷されているものです。

1

内側のgetcharループ内でEOFをチェックしていないため、EOF(-1)を連続して読み取って出力できます。

あなたの期待する結果がわからないので、私はそこであなたを助けることができません。

関連する問題