回 帖 发 新 帖 刷新版面

主题:atoi函数不理解。帮帮我把。。

#include <ctype.h>
int atoi(char s[])
{
    int i,n,sign;
    for(i=0;isspace(s[i]);i++)
        ;
    sign=(s[i]=='-')?-1:1;
    if(s[i]=='+'||s[i]=='-')
        i++;
    for(n=0;isdigit(s[i]);i++)
        n=10*n+(s[i]-'0');
    return sign*n;
}
上面第5行中的isspace函数这边不理解,不明白这语句具体是怎么实现的。
还有sign=(s[i]=='-')?-1:1;
    if(s[i]=='+'||s[i]=='-')
        i++;
        我也不明白这3句讲什么意思
        

回复列表 (共1个回复)

沙发

s[32]="        +18.69";
如果是这样一个字符串带入 atoi 的话,是不是很好分析了

※注意 变量 i

for(i=0;isspace(s[i]);i++)
isspace那个循环后,i指向字符串s的 + 


sign=(s[i]=='-')?-1:1;
这个条件表达式是判断该数是正数还是负数


 if(s[i]=='+'||s[i]=='-')
        i++;
这一部分判断如果该字符串有+-号的话,将i指向下一个


接下来就是从+-号开始,到小数点前的数字字符串转化为数字的处理了

over

我来回复

您尚未登录,请登录后再回复。点此登录或注册