在寫程序的時候,我們經常需要用到命令行參數,所以今天我們看看C語言中的getopt()這個函數。
將C語言梳理一下,分布在以下10個章節中:
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