问题在C语言中使用'与fgets'printf的'前'的printf'为'与fgets“运行后 [英] Issue in C language using 'fgets' after 'printf' as 'fgets' runs before 'printf'

查看:177
本文介绍了问题在C语言中使用'与fgets'printf的'前'的printf'为'与fgets“运行后的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述


  

可能重复:结果
  <一href=\"http://stackoverflow.com/questions/1716296/why-does-printf-not-flush-after-the-call-unless-a-newline-is-in-the-format-strin\">Why除非换行符是格式字符串的printf确实没有呼叫后冲洗? (C语言)


我使用越来越问题的printf 与fgets 在我的code 的printf 前面然后fget写,但它不运行,它运行后与fgets 运行。

 枚举{max_string = 127};
静态字符字符串[max_string + 1] =;INT主(INT ARGC,字符** argv的){
      的printf(类型的字符串:);
      与fgets(字符串,max_string,标准输入);
      的printf(字符串%S \\ n,字符串);
      返回0;
}


解决方案

做的冲洗标准输出

  fflush(标准输出);

与fgets(...)

 的printf(类型的字符串:);
fflush(标准输出);
与fgets(字符串,max_string,标准输入);

Possible Duplicate:
Why does printf not flush after the call unless a newline is in the format string? (in C)

I am getting a problem using printf and fgets as in my code printf is written earlier then fget but it does not run, it runs after fgets runs.

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

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

解决方案

do a flush of the stdout

fflush(stdout);

before fgets(...)

printf("Type a String: ");  
fflush(stdout);
fgets(string, max_string, stdin); 

这篇关于问题在C语言中使用'与fgets'printf的'前'的printf'为'与fgets“运行后的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆