在C語(yǔ)言中,使用printf函數(shù)實(shí)現(xiàn)簡(jiǎn)單的進(jìn)度條效果可以通過(guò)以下步驟完成:
下面是一個(gè)簡(jiǎn)單的示例代碼:
#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; // 當(dāng)前進(jìn)度(0-100)
float total_time = 10.0; // 假設(shè)總時(shí)間為10秒
time_t start_time = time(NULL);
while (progress <= 100) {
// 計(jì)算已經(jīng)過(guò)去的時(shí)間
double elapsed_time = difftime(time(NULL), start_time);
progress = (int)(elapsed_time / total_time * 100);
// 計(jì)算需要輸出的空格數(shù)和"#"字符數(shù)
int spaces = (BAR_WIDTH - progress / 5) / 2;
int hashes = progress / 5;
// 輸出進(jìn)度條
printf("\r進(jìn)度: |%*s%*s| %d%%", spaces, " ", hashes, " ", progress);
fflush(stdout); // 確保光標(biāo)位置立即更新
// 等待一段時(shí)間
usleep(100000); // 等待100毫秒
}
printf("\n"); // 輸出換行符
return 0;
}
這個(gè)示例代碼會(huì)在控制臺(tái)上輸出一個(gè)動(dòng)態(tài)更新的進(jìn)度條,模擬一個(gè)耗時(shí)任務(wù)的進(jìn)度。