我编写了以下代码来从键盘获取整数。它将提示错误消息,直到您提供有效的整数值(负或正)。
一个条件是它必须检查每一个可能的测试用例
像:
-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 (它是整数,但由于 range 应该失败)但它通过并给出了一些其他整数值。
如何在我的代码中解决这个问题或实现更好的想法getInt()
?