简单C程序赢得';我跑不了。CMD中的崩溃

简单C程序赢得';我跑不了。CMD中的崩溃,c,C,我是C语言编程新手,我正在尝试构建和执行我的第一个程序。我的第一个程序是Hello,World,像你们很多人一样,用CMD打印。效果很好。但现在,它进入了更大更好的项目,我有一个奇怪的问题 我正在尝试使用标准IO操作(scanf和printf)制作一个基本的加法计算器,但它无法正常工作 我的程序要求用户输入两个数字,然后显示所述计算的输出。该程序将完美地执行,直到scanf表达式发挥作用。在我输入要添加的2个数字后,CMD提示符将在没有警告的情况下关闭,并且从不吐出答案或之后必须显示的文本 我尝

我是C语言编程新手,我正在尝试构建和执行我的第一个程序。我的第一个程序是Hello,World,像你们很多人一样,用CMD打印。效果很好。但现在,它进入了更大更好的项目,我有一个奇怪的问题

我正在尝试使用标准IO操作(scanf和printf)制作一个基本的加法计算器,但它无法正常工作

我的程序要求用户输入两个数字,然后显示所述计算的输出。该程序将完美地执行,直到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;
}
#包括
int main()
{
INTA、b、c;
printf(“输入两个要添加的数字”);
scanf(“%d%d”、&a和&b);
c=a+b;
printf(“数字之和=%d\n”,c);
返回0;
}

一旦控制台应用程序从主方法返回,关联的控制台窗口将自动关闭。我假设您使用的是Windows操作系统。在这种情况下,添加一个
系统(“暂停”)
之前返回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;
    }
#包括
int main()
{
INTA、b、c;
printf(“输入两个要添加的数字”);
scanf(“%d%d”、&a和&b);
c=a+b;
printf(“数字之和=%d\n”,c);
//清除输入缓冲区
int d;
而((d=getchar())!='\n'&&d!=EOF){}
printf(“按回车键继续\n”);
getchar();
返回0;
}
CMD提示符只是在没有警告的情况下关闭,从不吐出答案

似乎您正在Windows计算机上打开一个新的终端。我编译了代码,它运行正常。您的程序在打印答案后立即关闭,因此您根本看不到答案。在结束前人为地阻止它。要证明它,请在返回前直接添加以下行:

scanf("%c", &a);

这将导致停止程序并等待输入。您需要输入另一个数字,该数字基本上会被忽略,但会停止程序,以便查看输出。虽然这不是一个好的目标解决方案,因为您需要输入一些字符才能继续和退出,但它证明了这一点:)

它对我来说很好。你确定它正在崩溃,而不仅仅是因为它已经完成而退出吗?你没有检查scanfillern的返回值以使用调试器,它将帮助你快速编写代码。你是从你正在开发的IDE运行你的程序吗?你试过从控制台运行它吗?在程序exe文件所在的文件夹中打开控制台并执行它。如果您从IDE运行它,当程序结束时,控制台将关闭(取决于您使用的IDE),您将看不到最后的printf。发布准确的输入-这将有所帮助。@chux感谢您指出这一点。我错过了。添加了清除输入缓冲区的代码。小调:将
清除输入缓冲区
代码放在
scanf之后(“%d%d”、&a和&b)是一个很好的本地化。