读书人

一段实现atoi()的程序结果异常…帮看

发布时间: 2012-10-15 09:45:24 作者: rapoo

一段实现atoi()的程序,结果错误……帮看一下

C/C++ code
#include <stdio.h>#include <ctype.h>#include <stdlib.h>int myatoi(const char *str);int main(void){    int num;    char st[21];    puts("请输入要转换成数字的字符串");    gets(st);    num = myatoi(st);    printf("string = %s,integer = %d",st,num);    return 0;    }int myatoi(const char *str){    int number,i;    int sum = 0;    if (str == NULL)        exit(EXIT_FAILURE);    for(i = 0;isspace(str[i]);i++)        ;    number = (str[i] == '-') ? -1 : 1;  //负号为-1,正号或数字为1    //puts("2");    if(str[i] == '-' || str[i] == '+')   //跳过正负号        i++;         //puts("3");    if(isdigit(str[i]))    {            while(isdigit(str[i]))        {            sum = sum * 10 + (str[i] - 'c');            i++;        }        number *= sum;        //puts("4");        return number;    }    else        number = 0;    //puts("5");    return number;}

计算结果有误,哪里出的问题?

[解决办法]
单步调试和设断点调试是程序员必须掌握的技能之一。

[解决办法]
这里为什么是'c'? ,是'0' 吧
while(isdigit(str[i]))
{
sum = sum * 10 + (str[i] - 'c');
i++;
}

[解决办法]
同上
-'c'那边打错了吧

读书人网 >C语言

热点推荐