gpt4 book ai didi

创建加载动画

转载 作者:太空宇宙 更新时间:2023-11-04 04:45:25 25 4
gpt4 key购买 nike

我想用 C 语言创建一个加载器动画。我做不好,所以我尽量保持简单。我试图做这样的事情:首先它会出现:

[                                                                               ]
[| ]
[|| ]

等等……

我想使用 sleep 函数,所以它看起来像是在实际加载但不会太慢,我想添加百分比会很好,如果它是一个 for 循环,其中“i”作为一个整数来计算它的移动,而不是它'将是 printf("i%%"); 因为“%”不会打印“%”而是“%%”。您知道我该怎么做吗?

编辑:这就是我到目前为止所得到的,没有工作是有原因的:

    for(i = 1 ; i <= 100 ; i++)
{
Sleep(10);
printf("\r");
printf("[");
for(j = 1 ; j <= i ; j++)
{
printf("|");
}
}
printf("]");

但它只会打印“[|”然后“[||”然后是“[|||”等等(它也打印了太多“|”)。我希望它打印“[ ]”(100 个空格),然后打印“[| ]”,这样每次都能看到第一个和最后一个括号。

第二次编辑:完成了这个:

void changestr(char str[], int n)
{
str[n] = '|';
}

void loader()
{
int i, j, n = 0;
char str[] = " ";

for(i = 0 ; i < 97 ; i++)
{
printf("\r[%-100s]", str);
changestr(str, n);
n++;
}
}

它正在打印大量的行而不是覆盖第一行....怎么办?

最佳答案

这是一个面向 Windows 的想法:

#include <stdio.h>
#include <windows.h>

#define PROGRESS_BAR_SIZE 40

void print_n_chars(int n, int c) {
while (n-- > 0) putchar(c);
}

void display_progress_bar(int p) {
putchar('\r');
putchar('[');
print_n_chars(PROGRESS_BAR_SIZE * p / 100, '|');
print_n_chars(PROGRESS_BAR_SIZE - PROGRESS_BAR_SIZE * p / 100, ' ');
putchar(']');
}

int main(void) {
int p;
for (p = 0; p <= 100; ++p) {
display_progress_bar(p);
Sleep(100);
}
return 0;
}

如果您这样更改代码,您的代码就可以工作了:

void loader() {
int i;
char str[] = " ";
for(i = 0 ; i <= 40 ; i++) {
printf("\r[%s]", str);
str[i] = '|';
Sleep(100);
}
}

关于创建加载动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21582448/

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