1、函數說明
表頭文件:#include
函數聲明:int getopt(int argc, char * const argv[], const char *optstring);
函數說明:getopt()用來分析命令行參數。參數argc和argv是由main()傳遞的參數個數和內容。參數optstring 則代表欲處理的選項字符串。此函數會返回在argv 中下一個的選項字母,此字母會對應參數optstring 中的字母。如果選項字符串裡的字母後接著冒號“:”,則表示還有相關的參數,全域變量optarg 即會指向此額外參數。如果getopt()找不到符合的參數則會印出錯信息,並將全域變量optopt設為“?”字符,如果不希望getopt()印出錯信息,則只要將全域變opterr設為0即可。
選項的使用定義規則類似:
ab:c::
意思是:
a 後沒有冒號,表示沒有可以參數
b 後跟一個冒號,表示有一個必要的參數
c 後跟兩個冒號,表示有一個可選的參數
長選項的定義相同,但用逗號分割。
返回值:如果找到符合的參數則返回此參數字母,如果參數不包含在參數optstring 的選項字母則返回“?”字符,分析結束則返回-1.
2、例子程序
下面是一個使用getopt函數讀取參數的例子程序,該程序支持 –p –s –b –c的參數,並將這些參數值讀取後進行打印。你可以根據需要將這些代碼稍作修改用於自己的程序中。
/*
* getopt.c
* Author: Coonxu
* email: [email protected]
* 這是一個使用getopt函數讀取參數的例子程序,該程序支持 -p -s -b -c的參數,
* 並將這些參數值讀取後進行打印。你可以根據需要將這些代碼稍作修改用於自己的程序中。
*/
#include
#include
int main(int argc, char **argv)
{
int ch;
opterr = 0;
while( ( ch = getopt( argc, argv, "s:b:c:p:" ) ) != EOF )
{
switch(ch)
{
case 's':
printf("s opt: %s\n", optarg);
break;
case 'b':
printf("b opt: %s\n", optarg);
break;
case 'c':
printf("c opt: %s\n", optarg);
break;
case 'p':
printf("p opt: %s\n", optarg);
break;
case '?':
printf( "illegal option: %c\n", ch );
break;
}
}
return 0;
}