2017-09-03 49 views
0

我写接收的字符串作为字符数组,并将其转换为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; 
} 

的问题是,无论串I输入是多长,当“p”达到10,“num”的值变成垃圾! 我试图debbuging和检查较大的代码之外的功能,但没有成功。

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

+0

你的问题需要一个语言标签。请[编辑]并添加一个。 –

回答

0

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

尝试使用类型为num的存储空间更大,如long

+0

谢谢你,我成功地解决了问题,通过限制num为10位数字,否则打破;谢谢 – EricaN

+0

一个比我上面写的更高的10位数字仍然不起作用。无论如何,如果答案解决了您的问题,请将其标记为已解决。 –