在C语言中,使用printf函数实现简单的进度条效果可以通过以下步骤完成:
下面是一个简单的示例代码:
#include <stdio.h>
#include <unistd.h> // for usleep()
#include <time.h> // for time()
#define BAR_WIDTH 50
#define BAR_LENGTH 100
int main() {
int progress = 0; // 当前进度(0-100)
float total_time = 10.0; // 假设总时间为10秒
time_t start_time = time(NULL);
while (progress <= 100) {
// 计算已经过去的时间
double elapsed_time = difftime(time(NULL), start_time);
progress = (int)(elapsed_time / total_time * 100);
// 计算需要输出的空格数和"#"字符数
int spaces = (BAR_WIDTH - progress / 5) / 2;
int hashes = progress / 5;
// 输出进度条
printf("\r进度: |%*s%*s| %d%%", spaces, " ", hashes, " ", progress);
fflush(stdout); // 确保光标位置立即更新
// 等待一段时间
usleep(100000); // 等待100毫秒
}
printf("\n"); // 输出换行符
return 0;
}
这个示例代码会在控制台上输出一个动态更新的进度条,模拟一个耗时任务的进度。