获取文本在C中逐字符打印

时间:2016-07-27 06:18:50

标签: c console-output

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

我一直试图让程序慢慢地逐字输出文本到控制台中(看起来好像有人正在输入它)。然而,当我运行此代码时,我得到一个大的暂停,然后它立即打印整个字符串。我如何让它工作。

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

2 个答案:

答案 0 :(得分: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);
    }
}

答案 1 :(得分:3)

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

在每个字符之后刷新输出:

putchar(words[i]);
fflush(stdout);  //<---