C程序控制台在执行后立即退出?

C程序控制台在执行后立即退出?,c,C,我使用Code::Blocks进行编程,是的,我是一名初学者,但每次我编写程序时,它都会在IDE中暂停,但在直接执行时不会暂停 可能的原因是什么?谁能给我解释一下吗 我的代码如下: #include <stdio.h> void main() { float length,breadth,Area; printf("Enter the value of length and breadth \n\n"); scanf("%f %f",&length,&

我使用Code::Blocks进行编程,是的,我是一名初学者,但每次我编写程序时,它都会在IDE中暂停,但在直接执行时不会暂停

可能的原因是什么?谁能给我解释一下吗

我的代码如下:

#include <stdio.h>
void main()
{
    float length,breadth,Area;
    printf("Enter the value of length and breadth \n\n");
    scanf("%f %f",&length,&breadth);
    printf("You entered length=%f and breadth=%f \n\n",length,breadth);
    Area= length * breadth;
    printf("The area of the rectangle is %f\n\n",Area);
    return 0;
}
#包括
void main()
{
浮子长度、宽度、面积;
printf(“输入长度和宽度的值\n\n”);
扫描频率(“%f%f”、&长度和宽度);
printf(“您输入了长度=%f和宽度=%f\n\n”,长度,宽度);
面积=长度*宽度;
printf(“矩形区域为%f\n\n”,区域);
返回0;
}

您必须告诉您的程序在最后等待输入,否则它将执行,完全按照您在代码中编写的操作并退出。“好”的方法是从终端执行它(如果您在windows上,则为cmd)

#包括
int main()
{
浮子长度、宽度、面积;
printf(“输入长度和宽度的值\n\n”);
扫描频率(“%f%f”、&长度和宽度);
getchar();//从stdin捕获\n
printf(“您输入了长度=%f和宽度=%f\n\n”,长度,宽度);
面积=长度*宽度;
printf(“矩形区域为%f\n\n”,区域);
getchar();//等待密钥
返回0;
}
为什么在scanf()之后需要getchar()?


当您输入数字时,按enter键即可完成。让我们看看您正在阅读的内容:一个浮点数空格和另一个浮点数。
\n
不会被
scanf()
使用,而是留在输入缓冲区中(
stdin
)。下次使用从
stdin
读取的函数时,该函数看到的第一个符号是
\n
(回车)。要从输入缓冲区中删除此
\n
,必须在
scanf()
之后调用
getchar()
,从输入缓冲区读取1个字符。我相信你将来会更经常遇到这种行为。

作为一种非常非常糟糕的做法,你可以使用getch调用来停止执行(或任何产生小暂停的函数,getch不是标准函数)。

程序在执行后不应该暂停,这是IDE添加的一项功能。如果希望执行暂停并等待输入,则应指示执行暂停并等待输入。例如,如果您在windows上,则可以添加一行:

system("pause");
就在
之前返回0。这是不可取的,但在某些情况下可能有助于调试。标准还要求您的主函数是int,而不是void。因此,您最好习惯于编写
intmain
,而不是
voidmain

您需要使用getch();在程序结束时(返回语句之前)

Getch按住输出屏幕。

这是一个控制台应用程序。这意味着要从控制台运行。和
main
必须返回
int
。下次请使用适当的格式。您可以突出显示代码并单击“代码”按钮,而不是在每行代码后键入

,这就是控制台应用程序的工作方式!如果我键入了ls,它列出了当前目录中的文件,然后等待输入,我会非常恼火。是IDE在程序完成后暂停。这与你的程序无关。@mistgeek,打开一个终端,键入
/
。瞧,最后没有结束。仍然没有解决:(控制台立即退出??这可能是由您的scanf()造成的。scanf()很可能将输入缓冲区中的\n(Enter)保留下来,然后被最后一个getchar捕获。我对我的帖子进行了编辑。这样试试。是的,您帮了我,谢谢,但您能解释一下为什么使用getchar()吗在中间和最后一个??这不会在版本的Windows上执行任何问题吗?@ @ MISGEKE,这是在他的代码评论中提到的,是的,但确实是有必要的,为什么它会有所不同??是的,谢谢,我会记住这一点:“但是请帮我解决这个问题?”您可以使用getch();在返回之前的程序结束时,也可以从标准命令行运行程序。它应该运行,然后返回提示。嗯,谢谢你的帮助,但是有人帮助了我,但是谢谢你男人:)谢谢你帮助了我:)但是我有一个问题??如果我执行,系统(“暂停”)是否在所有Windows操作系统上工作???@mistgeek,是的does@mistgeek是的,它有效。不过,这在linux系统上不起作用是的,谢谢你,伙计,我对linux系统一无所知:)它在Windows上不能可靠地工作。用户可以很容易地替换
暂停
实用程序,或者首先找到另一个
暂停
程序。-1这已被NightWalkery作为答案发布。
system("pause");