SOGO論壇

標題: 命令列參數 [列印本頁]

作者: mm117777    時間: 2012-7-17 09:50:43     標題: 命令列參數



在命令列(DOS視窗或UNIX Shell)下達指令時,常需要告訴該指令一些訊息,如

gcc -c hello.c

告訴gcc我們要編譯的原始檔是hello.c,而且-c說只要編譯不要產生執行檔。這些參數是由Shell(命令解譯程式)透過作業系統傳遞給應用程式的。那麼寫C程式的人要如何得到這些資訊呢?其實我們前面範例裡的main都把一些參數忽略了,完整的寫法應如下:

#include <stdio.h>
int main(int argc, char *argv[]) {
    int i;
    for (i = 0; i < argc; i++) {
        printf("option %i = %s\n", i, argv[i]);
    }
}

如果我們下達a.out one two three則會印出

option 0 = a.out
option 1 = one
option 2 = two
option 3 = three

也就是說參數argc告訴我們命令列上有幾個字串(含執行檔檔名),argv則是個array[] of pointer to char,紀錄命令列上的所有字串。UNIX上有個有趣的指令叫做echo,會把參數全部印出來

>echo a b c
a b c
>


這個程式很容易寫:

#include <stdio.h>
int main(int argc, char *argv[]) {
    int i;
    for (i = 1; i < argc; i++) {
        if (i != 1) {
            printf(" ");
        }
        printf("%s", argv[i]);
    }
    printf("\n");




歡迎光臨 SOGO論壇 (https://oursogo.com/) Powered by OURSOGO.COM