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]);

}

结果:



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值