【问题标题】:garbage in loop for no reason无缘无故循环垃圾
【发布时间】:2017-09-03 17:23:24
【问题描述】:

我写了一个函数,它接收一个字符串作为一个 char 数组并将其转换为一个 int:

int makeNumFromString(char Str[]) 
{
    int num = 0, len = 0;
    int p;
    len = strlen(Str);
    for (p = 0; p<len; p++)
    {
        num = num * 10 + (Str[p] - 48);
    }
    return num;
}

问题是无论我输入的字符串有多长,当“p”达到10时,“num”的值就会变成垃圾!!! 我尝试在较大的代码之外调试和检查函数,但没有成功。

可能是什么问题,我该如何解决? 谢谢

【问题讨论】:

  • 您的问题需要一个语言标签。请edit它并添加一个。

标签: string loops garbage


【解决方案1】:

也许你的int 只能存储 32 位,所以这个数字不能高于 2,147,483,647。

尝试使用具有更多存储空间的num 类型,例如long

【讨论】:

  • 谢谢我成功解决了这个问题,将num限制为10位,否则中断;谢谢你
  • 一个比我上面写的数字高的 10 位数字仍然不起作用。无论如何,如果答案解决了您的问题,请将其标记为已解决。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-03-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-25
相关资源
最近更新 更多