这是我的功能,我需要帮助......
我必须尝试捕获short int
的范围,没有错误处理程序或尝试& catch。
我在这个算法中找不到我的失败 - 我希望你能帮助我。
short int checkShortInt(char * myString)
{
short int i = 0;
short int len;
if((myString[i]=='+')||(myString[i]=='-')) i++;
for (len = i; myString[len] != '\0'; len++);
if(len-i>5) return(0);
if(myString[i+0]<'3') return(1);
if(myString[i+0]>'3') return(0);
if(myString[i+1]<'2') return(1);
if(myString[i+1]>'2') return(0);
if(myString[i+2]<'7') return(1);
if(myString[i+2]>'7') return(0);
if(myString[i+3]<'6') return(1);
if(myString[i+3]>'6') return(0);
if(myString[i+4]>'7') return(0);
return(1);
}
答案 0 :(得分:1)
short
涵盖的范围是不对称的:通常范围为-32768到32767. 答案 1 :(得分:1)
我的两分钱。也许是矫枉过正......
#include <stdio.h>
#include <stdlib.h>
#include <limits.h>
#include <inttypes.h>
int checkShortInt(char *myString)
{
long long i = strtoll(myString, 0, 0);
return (i >= SHRT_MIN && i <= SHRT_MAX);
}
答案 2 :(得分:0)
short int checkShortInt(char * myString)
{
short int i = 0;
int total = 0;
// Skip a leading +/- sign.
if((myString[i]=='+')||(myString[i]=='-')) i++;
while(myString[i] != '\0')
{
total = 10*total + myString[i]-'0';
++i;
}
if (SHRT_MIN <= total && total <= SHRT_MAX)
{
return total;
}
return 0;
}
示例输入和结果:
checkShortInt("53") ==> 53
checkShortInt("+125") ==> 125
checkShortInt("0") ==> 0
checkShortInt("70345") ==> 0