c - 以下代码有什么问题?

标签 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;
}

在控制台屏幕上,输入一个字符串后会出现 Type a string,然后其他 printf 会打印输出。我无法理解执行顺序。

enter image description here

最佳答案

我认为问题是 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;

关于c - 以下代码有什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23635786/

相关文章:

c - 为什么使用文本编辑器创建的文件比预期多了一个字节?

eclipse - Eclipse 3.5 中的文件编码处理

java - 支持 eclipse e4 中 View 的多个实例

c - 与 glibc 有何关系?

java - 如何使用键盘快捷键在 Eclipse 中编译我的代码

java - "//TODO Auto Generated method stub"是什么意思?

java - 当使用 Eclipse 重命名动态 Web 项目的名称并部署在 Glassfish 上时,获取 HTTP 状态 404 - 未找到

c - 用 C 实现 "more filter"

c - C中的i++和++i到底有什么区别?

c - 用C获取我机器的点分十进制IP地址?