C 函数检查短整数算法

C 函数检查短整数算法,c,C,这是我的职责,我需要帮助。。。。 我必须在没有错误处理程序的情况下尝试捕捉short int的范围,或者尝试捕捉(&C)。 我在这个算法中找不到我的失败之处-我希望你能帮助我 short int checkShortInt(char * myString) { short int i = 0; short int len; if((myString[i]=='+')||(myString[i]=='-')) i++; for (len = i; myStrin

这是我的职责,我需要帮助。。。。 我必须在没有错误处理程序的情况下尝试捕捉
short int
的范围,或者尝试捕捉(&C)。 我在这个算法中找不到我的失败之处-我希望你能帮助我

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);
}
short int checkShortInt(char*myString)
{
短整数i=0;
短内透镜;
if((myString[i]='+')| |(myString[i]='-'))i++;
for(len=i;myString[len]!='\0';len++);
如果(len-i>5)返回(0);
if(myString[i+0]'3')返回(0);
if(myString[i+1]'2')返回(0);
if(myString[i+2]'7')返回(0);
if(myString[i+3]'6')返回(0);
if(myString[i+4]>'7')返回(0);
申报表(1);
}
  • 请注意,当使用二的补码时,
    short
    覆盖的范围是不对称的:它通常在-32768到32767之间
  • 如果值的长度小于5,则字符串显然适合短字符串

  • 我的两分钱。也许是杀伤力太大了

    #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);
    }
    
    #包括
    #包括
    #包括
    #包括
    int checkShortInt(char*myString)
    {
    长i=strtoll(myString,0,0);
    
    return(i>=SHRT\u MIN&&我提供了示例输入和预期输出。我不明白你所说的捕捉short的范围是什么意思。看起来你想检查一些值是否适合short。如果是这样,这可能是你能想象到的最丑陋的尝试之一。试着输入
    “abc”
    ,看看哪里出错了。检查shortint(“0”)=>0 rohroh@abelenky0作为一个返回值意味着FALSE,对吧..?我认为最好在while中有if,以避免int溢出,并且在检查之前保存-sing乘以它。还要检查char是否是一个数字。为什么不直接使用strtol?+1选择
    strtol
    而不是
    strtol
    ?我认为也是会有用的。@AdamStelmaszczyk,没有理由,strtol也会有用。我对其他要求strtol的答案发表了评论,但没有人回应,所以我写了自己的答案,有点开玩笑。
    checkShortInt("53") ==> 53
    checkShortInt("+125") ==> 125
    checkShortInt("0") ==> 0
    checkShortInt("70345") ==> 0
    
    #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);
    }