【发布时间】:2021-06-09 10:51:12
【问题描述】:
我想打印一行,然后在十秒钟后将其擦除。
所以我认为我应该编写一个计时器作为初步程序,并在以后使用我在互联网上找到的任何内容进行擦除(例如使用\r)。
所以我想打印“我爱玉米片”,十秒钟后打印“我讨厌玉米片”。
然而,即使printf("I love nachos") 写在任何条件之前,程序也会在十秒后打印这两个字符串。
#include <stdio.h>
#include <time.h>
int main(void) {
printf("I love nachos");
time_t now = time(NULL);
while (1)
{
time_t future = time(NULL);
if ((future-now)==10)
{
break;
}
}
printf("I hate nachos");
return 0;
}
我请朋友解决这个问题,他写道:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
printf("Start\n");
time_t t0 = time(NULL);
while ( (difftime(time(NULL), t0)) <= 10.0 )
{}
printf("End");
return 0;
}
但是,在这种情况下,该程序仅适用于 printf("Start\n") 中的 \n。
如果我删除\n,我会得到与我的初始代码相同的结果,我显然不希望\n在那里,因为我无法用\r删除该行
【问题讨论】:
-
我建议不要在循环中忙于等待,而是使用
sleep/nanosleep(POSIX) 或Sleep(Windows) 之类的函数