1. 程式人生 > >用getopt處理main函式的引數

用getopt處理main函式的引數

//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;
}