首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C語言main函數參數實戰:命令行參數解析、密碼驗證與圖形繪製綜合案例

     編輯:關於C語言

main 函數參數:程序與外部環境交互的接口

標準 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();
}

關鍵技術點解析

  1. 指針數組存儲:argv 為 char* 數組,每個元素指向一個以 \0 結尾的字符串(見圖 6-16/6-18)。
  2. 字符串比較:strcmp(argv[1], "pass") 返回 0 表示相等。
  3. 字符串轉整數:atoi() 將 argv[2..4] 轉為整型參數。
  4. 圖形庫初始化:initgraph 自動檢測驅動/模式,DETECT 讓系統選擇最佳模式。
  5. 極坐標轉屏幕坐標:x = r*cos(θ)+x0, y = r*sin(θ)+y0 實現圓周運動軌跡。

運行效果

  • 密碼錯誤 → 顯示 "password error!" 退出。
  • 密碼正確 → 進入圖形模式,繪製由小圓組成的大圓環軌跡,背景色由參數指定,按任意鍵返回文本模式。

此案例完整演示了:命令行參數解析、字符串處理、簡單安全驗證、圖形庫初始化與繪製、數學函數應用。掌握 argc/argv 機制,能讓你的程序靈活接收外部配置,實現腳本化、自動化調用。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved