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