【问题标题】:C console output hidden while awaiting inputC 控制台输出在等待输入时隐藏
【发布时间】:2015-12-25 10:20:39
【问题描述】:

您好,我正在 Eclipse 上尝试一些 C 编码,但遇到了问题:

我正在尝试打印一些文本,但是,在等待用户输入时,文本实际上直到用户输入后才会出现。

这是我的意思的一个例子: 测试

#include <stdio.h>
#include <stdlib.h>

int main(void){

    char c[5];  
    printf("test\n");  //PRINTING 'test' BEFORE i have to enter code    
    fgets(c, 5, stdin);     
    printf("You entered: %s\n", c);

    return 0; 
}

输出:

dog (this is what i typed)
test
You entered: dog

在提示我输入代码之前,“测试”printf 仅在我输入代码之后才出现,而不是出现。

【问题讨论】:

  • char c[5] 应该是char c[5+1]
  • 也许您的环境需要一些时间来加载程序,以便您设法在程序正确启动输出之前编写输入(这似乎不太可能)?稍等片刻,是不是输出还是没有发生?您是否记得在运行程序之前构建程序(如您向我们展示的那样)?您在实际程序中打印的字符串中的换行符是否存在?最后,如果您手动运行程序,而不是在 Eclipse 中运行,您还会遇到同样的问题吗?

标签: c eclipse input console output


【解决方案1】:

可能此要打印的文本仍在缓冲区中等待(这是一种优化,将要写入的数据分组以提高效率)。为了确保缓冲区中的所有内容都输出到控制台,您应该像这样刷新它

fflush(stdout);

或者您可以使用不使用缓冲的函数,例如(在 linux 上)

write()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-21
    相关资源
    最近更新 更多