#include
#include
int myatoi(char *ptr);
int main(void)
{
char input[81];
int check;
puts("enter a sentence only number:");
fgets(input, 81, stdin);
check = myatoi(input);
if (check)
printf("%d read\n", check);
else
puts("no ordered number input");
getchar();
return 0;
}
int myatoi(char * ptr)
{
int mydigit,i;
for (i = 0; i < 81; i++)
{
if (isdigit(ptr[i]))
{
if (i == 1)
mydigit = ptr[i];
else
mydigit = mydigit * 10 + ptr[i];
}
else
return 0;
}
return mydigit;
}
调试输入纯数字的时候,程序中断并提示mydigit未初始化,想了想是mydigit这个变量没有进入for循环造成的,请问这个代码应该怎么改呢?谢谢
逻辑有问题
if (isdigit(ptr[i]))
{
if (i == 1)
mydigit = ptr[i];
else
mydigit = mydigit * 10 + ptr[i];
}
else
return 0;
当第一次循环,满足条件进第一个if,i是0,就进 mydigit = mydigit * 10 + ptr[i];但是mydigit还未初始化,你咋个和10乘。i==0的条件你需要考虑一下。应该就没问题了
这块儿mydigit = mydigit * 10 + ptr[i];出错,不是没有进入for循环,而是你没有初始化这个变量,就让他参与运算,乘10到底是啥东西去乘。
对的,第一次循环不知道你乘的什么东西。