C語言筆記-argc argv argument用法

C語言編譯後的程式在命令中使用時,可以輸入多組引數(argument),

什麼是引數呢?

例如最基本的在終端機輸入

$ ping 8.8.8.8

8.8.8.8是google所提供的DNS伺服器IP位址,使用pin 8.8.8.8去取得回應,來測試網路是否正常

ping 就是指令,8.8.8.8就是引數

那我們這邊寫一個基本的程式來看一下怎麼使用,檔案名稱為testArgcv

#include <stdio.h>

int main(int argc, char *argv[]){
    printf("argc = %d\n",argc);
    printf("argv[0] = %s\n",argv[0]);
    printf("argv[1] = %s\n",argv[1]);
    printf("argv[2] = %s\n",argv[2]);
    printf("argv[3] = %s\n",argv[3]);
}

這邊main使用到兩個參數,argc 以及argv[]是C語言內建寫好的。

argc代表argument count,也就是計數,是int型態
argv[] 代表 argument Vector 表示存放參數的向量,也就是陣列的指標,

我們在終端機內輸入./testArgcv 1 2 3
中間以一個空格為間距
就可以看到結果如下:

ubuntu@ubuntu:~/dev/argcv$ ./testArgcv 1 2 3
argc = 4
argv[0] = ./argcv
argv[1] = 1
argv[2] = 2
argv[3] = 3
ubuntu@ubuntu:~/dev/argcv$

argv內共4個引數,argc = 4。

所以我們就可以拿來應用:簡單寫一個判斷累加還是累乘

我的目標是能輸入 ./calculate 10 +

這樣可以計算0+1+2+….+10

輸入 ./calculate 10 x

(這邊不用*因為這是系統保留字,先不處理)

就計算1x2x3x…….x10

然後printf出答案:

int main (int argc, char *argv[])
{
    int number = atoi(argv[1]);
    //argv是個字串,所以還要再多個[0]去抓資料
    char plus = argv[2][0];

    int result = 0;

//判斷第二個引數是 + 還是 x
    switch(plus)
    {
        case '+':
            for (int i = 1; i <= number; i++)
                result = result + i;
            break;
        case 'x':
            result = 1;
            for (int i = 1; i <= number; i++)
                result = result * i;
            break;
        default:
            printf("ERROR");
            break;
    }

    printf("Result: %d\n", result);

}

這樣在終端機輸入

ubuntu@ubuntu:~/dev/accumulation$ ./accumulation 5 +
Result: 15
ubuntu@ubuntu:~/dev/accumulation$ ./accumulation 5 x
Result: 120
ubuntu@ubuntu:~/dev/accumulation$ ./accumulation 1000 +
Result: 500500
ubuntu@ubuntu:~/dev/accumulation$ ./accumulation 10 x
Result: 3628800
ubuntu@ubuntu:~/dev/accumulation$ 
廣告

發表留言