これは、コードがどのように見えるべきだと思うかです。ちなみに、関数(メイン)の中にあります。
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
に代わりに使用します。ユーザーが提供した入力を解析して、 が入力として与えられているかどうかを確認し、エラーを出力します。scanf
stdin
char