我试图分别打印每个字符并在它们之间有一个延迟,因此当我运行循环时,不是立即打印每个字符,而是一次打印一个字符。
目标是要有一个字符串,一次可以打印出一个字母,并且看起来程序正在键入它。
我使用了一个代码,用于在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秒并打印出所有内容。
答案 0 :(得分:4)
printf
的输出以及写入stdout
和其他文件的其他函数可能会被缓冲,因此它们只有在刷新缓冲区后才会显示。
您可以在循环内添加行fflush(stdout)
,以强制将缓冲区刷新到流,以确保缓冲区中当前存在的所有未决输出将被写出。