c字符检查

来源:百度知道 编辑:UC知道 时间:2024/07/02 10:10:03
while (1)
{
sum = 0;
scanf("%s", input);
for (i = 0; input[i] != '\0'; i++)
{
if (input[i] < '0' || input[i] > '9')
{
printf("Invalid input!\n");
sum = -1;
break;
}
sum = sum*10 + input[i] - '0';
}
printf("input=%d\n", sum);
}
这段code可以检查输入的字符input是否为数字,但同时也能对超长输入做检查,请问这是为什么呢?谢谢!
如果输入:1212312321312321
就会输出:input=1967441473
这个值是怎么求出来的?

if (input[i] < '0' || input[i] > '9')
{
printf("Invalid input!\n");
sum = -1;
break;
}
这段代码遇到不是数字的字符就会提示,然后退出

至于对超长输入做检查我没看出来有这功能

正如我上面的回答,我根本没看到有对超长输入检查的过程,所以你输入的这么长一串数字肯定导致溢出了