scanf阻止程序运行

时间:2016-10-10 08:05:16

标签: c coderunner

所以我用coderunner编写了这个程序,

#include <stdio.h>

int main()
{
    int num1, num2;

    scanf("%d%d", &num1, &num2);

    if (num1 > num2) 
        printf("The min is:%d\n ", num2);
    else
        printf("The min is:%d\n ", num1);
return 0;   
}

问题是该程序不会运行。它会一直显示,然后在一段时间后停止:

running

删除scanf解决了这个问题,我已经尝试过使用scanf的其他程序,这很好。有什么想法吗?

1 个答案:

答案 0 :(得分:2)

您希望scanf()如何解释,例如1231232为两个整数?您输入的所有数字都可能被“吃掉”#34;通过第一个%d,然后scanf()等待第二个更多。

您必须使用某些分隔或它们之间的某些非数字字符:

scanf("%d/%d", &num1, &num2);

这告诉scanf()期望两个数字之间出现斜杠。

当然,您也可以使用空格(格式字符串中没有任何内容,如注释中所指出的那样)。

此外,您应该在依赖数字之前检查返回值:

if(scanf("%d %d", &num1, &num2) == 2)
{
}