getopt()函數(分析命令行參數)

頭文件:

#include <unistd.h>

函數形式:

int getopt(int argc, char* argv【】, const char* optstring);

功能:

getopt直接分析命令行參數,找到選項和選項參數以及操作數的準確位置。

參數:

optstring:

optstring裏存放需要識別的選項字符(如果該選項有參數,則後面加冒號)。

argc:

命令行字符串個數。

argv:

命令行裏的所有字符串將會以指針數組的形式存入argv【】裏。

返回值(optopt):

getopt函數每次返回一個選項字符,當沒有選項時返回-1。

當解析到一個不在optstring裏面的參數,或者一個必選值參數不帶值時,返回“?”

當optstring是以':'開頭時,缺值參數的情況下會返回,而不是

全局變量:

char* optarg:

如果找到一個有參數的選項,則全局變量optarg將指向這個選項參數的首地址。

int optind:

argv的當前索引值(下標)。當getopt()在while循環中使用時,循環結束後,剩下的字符串視爲操作數,在argv【optind】或argv【argc-1】中可以找到。

int optopt:

當發現無效字符時,函數返回“?”或“:”,並且optopt包含了發現的無效選項字符。

int opterr:

這個變量非零時,函數爲“無效選項”和“缺少參數選項”,並輸出其錯誤信息。

代碼示範:

#include <stdio.h>
#include <unistd.h>

int main(int argc,char** argv){
	int c;
	while((c = getopt(argc,argv,"ab:"))!=-1){
		switch(c){
		case 'a':
			printf("option a\n");
			break;
		case 'b':
			printf("option b %s\n",optarg);
			break;
		default:
			perror("getopt error");
			return 1;
		}
	}

	if(optind != argc -1){
		printf("usage:%s getoption [-a] [-b <optarg>] <argument>\n",argv[0]);
		return 1;
	}
	printf("argument:%s\n",argv[optind]);

}

結果:



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章