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),这会有效地刷新它。