我是c +编程的新手,我在lynda.com教程后面临一个问题。教程视频似乎没问题,但这不适合我。
#include <stdio.h>
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", string);
return 0;
}
当我跑步时,出现这样的空白,当我在毯子空间中找到像“嘿”这样的东西时,我需要这样做:
hey
Type a string: The string is hey
这对我来说很奇怪,我不知道我做错了什么。 我正在使用Eclipse btw。
有人可以帮助我吗?
答案 0 :(得分:2)
您的标准输出流似乎是行缓冲的,这意味着在您打印完整的行之前,您打印的文本不会显示。如果您正在写入交互式设备, 应该无缓冲;或许某些事情阻止系统意识到输出设备是交互式的。
添加
fflush(stdout);
在您的第一个printf
应该强制立即显示"Type a string: "
提示后(即使您的输出未缓冲,fflush(stdout)
也无害)。
我打算建议您更改第二个printf
:
printf("The string is %s", string);
为:
printf("The string is %s\n", string);
确保程序的输出以换行符结束(如果不是,某些系统可能会出现异常) - 但fgets()
实际上会在换行符中留下换行符(除非输入行很长)。最终你会想要处理那种事情。