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

C 語言 main 函數 argc/argv 參數完整指南:從入門到實戰

     編輯:關於C語言
 

參數原型與含義

int main(int argc, char *argv[])
  • argc (argument count):命令行參數總數,包含程序名,最小值為 1。
  • argv (argument vector):字符串指針數組,argv[0] 為程序路徑/名稱,argv[1]...argv[argc-1] 為實際參數,argv[argc] == NULL。

具體示例

命令行輸入argcargv 內容
./prog1argv[0]="./prog"
./prog para12argv[0]="./prog", argv[1]="para1"
./prog "a b" c3argv[0]="./prog", argv[1]="a b", argv[2]="c"

引號可包含空格,Shell 會將其視為單個參數傳遞。

進階:環境變量參數 envp

部分實現(如 Turbo C、Linux)支持第三參數:

int main(int argc, char *argv[], char *envp[])
  • envp 為 NAME=VALUE 格式的環境變量數組,以 NULL 結尾。
  • 標準 C 不保證此參數,可移植代碼請用 getenv()。

實戰代碼模板

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[]) {
    if (argc < 2) {
        fprintf(stderr, "Usage: %s  [arg2...]\n", argv[0]);
        return EXIT_FAILURE;
    }
    for (int i = 1; i < argc; ++i) {
        printf("Arg %d: %s\n", i, argv[i]);
    }
    return EXIT_SUCCESS;
}

常見坑點提示

  • argv 字符串不可修改:某些系統將其置於只讀段,嘗試修改導致段錯誤。
  • 參數總長度限制:Linux 通常為 ARG_MAX (128KB+),Windows 命令行 8191 字符。
  • argv[0] 不一定是完整路徑:視 Shell 與調用方式而定,跨平台勿依賴。

總結

掌握 argc/argv 是編寫專業命令行工具的基石。理解其內存佈局、Shell 解析規則、跨平台差異,能讓你的程序更健壯、更易用。

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