本文轉(zhuǎn)自徐飛翔的“[C語言朝花夕拾] C語言中的命令行輸入?yún)?shù)判斷”
版權(quán)聲明:本文為博主原創(chuàng)文章,遵循 CC 4.0 BY-SA 版權(quán)協(xié)議,轉(zhuǎn)載請附上原文出處鏈接和本聲明。
在C語言中,我們的函數(shù)入口經(jīng)常會有:
int main(int argc, char** argv) {
...
return 0;
}
類似這樣的傳入?yún)?shù),這類型的參數(shù)是為了,用戶在利用命令行調(diào)用該程序的時候,能夠傳入適合的參數(shù)去控制程序的特定行為。例如,假如現(xiàn)有程序:
#include <stdio.h>
int main(int argc, char** argv) {
printf("number of arg %d\r\n", argc);
int i = 0;
for (;i < argc;++i) {
printf("params = %s\r\n", argv[i]);
}
}
其中的a
rgc
是英文arguments counts
,即是參數(shù)計數(shù)的簡稱;argv
是arguments value
,即是參數(shù)值的簡稱。假如以上的程序命名為test
,那么編譯完后,運行以下命令行:
./test -gpus 0,1,2,3
該命令的意圖在于指定特定的gpu列表,那么將會輸出:
number of arg 3
params = -gpus
params = 0,1,2,3
其中參數(shù)計數(shù)為3的原因是需要將./test
計入在數(shù),而-gpus
,0,1,2,3
等分別用空格隔開的看成是不同的參數(shù),都是字符串的格式(也即是char*
),需要后續(xù)用特定程序去處理和解析。