0

整数の入力セットをスキャンする while ループがあります。最後に「...」が付いているすべての数字をスキャンして印刷し、次の行にスキップします。ただし、スクリプトは、while ループを過ぎて実行し、TEST を出力しません。

たとえば、次のように入力します: 3 44 62 1

それは印刷します: 3...

44...

62...

1...

印刷するタイミング: 3...

44...

62...

1...

テスト

while(scanf("%d", &n) != -1) {
    x[i] = n;
    i++;

    printf("%d", n);
    printf("...\n");
}

printf("TEST");

私は何を間違っていますか?

4

1 に答える 1

6
  1. scanf("%d", &n) != 1間違っている。である必要がありますscanf("%d", &n) == 1
  2. Enter キーを押したからといって、ループが終了することを期待していますか? 書かれているように、入力ファイルの最後に達したために scanf が数値の読み取りに失敗した場合にのみ、プログラムは停止します。Unix を使用している場合は、Ctrl-D を押すことで端末から EOF を通知できます。Windows を使用している場合は、Ctrl-Z Enter です。EOF(また、 -1 であることに依存しないでください。移植性がありません。)
于 2012-11-25T07:25:35.270 に答える