標準 main(int argc, char *argv[]) 讓程序接收命令行參數:
argc:參數個數(含程序名)。argv[0]:程序名,argv[1...]:實際參數字符串。參數以字符串形式傳遞,數值需用 atoi()、atof() 轉換。
基於 Turbo C 圖形庫,命令行格式:
program_name pass r1 rs color
// 例:l6-30 pass 20 40 3
#include
#include
#include
#include
#define PI 3.1415926
main(argc, argv)
int argc; char *argv[];
{
int x, y, r1, rs, color;
double a;
int gdriver=DETECT, gmode;
// 1. 密碼驗證
if(strcmp(argv[1], "pass") != 0) {
printf("password error!\n");
exit(0);
}
// 2. 圖形初始化
initgraph(&gdriver, &gmode, "..\\bgi");
r1 = atoi(argv[2]); // 大圓半徑
rs = atoi(argv[3]); // 小圓半徑
color = atoi(argv[4]); // 背景色
cleardevice();
setbkcolor(color);
setcolor(4); // 紅色前景
// 3. 繪製圓環軌跡
for(a=0; a<=2*PI; a+=PI/18) {
x = r1*cos(a) + 320; // 屏幕中心(320,240)
y = r1*sin(a) + 240;
circle(x, y, rs); // 繪製小圓
}
getch();
closegraph();
}
argv 為 char* 數組,每個元素指向一個以 \0 結尾的字符串(見圖 6-16/6-18)。strcmp(argv[1], "pass") 返回 0 表示相等。atoi() 將 argv[2..4] 轉為整型參數。initgraph 自動檢測驅動/模式,DETECT 讓系統選擇最佳模式。x = r*cos(θ)+x0, y = r*sin(θ)+y0 實現圓周運動軌跡。此案例完整演示了:命令行參數解析、字符串處理、簡單安全驗證、圖形庫初始化與繪製、數學函數應用。掌握 argc/argv 機制,能讓你的程序靈活接收外部配置,實現腳本化、自動化調用。