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

时间:2014-07-16 12:08:02

标签: 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,&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;
}

4 个答案:

答案 0 :(得分:6)

你必须告诉程序在最后等待输入,否则它将执行,完全按照你在代码中编写并退出。 &#34;好&#34;方法是从终端执行它(如果你在Windows上,则为cmd)

#include <stdio.h>
int main()
{
    float length,breadth,Area;
    printf("Enter the value of length and breadth \n\n");
    scanf("%f %f",&length,&breadth);
    getchar(); // catch the \n from stdin
    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);
    getchar(); // wait for a key
    return 0;
}

为什么在scanf()之后需要getchar()?

输入数字后,按Enter键即可完成输入。让我们看看你在读什么:浮动空格和另一个浮点数。 \n不会使用scanf(),而是留在输入缓冲区(stdin)中。下次使用从stdin读取的函数时,此函数看到的第一个符号是\n(回车)。要从输入缓冲区中删除此\n,必须在getchar()后从输入缓冲区中读取1个字符后调用scanf()。我确定你将来会更频繁地遇到这种行为。

答案 1 :(得分:3)

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

答案 2 :(得分:3)

程序在执行后不应暂停,这是IDE添加的功能。如果您希望执行暂停并等待某些输入,则应指示它执行此操作。例如,如果您在Windows上,则可以添加一行:

system("pause");

return 0;之前。这是不可取的,但在某些情况下可能会帮助您进行调试。此外,标准要求您的主要功能是int,而不是void。所以你最好习惯于写int main而不是void main

答案 3 :(得分:-2)

你需要使用getch();在程序结束时(返回声明之前) Getch坚持输出屏幕。