以下のコードで問題が発生します。任意の整数、つまりを入力すると(0-9)
、OKです。しかし、のような他の文字を入力するとA
、B
他の文字scanf()
は失敗します。その後、それ以上の入力を待ちません。
このためのコードスニペットを添付しました。C標準ライブラリのみを使用したエラー処理が非常に必要です。
#include <stdio.h>
int main()
{
int choice;
while(1)
{
printf("Enter your choice: ");
if(0 == scanf("%d", &choice))
{
printf("Some error occured\n");
//break;/*I did not want to break this loop as I use this to show menu*/
}
switch(choice)
{
case 0:printf("Case 0\n");break;
case 1:printf("Case 1\n");break;
case 2:printf("Case 2\n");break;
case 3:printf("Case 3\n");break;
case 4:printf("Case 4\n");break;
case 5:printf("Case 5\n");break;
case 6:printf("Case 6\n");break;
case 7:printf("Case 7\n");break;
case 8:printf("Case 8\n");break;
case 9:printf("Case 9\n");break;
default:printf("Default case\n");break;
}
}
}
より明確な質問は、なぜ失敗した後も待たないのかということです。