如 ls -la 参数la 获取
int main(int argc,char *argv[]){
int arg,opt;
//传统方式
for(arg = 0 ; arg < argc ; arg++){
printf("%s\n",argv[arg]);
}
//getopt函数
while((opt = getopt(argc,argv,"if:lr")) != -1){
switch(opt){
case 'i':
case 'l':
case 'r':
printf("option:%c\n",opt);
break;
case 'f':
printf("filename:%s\n",optarg);
break;
case ':':
printf("option needs a value\n");
break;
case '?':
printf("unknown option:%c\n",optopt);
break;
}
}
}
长选项 如 - -help 两个减号
#include<stdio.h>
#include<stdlib.h>
#include<getopt.h>
int main(int argc,char *argv[]){
int opt;
//告诉程序如何处理选项
struct option longopts[] = {
{"initialize",0,NULL,'i'},
{"file",1,NULL,'f'},
{"list",0,NULL,'l'},
{"restart",0,NULL,'r'},
{0,0,0,0},
};
while((opt = getopt_long(argc,argv,":if:lr",longopts,NULL)) != -1){
switch(opt){
case 'i':
case 'l':
case 'r':
printf("option:%c\n",opt);
break;
case 'f':
printf("filename:%s\n",optarg);
break;
case ':':
printf("option needs a value\n");
break;
case '?':
printf("unknown option:%c\n",optopt);
break;
}
}
for(; optind < argc;optind++){
printf("argument:%s",argv[optind]);
}
}
option 结构体