如何在字符串打印循环中打印字符之间延迟?

时间:2019-02-17 16:58:34

标签: c

我试图分别打印每个字符并在它们之间有一个延迟,因此当我运行循环时,不是立即打印每个字符,而是一次打印一个字符。

目标是要有一个字符串,一次可以打印出一个字母,并且看起来程序正在键入它。

我使用了一个代码,用于在Internet上发现的延迟,因为它应该在打印字符之间存在时间延迟。

#include <stdlib.h>    
#include <time.h>    
#include <string.h>    

void delay(unsigned int milliseconds) {    
    clock_t start = clock();    
    while ((clock() - start) * 1000 / CLOCKS_PER_SEC < milliseconds);    
}    

int main() {    
    int c = 0;    
    char s[6] = { 'H', 'e', 'l', 'l', 'o', '\0' };    
    for (c = 0; s[c] != '\0'; c++) {    
        printf("%c", s[c]);    
        delay(1000);    
    }    
    return 0;    
}    

我希望可以一​​次打印每个字母,每个字母之间会有第二个延迟,但是它会等待6秒并打印出所有内容。

1 个答案:

答案 0 :(得分:4)

printf的输出以及写入stdout和其他文件的其他函数可能会被缓冲,因此它们只有在刷新缓冲区后才会显示。

您可以在循环内添加行fflush(stdout),以强制将缓冲区刷新到流,以确保缓冲区中当前存在的所有未决输出将被写出。