私はしようとしています: - ユーザーが無効な値を入力した場合に値を再読み込みします。しかし、問題はscanf()
1 回だけ実行され、2 回目以降は実行されず、プログラムが無限ループに陥ってしまうことです。
#include<stdio.h>
#include<math.h>
main()
{
unsigned int a;
unsigned int b = pow(2,M-1);
unsigned int c;
int x;
printf("b = %i",b);
input:
fflush(stdin);
fflush(stdout);
printf("\nEnter any integer: ");
x = scanf("%u",&a);
printf("%u",a);
if(x==0)
goto input;
printf("\na = %i",a);
c = a & b;
printf("\nc = %i",c);
if(c)
printf("\nthe bit %i is set",M);
else
printf("\nthe bit %i is not set",M);
}
以前にスペースを追加してみましたが、試して%u
みましfflush(stdin)
たが、何も機能しませんでした。
編集: goto の使用が推奨されていないことはわかっていますが、この方法で行う必要があります。(ループの使用はオプションではありません)。M は、コンパイル時に gcc コマンド ラインを使用して定義するマクロです。