简单的C程序将无法运行。 CMD崩溃

时间:2019-09-18 12:31:34

标签: c

我是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;
}

2 个答案:

答案 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);

这将导致程序停止并等待输入。您将需要输入另一个数字,该数字实际上将被忽略,但是将停止程序,以便您可以看到输出。这不是一个好的目标解决方案,尽管由于您需要输入一些字符才能继续并退出,但事实证明了这一点:)