int main(int argc, char* argv[])

這兩個參數的作用是什麼呢?argc 是指命令行輸入參數的個數,argv存儲了所有的命令行參數。
假如你的程式是hello.exe,如果在命令行運行該程式,運行命令為:

hello.exe hello world

那麼,argc的值是 3,argv[0]是"hello.exe",argv[1]是"hello",argv[2]是"world"。

在 linux 裏常看到 cmd -o xx -p xx 等用法,linux libc 函式庫則提供一套 function 來幫您解析。

extern char *optarg;
void usage(char *argv0)
{
fprintf(stderr,
"Usage: %s [-c count] [-r] [-s]",
argv0);
}
int main(int argc, char *argv[])
{
for (;;) {
c = getopt( argc, argv, "c:rs");
if (c == EOF) break;
switch (c) {
case 'c':
probe_count = atoi(optarg);
break;
case 'r':
replay++;
break;
case 's':
set_clock++;
break;
default: // show usage

usage(argv[0]);
exit(1);
}
}
}

getopt 會解析 argc, argv 從 patten "c:rs" 後面帶參數要加":",
傳回值為抓到的參數字元,無則傳回 EOF,並將參數值存在 global 參數 optarg,
再使用 atoi 轉換成 integer。
創作者介紹

邱小新の工作筆記

台南小新 發表在 痞客邦 PIXNET 留言(0) 人氣()