一个比较简单的getopt,多平台通用

#include "stdio.h"

char * host=0;
int port=0;
int is_show_help=0;

#define true 1
#define false 0
typedef int bool;
bool getoption(int argc,char ** argv)
{
    char * p=0;

    for(int i=1;i<argc;i++)
    {
        p = argv[i];
        if (*p++ !='-'){
            //printf("error option ,unknow -> %s\n",argv[i-1]);
            return false;
        }
        while(*p)
        {
            switch(*p++)
            {
                case '?':{
                            //printf("-h");
                             is_show_help=1;
                            break;
                         }
                case 'h':{
                            if (argv[++i]){
                                //printf("param -h=%s\n",argv[i]);
                                host=argv[i];
                            }
                            break;
                         }
                case 'p':{
                            if (argv[++i]){
                                /* printf("param -p=%d\n",atoi(argv[i])); */
                                port = atoi(argv[i]);
                            }
                            break;
                         }
                default:{
                        break;
                        }
            }
        }
    }
    return true;
}

int main(int argc,char ** argv)
{
    if (! getoption(argc,argv) )
    {
        printf("param error\n");
        return 1;
    }
    if (is_show_help){
        printf("help!!!!!!!help me!\n");
        return 0;
    }
    if (host!='\0'){
        printf("host is -> %s \n",host);
    }
    if (port != 0){
        printf("port is -> %d \n",port);
    }
}

clipboard.png


paulli3
992 声望8 粉丝

源码疯狂痴迷爱好者