3

C++ 有std::endl. 有谁知道 C 中有什么可以用来做这个的吗?

4

3 回答 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 回答