3

ユーザーからの入力を期待する、単純でインタラクティブなプログラムを作成しました。特定の入力を読み取った後、特定のアクションを実行しますが、最初にストリームから残りの文字を読み取って、ユーザーが入力したコマンドが多すぎないかどうかを確認します。

私の問題は、ストリームに文字が残っていない場合、ユーザーがEnterキーを押すまでスタックします。これをオーバーライドする方法はありますか?

これは、入力ストリームに残っている文字をチェックする関数です。

int check_end_of_stream(void){
    char c;
    c=getchar();
    for(; c!='\n' && c!=EOF; c=getchar())
        if(c!=' ' || c!=','){
            printf("You have written too many statements");
            printf(" in your command line!\n");
            return 0;
        }
    return 1;
}

前もって感謝します!

PS私はLinuxでプログラミングしています

4

1 に答える 1

0

別の解決策は、getche()メソッドを使用することです。これは、Enter キーが押されるのを待ちません...

int check_end_of_stream(void){
char c;

for(c=getche(); c!='\n' && c!=EOF; c=getche())
if(c!=' ' || c!=','){
    printf("You have written too many statements");
    printf(" in your command line!\n");
    return 0;
}
return 1; 
}
于 2013-05-11T06:21:12.063 に答える