この関数は、入力を検証するために使用されます。条件を満たすまで、ユーザーに数値 (0 以上) の入力を求めます。数値の前後に文字入力がある場合、その入力は無効として扱われます。必要な出力は次のとおりです。
Enter a positive numeric number: -500
Error! Please enter a positive number:45abc
Error! Please enter a number:abc45
Error! Please enter a number:abc45abc
Error! Please enter a number:1800
まあ、それは簡単に思えます:
#include <stdio.h>
main() {
int ret=0;
double num;
printf("Enter a positive number:");
ret = scanf("%.2lf",&num);
while (num <0 ) {
if (ret!=1){
while(getchar()!= '\n');
printf("Error!Please enter a number:");
}
else{
printf("Error!Please enter a positive number:");
}
ret = scanf("%.2lf",&num);
}
}
Error!Please enter a number:
ただし、入力の種類に関係なく、私のコードは出力され続けます。何かアドバイス?