在使用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输出:
Visual Studio输出:
谢谢,,,
答案 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?