【发布时间】:2019-02-17 16:58:34
【问题描述】:
我正在尝试分别打印每个字符并在它们之间设置延迟,因此当我运行循环时,不是立即打印每个字符,而是一次打印一个字符。
我们的目标是让一个字符串一次打印出一个字母,并且看起来像是由程序输入的。
我使用了我在互联网上找到的延迟代码,它应该在字符打印之间产生时间延迟。
#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 秒并打印出所有内容。
【问题讨论】:
-
这种技术被称为忙等待,它不必要的粗暴和CPU密集型,导致电池耗尽。您应该改用
sleep(1),它可以有效地挂起线程。在printf()之后添加fflush(stdout);将解决增量问题。
标签: c