Printf doesnt pop

Printf doesnt pop

本文关键字:pop doesnt Printf      更新时间:2023-10-16

我是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.

有人能帮我吗?

您的标准输出流似乎是行缓冲的,这意味着您打印的文本在打印完一整行之后才会出现。如果您正在向交互式设备写入,则应该不缓冲;也许有什么东西阻止了系统意识到输出设备是交互式的。

添加

fflush(stdout);

在您的第一个printf之后,应该强制立即出现"Type a string: "提示(即使您的输出没有缓冲,fflush(stdout)也是无害的)。

我正要建议将您的第二个printf从:更改为

printf("The string is %s", string);

至:

printf("The string is %sn", string);

以确保程序的输出以换行符结束(如果不是的话,有些系统可能会表现错误)——但fgets()实际上会将换行符留在字符串中(除非输入行很长)。最终你会希望能够处理这种事情。