gpt4 book ai didi

c - 我只想显示 printf 5 秒

转载 作者:行者123 更新时间:2023-11-30 20:52:39 25 4
gpt4 key购买 nike

我只想在命令中显示“printf”5秒,我在网上找不到它。如果您能抽出时间回答像我这样的学徒,非常感谢! (CLION 控制台)

int main()
{
srand(time(NULL));
int a=0;
int b=0;
int c=0;
int d=0;
int e=0;

int ar=0;
int br=0;
int cr=0;
int dr=0;
int er=0;

a=rand()%1000+1;
b=rand()%1000+1;
c=rand()%1000+1;
d=rand()%1000+1;
e=rand()%1000+1;

printf("La suite à rentenir est :\n%d %d %d %d %d\n",a,b,c,d,e); <---- The printf I only want to show during 5 seconds


scanf("%d",&ar);
scanf("%d",&br);
scanf("%d",&cr);
scanf("%d",&dr);
scanf("%d",&er);

if (ar==a && br==b && cr==c && dr==d && er==e)
printf("BRAVO");
else
printf("TU AS PERDU");

return 0;

}

"

最佳答案

在下面的代码中,打印“message”,然后将其删除

#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>

int main()
{
printf("message"); fflush(stdout);
sleep(5);
printf("\r \r"); fflush(stdout);
return 0;
}

请注意,根据您使用的系统 sleep 库变化。在 Windows 上我认为是 windows.h而不是unistd.h .

使其工作的关键部分是转义码 \r它将光标返回到行的开头。我在代码中放入了两次。首先,让空格覆盖消息。第二次,使光标留在行的开头,准备下一步。

请注意,通常在 C 中,不会用 printf 打印内容。直到我们得到一个换行符,即 \n 。在这个程序中,我们通过使用 fflush(stdout) 来解决这个问题。这会强制所有内容立即打印在屏幕上,而无需等待 \n 。当然,我们不想在这里换行,因为我们希望保持在同一行,以便我们可以返回到行的开头并用空白字符覆盖“消息”。

这是怎么做的原理......

将您的代码粘贴到问题中...

printf("La suite à rentenir est :\n");
printf("%d %d %d %d %d",a,b,c,d,e); fflush(stdout);
//<---- The printf I only want to show during 5 seconds
sleep(5);
printf("\r \r"); fflush(stdout);

这意味着要记住的数字系列 (La suite àrentenir) 仅显示五秒钟。

@chux 的评论中的一个很好的建议是测量打印文本的长度,然后在长度上打印空格。代码是int len = printf("message"); .... printf("\r%*s\r", len, "");添加此内容后,上面的示例代码将变为

#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>

int main()
{
int len = printf("message: hello world"); fflush(stdout);
sleep(5);
printf("\r%*s\r", len, "");
return 0;
}

此改进意味着无论消息长度如何,都将打印正确数量的空格以将其删除。

关于c - 我只想显示 printf 5 秒,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58769522/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com