与えられた入力が整数入力かどうかを確認したかったのです。入力を文字列に保存したくありませんでした。stackoverflow に関するいくつかの質問とヒット アンド トライアルを見て、次のコードを作成しました。
while(scanf("%d%c",&num,&a) != 2 || a != '\n')
{
printf("Please enter an integer only : ");
if(a == '\n')
scanf("%c",&a);
else
{
while(a != '\n')
scanf("%c",&a);
}
}
それは機能しますが、私の理解によれば、以下も機能するはずです
while(scanf("%d%c",&num,&a) != 2 || a != '\n')
{
printf("Please enter an integer only : ");
while(a != '\n')
scanf("%c",&a);
}
上記がうまくいかなかった理由を誰か教えてもらえますか?? また、誰かがより良い解決策を持っている場合は、それも教えてください。
注:12qweも無効な入力と考えています。整数が欲しいだけです。