2
int main() {
    int i;
    char words[] = "Hello this is text.\n";
    for(i = 0; i < strlen(words); i++) {
        sleep(1);
        putchar(words[i]);
    }
}

我一直在尝试让程序缓慢地将文本逐个字符地输出到控制台中(看起来像是有人在输入它)。但是,当我运行此代码时,我会出现一个巨大的停顿,然后它会立即打印整个字符串。我怎样才能让它工作。

(也请不要使用 C++ 解决方案)

4

2 回答 2

4

stdio被缓冲以提高效率,写入单个字符不足以让它将其缓冲区写入控制台。您需要刷新标准输出:

#include <stdio.h>

int main() {
    int i;
    char words[] = "Hello this is text.\n";
    for(i = 0; i < strlen(words); i++) {
        sleep(1);
        putchar(words[i]);
        fflush(stdout);
    }
}
于 2016-07-27T06:22:40.933 回答
3

这是因为标准输出默认是行缓冲的。

在每个字符之后刷新输出,如下所示:

putchar(words[i]);
fflush(stdout);  //<---
于 2016-07-27T06:22:36.360 回答