1. ホーム
  2. c

[解決済み] C言語のループでエンターキーを読み込む

2022-03-05 09:31:43

質問

ループの中でエンターキーを複数回読み込むには?

以下のように試しましたが、結果が出ません。

char c;
for (i=0; i<n; i++){
    c = getchar ();
    fflushstdin ();
    if (c == '\n'){
        //do something
    }
}

そして、fflushstdin。

void fflushstdin (){
    int c;
    while ((c = fgetc (stdin)) != EOF && c != '\n');
}

エンターキーの代わりに他の文字を読めば完璧に動作しますが、エンターキーでは、いくつかの繰り返しで、エンターキーを2回押さなければなりません。

ありがとうございます。

EDIT: Windowsのputtyで実行し、プログラムは仮想ボックス上の仮想化されたlinux mintで実行されています。

解決方法は?

なぜfflushstdin()を呼び出すのですか?fgetc()が "nothing "を返した場合、その文字は完全に削除されます。

これでうまくいくはずです。

char prev = 0;

while(1)
{
    char c = getchar();

    if(c == '\n' && prev == c)
    {
        // double return pressed!
        break;
    }

    prev = c; 
}