我是C语言编程的新手,我正在尝试构建和执行我的第一个程序。我的第一个程序是“ Hello,World”,就像你们中许多人一样在CMD中打印。效果很好。现在,它进入了更大和更好的项目,而我遇到了一个奇怪的问题。
我正在尝试使用标准IO操作(scanf和printf)制作一个基本的加法计算器,但它无法正常运行。
我的程序要求用户输入2个数字,然后它将显示所述计算的输出。该程序可以完美执行,直到scanf表达式生效为止。输入我要添加的2个数字后,CMD提示会在没有警告的情况下立即关闭,并且从不吐出答案,否则我以后必须显示该文本。
我尝试了多种解决方案来解决此问题,包括直接从我正在学习的网站复制和粘贴源代码,即使它们的完美代码也可以得到相同的结果。只是在显示输出之前发生崩溃。我今天发布的原因是我想知道我的问题来自何处,因为我不确定为什么该程序无法按预期执行。在此先感谢您和我正在使用的代码:
#include <stdio.h>
int main()
{
int a, b, c;
printf("Enter two numbers to add\n");
scanf("%d%d", &a, &b);
c = a + b;
printf("Sum of the numbers = %d\n", c);
return 0;
}
答案 0 :(得分:3)
一旦控制台应用程序从main方法返回,关联的控制台窗口就会自动关闭。我假设您使用的是Windows操作系统。在这种情况下,请在您的system("pause");
语句前添加一个return 0;
。
对于独立于平台的解决方案,您只需向用户显示提示并等待按键,然后再从main返回即可。正如@chux在注释中指出的那样,必须清除输入缓冲区中剩余的任何字符(在这种情况下,从scanf输入)。
#include <stdio.h>
int main()
{
int a, b, c;
printf("Enter two numbers to add\n");
scanf("%d%d", &a, &b);
c = a + b;
printf("Sum of the numbers = %d\n", c);
//clear input buffer
int d;
while ((d = getchar()) != '\n' && d != EOF) { }
printf("Press ENTER key to Continue\n");
getchar();
return 0;
}
答案 1 :(得分:1)
CMD提示仅在没有警告的情况下关闭,并且从不吐出答案
似乎您在Windows计算机上打开一个新终端。我编译了代码,它可以工作。打印答案后,程序将立即关闭,因此您根本看不到它。结束前人为地停止它。为了证明这一点,请在返回之前直接添加以下行:
scanf("%c", &a);
这将导致程序停止并等待输入。您将需要输入另一个数字,该数字实际上将被忽略,但是将停止程序,以便您可以看到输出。这不是一个好的目标解决方案,尽管由于您需要输入一些字符才能继续并退出,但事实证明了这一点:)