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

一段实现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'那边打错了吧