为什么我的字符串是这样读的?

时间:2016-11-01 22:54:11

标签: string loops if-statement while-loop

我正在尝试重新创建atoi,我想知道为什么我的功能有效。我最后将它改为str [i]以获得三个顶级陈述,因为它对我有意义,但它传递了我投入的所有内容。

i = 0;
result = 0;
negative = 1;
if (str[0] == '-')
{
    negative = -1;
    i++;
}
if (str[0] == '+')
    i++;
while (str[0] <= ' ')
    i++;
while (str[i] != '\0')
    if (str[i] >= '0' && str[i] <= '9')
    {
        result = result * 10 + str[i] - '0';
        ++i;
    }
return (result * negative);

1 个答案:

答案 0 :(得分:0)

第一个if语句只是检查数字是否应为负数。 第二个if语句检查字符串是否以可选的正号开头 如果ascii的字符小于空间的ascii,那么第一个while循环应该运行到无穷大(32) 第二个while循环只是循环遍历字符串并将字符串转换为int

将前3个str [0]更改为str [i]不应该有很大的不同,因为我已经初始化为0.如果你的字符串以“ - +”开头不应该是一个例外有效整数或符号与数字之间有空格