参加在线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;
}
答案 0 :(得分:8)
您的代码在我的Visual Studio 2010和Linux / GCC下按预期工作,开头是#include <stdio.h>
。但是,我不知道你的开发环境是什么。
尝试在第一个fflush(stdout);
之后插入printf
。
这种行为在Eclipse中很有名(参见https://bugs.eclipse.org/bugs/show_bug.cgi?id=173732)。
Eclipse CTD开发人员Anton Leherbauer在此给出了一些解释:
问题是:eclipse控制台不是终端。在unix系统上, 选择的方法是创建一个伪终端(pty)并连接孩子 处理stdio到它。这样子进程的行为完全相同 就像在互动终端中一样。 CDT完全适用于Linux,Mac OS X, Solaris和其他一些受支持的平台。我们没有Pty(或其他东西 在Windows上,因此交互式控制台模式程序不会 按预期工作。
[...]
Eclipse无法刷新它无法控制的缓冲区。 刷新“\ n”将表示行缓冲模式,这在我试图解释的Windows上目前是不可能的。