キーボードから整数を取得するために、次のコードを記述しました。有効な整数値(負または正)を指定するまで、エラーメッセージが表示されます。
1つの条件は、考えられるすべてのテストケースをチェックする必要があることです。
お気に入り:
-3.2
5.0
984237.4329
0.343
.434
12344.
adfs34
233adds
3892710492374329
helloIamNotainteger
このすべてのテストで失敗するはずint >=INT_MIN && int <=INT_MAX
です。値に対してのみ合格します。
私の実行中のコードは:
#include<stdio.h>
#include<limits.h>
int min=INT_MIN;
int max=INT_MAX;
int main()
{
char str[50],c; //I have taken size 50 please ignore this
int check;
do
{
int flag=1,i=0,j=0,num=0;
check=0;
printf("Enter an Integer : ");
while((c=getchar())!='\n')
str[i++]=c;
if(str[0] == '-')
{
flag = -1;
j++;
}
for(;j<i;j++)
{
if(str[j] >= '0' && str[j] <= '9')
num=(str[j]-'0') + num*10;
else
break;
}
if(j<i)
{
printf("Not an Integer, Please input an integer \n");
}
else if(num < min || num >max)
{
printf("Integer is out of range,Please input an integer \n");
}
else
{
num *=flag;
printf("The given number is : %d\n",num);
check=1;
}
}while(check == 0);
return 0;
}
一例:このような値の場合。
83429439803248832409(整数ですが、範囲が原因で失敗するはずです)が、合格して他の整数値を返します。
私のコード内でこれを解決する方法、または実装するためのより良いアイデアはありますgetInt()
か?