我必须将一定数量的空格打印到标准输出,但这个数量不是固定的。我正在使用 putchar(),但我不确定这是否很快。在 C 中将一定数量的字符打印到 stdout 的最快方法是什么?另外,我无法使用系统功能。
谢谢你的帮助!
我只会使用fwrite. 简单的。正确的。简单的。
void put_spaces(int n)
{
static const char SPACES[32] = " ";
for (; n >= 32; n -= 32)
fwrite(SPACES, 32, 1, stdout);
if (n)
fwrite(SPACES, n, 1, stdout);
}
Run Code Online (Sandbox Code Playgroud)
但请注意,天真的版本也相当快:
void put_spaces(int n)
{
while (n--)
putchar(' ');
}
Run Code Online (Sandbox Code Playgroud)
为什么这么快?在大多数系统上,putchar是一个在大多数情况下直接写入缓冲区的宏。如果您不确定它是否快,正确的答案是分析您的应用程序,而不是“首先优化”。
远离malloc(它只是不必要的),puts('\n'每次调用它时都会添加一个),以及printf(对于这样一个简单的任务来说它太复杂了)。