2

最も無害な C プログラムを作成しましたが、期待した結果が得られません。私のエラーがどこにあるか教えていただければ幸いです。

これはコードです:

#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 - コード 1:
04/03/2011 4.5 5.6 9.8 145
04/03/2011 6.5 4.6 9.9 185 名前2 - コード 2: 05/03/2011 4.5 5.6 9.8 135
05/03/2011 6.5 4.6 9.9 165


whileループ中にエラーが表示されます(printf代わりに試してみましたが、無限putcharに印刷され、決して到達しないようです)-1EOF

それだけだと思います。事前にあなたの助けに感謝します。

4

3 に答える 3

2

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

于 2011-04-03T05:40:41.050 に答える
1

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

ファイルが終了しているため、getchar (EOF == -1)からエラーが発生しています。それが際限なく印刷されているものです。

于 2011-04-03T05:40:42.490 に答える
1

内部の getchar ループ内で EOF をチェックしていないため、継続的に EOF (-1) を読み取って出力することができます。

あなたの期待される結果がどうなるかわかりませんので、私はあなたを助けることができません。

于 2011-04-03T05:41:56.387 に答える