0

参加在线 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;
}
4

1 回答 1

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 和其他一些受支持的平台上完全可以做到这一点。我们在 Windows 上没有 Pty(或类似的东西),因此交互式控制台模式程序无法按预期工作。

[...]

Eclipse 无法刷新它无法控制的缓冲区。在“\n”上刷新将表示行缓冲模式,正如我试图解释的那样,这在 Windows 上目前是不可能的。

于 2013-07-03T09:33:29.123 回答