0

これは、コードがどのように見えるべきだと思うかです。ちなみに、関数(メイン)の中にあります。

char a;
if (a [is detected]) {
    printf("Incorrect input format \n");
    exit( EXIT_FAILURE );
}    
4

2 に答える 2

3

数字も文字であることを忘れないでください。あなたがしたいことはscanf、整数をスキャンするために使用し、戻り値をチェックすることです。関数ファミリからの戻り値はscanf、正常にスキャンされたアイテムの数、または-1エラーの場合です。単一の整数 ( format "%d")をスキャンした場合、scanf返されない場合は1エラーが発生しました。

だからあなたは次のようなことができます

if (scanf(" %d", &number) == 1)
{
    /* Got a number okay */
}
else
{
    /* Not a number in the input */
}

また、scanf失敗した場合でも入力は残っているため、ループして現在の入力が無視されることを期待することはできません。これを回避する簡単な方法は、 を使用fgetsして入力の 1 行を読み取り、次に を使用sscanfして新しく読み取った行をスキャンすることです。

于 2013-09-16T05:51:42.270 に答える
0

からの入力を読み取るためfreadに代わりに使用します。ユーザーが提供した入力を解析して、 が入力として与えられているかどうかを確認し、エラーを出力します。scanfstdinchar

于 2013-09-16T05:49:42.970 に答える