用getopt處理main函式的引數
阿新 • • 發佈:2019-02-16
//getopttest.c
#include <stdio.h>
#include <unistd.h>
int main(int argc,char *argv[])
{
int opt=0;
int i=0;
const char *optstring=":vgt:";
//非選項引數的個數
const int num=1;
//呼叫getopt前列印argv陣列
for(i=0;i<argc;i++)
printf("%d:%s/n",i,argv[i]);
//處理選項引數
while((opt=getopt(argc,argv,optstring)) != -1)
{
switch(opt)
{
case 'v':
case 'g':
printf("option:%c/n",opt);
break;
case 't':
printf("option:%c = %s/n",opt,optarg);
break;
case ':':
printf("the option need a value/n");
break;
case '?':
printf("unknow option:%c/n",optopt);
break;
}
}
//處理非選項引數
for(i=0;optind<argc;i++,optind++)
{
if(i<num)
printf("argument:%s/n",argv[optind]);
else
printf("excess argument:%s/n",argv[optind]);
}
//呼叫getopt後列印argv陣列
for(i=0;i<argc;i++)
printf("%d:%s/n",i,argv[i]);
return 0;
}
#include <stdio.h>
#include <unistd.h>
int main(int argc,char *argv[])
{
int opt=0;
int i=0;
const char *optstring=":vgt:";
//非選項引數的個數
const int num=1;
//呼叫getopt前列印argv陣列
for(i=0;i<argc;i++)
printf("%d:%s/n",i,argv[i]);
//處理選項引數
while((opt=getopt(argc,argv,optstring)) != -1)
{
switch(opt)
{
case 'v':
case 'g':
printf("option:%c/n",opt);
break;
case 't':
printf("option:%c = %s/n",opt,optarg);
break;
case ':':
printf("the option need a value/n");
break;
case '?':
printf("unknow option:%c/n",optopt);
break;
}
}
//處理非選項引數
for(i=0;optind<argc;i++,optind++)
{
if(i<num)
printf("argument:%s/n",argv[optind]);
else
printf("excess argument:%s/n",argv[optind]);
}
//呼叫getopt後列印argv陣列
for(i=0;i<argc;i++)
printf("%d:%s/n",i,argv[i]);
return 0;
}