【发布时间】:2012-09-16 10:01:12
【问题描述】:
C++ 有std::endl。有谁知道 C 中有什么可以用来做这个的吗?
【问题讨论】:
标签: c
C++ 有std::endl。有谁知道 C 中有什么可以用来做这个的吗?
【问题讨论】:
标签: c
std::endl 具有打印换行符'\n' 字符然后刷新输出流的效果。
如果要打印到标准输出,C 等效项是:
putchar('\n');
fflush(stdout);
但在大多数情况下,fflush 是不必要的。
请注意,std::endl不是的目的是提供独立于平台的行尾。字符'\n' 已经是一个独立于平台的行尾。当写入文本流时,它将被转换为平台使用的任何结尾行(\r\n 用于 Windows,\n 用于 Unix,等等)。
【讨论】:
#include <stdio.h>
putchar ('\n'); /* To the stdout stream. */
printf ("\n"); /* Ditto. */
对于任意流fp,
fputc (fp, '\n');
这应该适用于行缓冲和非缓冲流。如果您想立即查看结果,完全缓冲的流需要fflush(NULL)。那么哪个是哪个? C99 标准中的血腥细节:
最初打开时,标准错误流没有完全缓冲; 标准输入和标准输出流是完全缓冲的,如果 并且仅当可以确定流不引用 交互式设备。
【讨论】:
std::endl 刷新流,但在 C 中打印换行符不会这样做。所以你必须使用fflush。
【讨论】: