歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> C語言學習筆記之getopt()

C語言學習筆記之getopt()

日期:2017/3/1 9:42:56   编辑:Linux編程

在寫程序的時候,我們經常需要用到命令行參數,所以今天我們看看C語言中的getopt()這個函數。

將C語言梳理一下,分布在以下10個章節中:

  1. Linux-C成長之路(一):Linux下C編程概要 http://www.linuxidc.com/Linux/2014-05/101242.htm
  2. Linux-C成長之路(二):基本數據類型 http://www.linuxidc.com/Linux/2014-05/101242p2.htm
  3. Linux-C成長之路(三):基本IO函數操作 http://www.linuxidc.com/Linux/2014-05/101242p3.htm
  4. Linux-C成長之路(四):運算符 http://www.linuxidc.com/Linux/2014-05/101242p4.htm
  5. Linux-C成長之路(五):控制流 http://www.linuxidc.com/Linux/2014-05/101242p5.htm
  6. Linux-C成長之路(六):函數要義 http://www.linuxidc.com/Linux/2014-05/101242p6.htm
  7. Linux-C成長之路(七):數組與指針 http://www.linuxidc.com/Linux/2014-05/101242p7.htm
  8. Linux-C成長之路(八):存儲類,動態內存 http://www.linuxidc.com/Linux/2014-05/101242p8.htm
  9. Linux-C成長之路(九):復合數據類型 http://www.linuxidc.com/Linux/2014-05/101242p9.htm
  10. Linux-C成長之路(十):其他高級議題

C++ Primer Plus 第6版 中文版 清晰有書簽PDF+源代碼 http://www.linuxidc.com/Linux/2014-05/101227.htm

我們先看看下面這個

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

......

}

argc寄存了命令行參數個數(注意:包括程序名本身)


例如我們運行 ./ppyy.sh ok ko pp pe

| | | | |

對應的關系是: argv[0] argv[1] argv[2] argv[3] argv[4]

但是光這麼用,我們是覺得不夠的,記不記得我們在命令行經常使用ps -ef這樣的命令,-ef就是命令行選項,它就像開關一樣。

為了能具備命令行選項這樣的功能,我們今天來看看getopt()這個函數。

首先,我們來看看一段程序<注:這段源程序來自head first>

#include <stdio.h>
#include <unistd.h> //getopt()在unistd.h這個頭文件中提供

int main(int argc,char *argv[]){
char *delivery = "";
int thick = 0;
int count = 0;
char ch;

while ((ch = getopt(argc,argv,"d:t")) != EOF ){
switch (ch){
case 'd':
delivery = optarg;
break;
case 't':
thick = 1;
break;
default:
fprintf(stderr,"Unknown option:'%s'\n",optarg);

return 1;
}

}

argc -= optind;
argv += optind;

if (thick)
puts("Thick crust.");

if (delivery[0])
printf("To be delivered %s.\n",delivery);

puts("Ingredients:");
for (count=0;count<argc;count++)
puts(argv[count]);

return 0;
}

更多詳情見請繼續閱讀下一頁的精彩內容: http://www.linuxidc.com/Linux/2014-06/103376p2.htm

Copyright © Linux教程網 All Rights Reserved