歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux服務器 >> 用Getopt在Linux下獲取命令行參數方法

用Getopt在Linux下獲取命令行參數方法

日期:2017/3/2 16:54:55   编辑:Linux服務器

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;

}

Copyright © Linux教程網 All Rights Reserved