0

私は単純な C プログラムをコンパイルするために NetBeans MinGW を使用しています (私はこれが初めてです)。私の問題は、この単純なコードがあることです

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

int main(int argc, char** argv) {
    int c,i=0;
    while((c=getchar())!=EOF){
        i++;
    }
    printf("%d",i);
    return 0;
}

そして、次のように入力を終了しようとすると:

こんにちは^ Z [入力]

それはできません、再入力する必要があります

^Z[入力]

終了します。

どうしてこうなったのか教えていただけると幸いです。

前もって感謝します

4

2 に答える 2

2

C 入力はデフォルトで行指向です。EOF 文字 ( ^ZWindows の場合^D、Unix の場合) で行を終了すると、(末尾の改行なしで) 行が終了しますが、実際にはファイルの終わりを示しません。ファイルの終わりの状態は、次の読み取り時、つまり行の先頭で検出されたときに通知されます。

于 2011-03-23T14:20:07.513 に答える
1

コンソールが入力を処理するのと同じ方法

UNIX システムでの Ctrl-Z は、プロセスを一時停止させるための割り込みになるため、Windows コンソールだと思います。

文字の後に Ctrl-Z を押すと、おそらくこれを Ctrl-Z 自体の「終了」として扱います。

于 2011-03-23T14:20:52.633 に答える