gpt4 book ai didi

c - 在C中使用printf加载点效果

转载 作者:行者123 更新时间:2023-11-30 14:46:44 25 4
gpt4 key购买 nike

我想打印一条简单的加载消息“正在加载...”,其中的点被一个接一个地引入,它们之间有延迟。当显示第三个点时,我想删除这些点并重新开始。

我尝试的代码是:

PRINTF("Loading");
for(int i=0;i<=3;i++){
DelayMs(800);
PRINTF(".");
}
DelayMs(800);
PRINTF("\r ");
PRINTF("\r");

出于某种原因,我的行为很奇怪,但我不知道为什么。我在屏幕上看到的是以下行之一:

          .Loading....
Loading .Loading....

提前谢谢您。

最佳答案

当输出不包含换行符时,使用 fflush(stdout) 强制打印。
格式说明符 %.*s 将输出长度受整数参数限制的字符串。随着每个的增加,打印的点数将从零到三变化。空格将“删除”之前的点,退格键 \b 将删除空格。
在 Linux 上,我使用 sleep 而不是 DelayMS

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

int main( void) {
for ( int loop = 0; loop < 4; ++loop) {
for ( int each = 0; each < 4; ++each) {
printf ( "\rloading%.*s \b\b\b", each, "...");
fflush ( stdout);//force printing as no newline in output
sleep ( 1);
}
}
printf ( "\n");
return 0;
}

关于c - 在C中使用printf加载点效果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51983405/

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