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$
廣告