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