为什么C应用程序先不打印消息,然后接受用户输入

时间:2019-02-03 17:48:50

标签: c eclipse fgets

我正在尝试编写一个打印提示并接受用户输入的c应用程序。我用fgets()编写了一个简单的程序,但是它确实工作正常。我正在使用eclipse c / c ++工具包。当我保存>构建>运行时,控制台保持空白。如果输入一些信息,程序将运行。首先打印printf,然后打印我输入的输入。我尝试运行在Web上找到的示例程序,但是它遇到了同样的问题。有人对为什么有任何想法吗? 我想要得到的是: “你是谁?” 输入=“大米” “很高兴见到你米饭”

谢谢。

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

int main(void) {

    char name[10];
    printf("Who are you? ");
    fgets(name,10,stdin);
    printf("Glad to meet you, %s",name);
    return(0);
}   

2 个答案:

答案 0 :(得分:2)

问题是您尚未刷新输出缓冲区。如果输出未以换行符结尾,则在这种情况下,它可以保持缓冲状态:

printf( "Who are you? " ) ;
fflush( stdout ) ;

应该解决该问题。

答案 1 :(得分:1)

我将您的代码未更改地粘贴到一个空白文件中,在Ubuntu上使用gcc对其进行了编译,并且其运行完全符合您的要求:

j@j:~/Desktop/C$ make

gcc -Wall -Wextra -Werror -g 1.c -o 1 -lm

j@j:~/Desktop/C$ ./1

Who are you? rice

Glad to meet you, rice

这肯定是Eclipse IDE设置环境,操作系统等问题。
C代码本身很好。