これは、コードがどのように見えるべきだと思うかです。ちなみに、関数(メイン)の中にあります。
char a;
if (a [is detected]) {
printf("Incorrect input format \n");
exit( EXIT_FAILURE );
}
数字も文字であることを忘れないでください。あなたがしたいことは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して新しく読み取った行をスキャンすることです。
からの入力を読み取るためfreadに代わりに使用します。ユーザーが提供した入力を解析して、 が入力として与えられているかどうかを確認し、エラーを出力します。scanfstdinchar