使用C和C++的输出流向调用的进程返回字符串时,C++代码在调用std::endl后会输出,而printf则一直到子进程退出才有输出。
查看std::endl后,发现起作用的是std::cout.flush();在起作用。为了使C语言输出流也能正常向调用者返回字符串,需要找到C中的flush函数。C语言的flush函数为fflush,在stdio.h下,用法为fflush(stdout)。
在cmd、Codeblocks、VS等环境下运行控制台程序时不需要fflush也能正常输出,但在eclipse cdt环境下,则必须使用fflush(stdout),否则不能正常输出。