0

我开始使用 c++ 进行桌面编程,当我运行以下代码时:

   #include <stdio.h>
    int main (int argc, char ** argv){
    enum{ max_string = 127};
    static char string[max_string + 1] = "";

    printf("Type in a line\n");
    fgets(string,max_string,stdin);
    printf("the string is %s\n",string);
    return 0;
}

在 Eclipse 中运行程序时,我没有看到“键入一行”提示。相反,如果我只是输入响应,我会看到我输入的内容,然后是:

Type in a line
the string is Hello World

为什么在我输入之前它不先显示提示“输入一行”?

4

1 回答 1

0

您需要刷新输出缓冲区。我刚刚添加std::cout << std::endl;并包含<iostream>. 我建议你开始使用std::cout而不是printf. 它是类型安全的。我在 Eclipse 内部对此进行了测试,没有刷新,该行不显示,但它确实出现了刷新。

如果你不想搬到<iostream>我刚刚测试过 fflush(stdout)的地方<stdio.h>,它也可以。但是,我强烈鼓励这一举措,stdio.h 是 C 的标准,iostream 是 C++ 的标准,而且因为您正在学习 C++...

于 2013-04-27T02:13:52.780 回答