编译C程序后Eclipse CDT意外输出

时间:2015-07-29 16:22:39

标签: c gcc eclipse-cdt

在使用GCC 5.1.0编译器的eclipse CDT上尝试此代码时 用户输入后打印所有字符串。 即使使用Windows CMD,也可以在Visual Studio和代码块IDE上进行编译。程序运行正常,符合预期。

‪#‎include‬ <stdio.h>
static char string[128] = "";
int main() {
printf("Type a string: ");
scanf("%s",string);
printf("The String is %s", string);
return 0;
}

Eclipse输出:

enter image description here

Visual Studio输出:

enter image description here

谢谢,,,

1 个答案:

答案 0 :(得分:2)

好的,我现在看到了。我认为问题在于,只要您想确定某些内容是由代码中的给定点打印出来的,那么您需要在此时刷新stdout

否则,流内容可以按照与实现相关的方式排队并传递(通常是小批量)

C标准库的printf()在输出到stdout并遇到换行符\n时会提供隐式刷新,因此您无需自己调用flush() 。而对于C ++的std::cout,只有std::endl具有此属性; \n无法保证。

故意在C中刷新stdout可以这样做:fflush(stdout);

另请参阅:Why does printf not flush after the call unless a newline is in the format string?