0

所以我用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;   
}

问题是程序无法运行。它一直显示这个,然后在一段时间后停止:

跑步

删除 scanf 解决了这个问题,我尝试了使用 scanf 的其他程序,它很好。有任何想法吗?

4

1 回答 1

2

您希望如何scanf()将 eg123或解释1232为两个整数?您输入的所有数字都有可能被第一个“吃掉” %d,然后scanf()等待第二个。

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

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

这告诉scanf()期望两个数字之间有一个斜线。当然,您也可以只使用空格(格式字符串中没有任何空格,如评论中所指出的那样)。

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

if(scanf("%d %d", &num1, &num2) == 2)
{
}
于 2016-10-10T08:14:52.110 回答