C语言编程中如何使用\r回车return延迟?
How to use the \r carriage return character with a delay in C programming?
我正在开始使用 C 编程,我正在尝试解决我正在学习的书中的练习课。我需要做的任务是向终端打印一行,然后等待 2 秒,2 秒后 return 将光标移至终端中行的开头并替换,用其他内容覆盖该行。
书中的示例代码包含许多我还需要完成的其他任务的样板代码,现在我正在尝试自己隔离并解决第一个问题,但它不起作用,我也不知道不明白为什么。
这是我正在尝试的代码:
#include "stdio.h"
#include "time.h"
int main() {
const int DELAY = 2;
time_t wait_start = 0;
printf("We print this then wait 2 seconds");
//delay by repeating this empty for loop
wait_start = clock(); //the time when we start the delay and subtract this from the current time returned by clock()
for ( ; clock() - wait_start < DELAY * CLOCKS_PER_SEC; );
printf("\r");
printf("We did return the cursor to the beginning and print this after 2 seconds");
return 0;
}
我想要的是打印第一行,等待 2 秒然后覆盖,用第二行替换第一行。
然而,当我执行这段代码时,尽管有延迟,它似乎 return 立即将光标移动到行的开头,并且它不会将第一行打印到终端,但是2 秒后它不打印第二行。
谁能帮我解释一下为什么会这样以及如何解决?
谢谢。
当您使用 printf 时,您写入标准输出缓冲区。它不必立即显示,除非您刷新它(使用 fflush()
)或您写一个换行符(\n
),这会有效地刷新它。
我正在开始使用 C 编程,我正在尝试解决我正在学习的书中的练习课。我需要做的任务是向终端打印一行,然后等待 2 秒,2 秒后 return 将光标移至终端中行的开头并替换,用其他内容覆盖该行。
书中的示例代码包含许多我还需要完成的其他任务的样板代码,现在我正在尝试自己隔离并解决第一个问题,但它不起作用,我也不知道不明白为什么。
这是我正在尝试的代码:
#include "stdio.h"
#include "time.h"
int main() {
const int DELAY = 2;
time_t wait_start = 0;
printf("We print this then wait 2 seconds");
//delay by repeating this empty for loop
wait_start = clock(); //the time when we start the delay and subtract this from the current time returned by clock()
for ( ; clock() - wait_start < DELAY * CLOCKS_PER_SEC; );
printf("\r");
printf("We did return the cursor to the beginning and print this after 2 seconds");
return 0;
}
我想要的是打印第一行,等待 2 秒然后覆盖,用第二行替换第一行。
然而,当我执行这段代码时,尽管有延迟,它似乎 return 立即将光标移动到行的开头,并且它不会将第一行打印到终端,但是2 秒后它不打印第二行。
谁能帮我解释一下为什么会这样以及如何解决?
谢谢。
当您使用 printf 时,您写入标准输出缓冲区。它不必立即显示,除非您刷新它(使用 fflush()
)或您写一个换行符(\n
),这会有效地刷新它。