程序打印进度条, linux c

发布时间 2024-01-12 10:49:03作者: 看星星的派大星

函数如下:

 

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

typedef struct _progress
{
    int cur_size;
    int sum_size;
}progress_t;

void progress_bar(progress_t *progress_data)
{
    int percentage = 0;
    int cnt = 0;
    char proc[102];

    memset(proc, '\0', sizeof(proc));

    percentage = (int)(progress_data->cur_size * 100 / progress_data->sum_size);
    printf("percentage = %d %%\n", percentage);

    if (percentage <= 100)
    {
        while (cnt <= percentage)
        {
//最关键的是这一句打印,相当于 再不断的重新刷新 进度条。
printf(
"[%-100s] [%d%%]\r", proc, cnt); // 直接将pritnf 显示出来。
fflush(stdout); proc[cnt]
= '#'; usleep(100000); cnt++; } } printf("\n"); } int main(int arc, char *argv[]) { progress_t progress_test = {0}; progress_test.cur_size = 65; progress_test.sum_size = 100; progress_bar(&progress_test); return 0; }