学习在线C语言课程,当我为其中一道家庭作业题这样做时,它并没有像我预期的那样工作。它应该提示用户输入半径,然后进行计算并打印出答案。它所做的是什么都不打印出来,但是执行得很好,当我输入一个数字时,它就会打印出提示和答案。
基本上,它为什么不提示先做输入,因为它是在代码中写的:
int main(void)
{
float volume, radius;
printf("Enter the radius of the sphere: \n");
scanf("%f", &radius);
volume = (4.0f / 3.0f) * 3.14f * radius * radius * radius;
printf("%.2f", volume);
return 0;
}发布于 2013-07-03 17:33:29
你的代码在我的Visual Studio2010下和Linux/GCC下都能正常工作,开始时使用的是#include <stdio.h>。但是,我不知道您的开发环境是什么。
尝试在第一个printf之后插入fflush(stdout);。
这种行为在Eclipse中也很常见(请参阅https://bugs.eclipse.org/bugs/show_bug.cgi?id=173732)。
Eclipse CTD开发人员Anton Leherbauer在这里给出了一些解释:
问题是: eclipse控制台不是终端。在unix系统上,可以选择的方法是创建一个伪终端(pty)并将子进程stdio连接到它。这样,子进程的行为与交互式终端中的行为完全相同。CDT在Linux、Mac、Solaris和其他一些受支持的平台上完全可以做到这一点。我们在Windows上没有Pty (或类似的东西),因此交互式控制台模式程序不能像预期的那样工作。
..。
Eclipse无法刷新它无法控制的缓冲区。刷新"\n“将指示行缓冲模式,正如我试图解释的那样,这在Windows上是不可能的。
https://stackoverflow.com/questions/17444321
复制相似问题