最近想寫個控制台下的進度條,可以知道程式的進展情況,不用弄個界面。其中最主要的就是“/b“字元,它的ascii碼值是10,是倒退的意思。
現把代碼貼上,如下(可以在vc和linux編譯):
progress.c
#include #ifdef _WIN32 #include #define mysleep(n) Sleep(n*1000) #else #include #define mysleep(n) sleep(n) #endif void progressBar(int n) { static int currentNumber = 0; if(n <= currentNumber) return; currentNumber = n; if (n == 1) { currentNumber = n; printf("= %d",n); fflush(stdout); return; } if(n<11) printf("/b/b/b"); else printf("/b/b/b/b"); printf("= "); printf("%d", n); fflush(stdout); } int main() { int i; for (i = 1; i <= 100; ++i) { progressBar(i); mysleep(1); } printf("/n"); return 0; }
編譯:
linux下:
gcc progress.c -o progress
在windows下:
vc下建一個progress工程,然後把代碼貼上編譯。
下圖是windows下編譯的截圖:
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLicmbw5COmZjM4YmZ5ADZ5EGM5QWY2MWZhdjYyMjN2QjYhFDM48CX0JXZ252bj91Ztl2Lc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
另外,加個windows2000啟動時的一個進度的效果:
#include #ifdef _WIN32 #include #define mysleep(n) Sleep(n*1000) #else #include #define mysleep(n) sleep(n) #endif int main() { int i; for (i = 1; i <= 100; ++i) { printf("="); } fflush(stdout); for (i = 1; i <= 100; ++i) { printf("/b"); } for (i = 1; i <= 100; ++i) { printf(">"); fflush(stdout); mysleep(1); } printf("/n"); return 0; }
windows和linux下都可以編譯,下圖是linux下的截圖: