2014-05-13 53 views
0
#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

回答

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;