私はgetchar
を使ってユーザーから文字を取得し、それを数えるプログラムを書いています。これは、ユーザーがEOFを入力したときに停止し、charカウントを出力して印刷を完了したものとみなされます。コード:EOFに関するgetcharの奇妙な振る舞い
char cur = 0;
int count = 0;
while((cur = getchar()) != EOF){
++count;
}
printf("\n%d", count);
printf("\ndone\n");
ただし、ユーザーが連続する2つのEOFを入力するまでループは停止しません。 文字がEOFでループが壊れていても動作していないかどうかを手動でチェックして、ループを強制的に停止しようとしました。
ただ1つのEOFの後に停止するにはどうすればよいですか?
ユーザーはどのように「EOF」を入力しますか?これは鍵ではなく、何らかの形で通知される状態です。どのキーを押しましたか? – chux
'EOF'キー(Linuxでは' Ctrl-D'、Windowsでは 'Ctrl-Z')は改行の後の最初の文字でなければなりません。それでも、なぜキーボードから複数の「EOF」が必要なのかを理解していない。 –
私はLinuxでCTRL + Dを使用しています –