作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 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;
}
最佳答案
您必须告诉您的程序在最后等待输入,否则它将执行,完全按照您在代码中编写的操作然后退出。 “好”的方法是从终端执行它(如果你在 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 键即可完成。让我们看看您正在阅读的内容:一个 float 空白和另一个 float 。 \n
不会被 scanf()
使用,而是留在输入缓冲区 (stdin
) 中。下次使用从 stdin
读取的函数时,该函数看到的第一个符号是 \n
(Enter)。要从输入缓冲区中删除此 \n
,您必须在 scanf()
之后调用 getchar()
,它会从输入缓冲区读取 1 个字符。我相信您将来会更频繁地遇到这种行为。
关于C程序执行后控制台立即退出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24780415/
我是一名优秀的程序员,十分优秀!