windows版本的getopt

参考:http://www.oschina.net/code/explore/axis2c-src-1.6.0/util/src/platforms/windows/getopt_windows.c

源码:
static char *optarg = NULL; //用于存储每次得到的参数
static int optind = 1;
int win_getopt(int __argc, char *const *__argv, const char *__shortopts)
{

int opterr = 1;
int optopt = 0;

static char *pos = "";
char *olstindex = NULL;

if (!*pos)
{
if (optind >= __argc || *(pos = __argv[optind]) != '-')
{
pos = "";
return -1;
}

if (pos[1] && *++pos == '-')
{
++optind;
pos = "";
return -1;
}
}

optopt = (int) *pos++;
olstindex = strchr((char *)__shortopts, optopt);
if (!olstindex)
{
if (optopt == (int) '-')
return -1;
if (!*pos)
++optind;
}

++olstindex;
if (*pos)
optarg = pos;
else if (__argc <= ++optind)
{
pos = "";
}
else
optarg = __argv[optind];
pos = "";

++optind;

return optopt;
}

int main(int argc, char *argv[])
{
char options[] = "Cc:d:v";
char cfg[1024];                 
int front = 0;
int ret = 0;
        int debug = 0;

//读取配置文件
while( (ret = win_getopt(argc, argv, options)) >= 0){
if(ret == 'c'){
sprintf(cfg, optarg);
}else if(ret == 'd'){
debug = atoi(optarg);
front = 1;
}else if(ret == 'C'){
}else if(ret == 'v'){
return(0);
}else if(ret == '?'){
if(ret == 'd'){
debug = atoi(optarg);
front = 1;
}
}
}
}

测试命令: xxx.exe -c config.txt -d 0
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值