以下代码有什么问题?

时间:2014-05-13 15:43:16

标签: c eclipse

#include <stdio.h>

enum { max_size_string = 127 };
static char string[max_size_string + 1] = " ";

int main( int argc, char ** argv ) {
    printf("Type a string");
    fgets(string, max_size_string, stdin);
    printf("The string is %s",string);
    return 0;
}

在控制台屏幕中,键入字符串后输入字符串,之后,其他printf正在打印输出。我无法理解执行的顺序。

enter image description here

1 个答案:

答案 0 :(得分:3)

我认为问题是printf()缓冲输出直到

  • 它得到一个结尾(\n
  • fflush(stdout)
  • 关闭流(包括程序退出时自动关闭)

查看以下内容是否更有意义

printf("Type a string ");
fflush(stdout);
fgets(string, max_size_string, stdin);
printf("The string is %s\n",string); // << Note I've added a line ending
return 0;