C語言中的命令列引數

固步自封發表於2014-04-01

C語言中的命令列引數

本節工作目錄:/home/song/project/c02

命令列引數就是主函式main的引數argc和argv,其中argc為整型,表示引數的總數量;argv為字串陣列,存貯引數的具體內容。

測試命令列引數(一)

編輯原始碼argv.c,內容如下:

#include <stdio.h>

int
main(int argc, char *argv[])
{
  int i;

  printf("引數總數量為:%d\n", argc);
  printf("命令名為:%s\n", argv[0]);

  for(i=1; i<argc; i++) {
    printf("引數%d為%s\n", i, argv[i]);
  }

  return 0;
}

編譯,輸入命令:gcc argv.c -o argv

song@song-Inspiron-N4030:~/project/c02$ gcc argv.c -o argv

執行,輸入命令:./argv aaa bbb ccc

song@song-Inspiron-N4030:~/project/c02$ ./argv aaa bbb ccc
引數總數量為:4
命令名為:./argv
引數1為aaa
引數2為bbb
引數3為ccc

說明,即使不加引數,只單獨執行命令./argv,也會輸出:

song@song-Inspiron-N4030:~/project/c02$ ./argv
引數總數量為:1
命令名為:./argv

也就是說argv[0]使終是程式名稱。

測試命令列引數(二)

如此,我們可以通過限定argc的大小來限定引數的個數,達到不加引數不繼續執行的目的。比如說我們要求程式執行時必需加一個引數,則argc必需要大於等於2,否則說明命令列沒有加引數,提示需要使用者加一個引數。

編輯原始碼argt.c,內容如下:

#include <stdio.h>

int
main(int argc, char *argv[])
{
  if(argc<2) {
    printf("注意:請在命令列中加一個引數,否則不能繼續執行!\n");
    return 1;
  }
  printf("引數是:%s,開始工作......\n", argv[1]);
  return 0;
}

編譯,輸入命令:gcc argt.c -o argt

song@song-Inspiron-N4030:~/project/c02$ gcc argt.c -o argt

執行,輸入命令:./argt

song@song-Inspiron-N4030:~/project/c02$ ./argt
注意:請在命令列中加一個引數,否則不能繼續執行!
song@song-Inspiron-N4030:~/project/c02$ ./argt aha
引數是:aha,開始工作......

main函式還可以有第三個引數char *env[],貯存著當前執行環境的的環境變數,下一次我們來測試一下。

相關文章