一段实现atoi()的程序,结果异常…帮看一上
一段实现atoi()的程序,结果错误……帮看一下
计算结果有误,哪里出的问题?
------解决方案--------------------
单步调试和设断点调试是程序员必须掌握的技能之一。
------解决方案--------------------
这里为什么是'c'? ,是'0' 吧
while(isdigit(str[i]))
{
sum = sum * 10 + (str[i] - 'c');
i++;
}
------解决方案--------------------
同上
-'c'那边打错了吧
- 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'那边打错了吧