c语言解析命令行参数的简单例子

假设要解析的命令行参数如下:

getopts.exe [--port 9000] --freq 1 --size 5 --file filename
#include <stdio.h>

int getOpts(int argc, char **argv);
int main(int argc, char* argv[])
{
    if(1!=getOpts( argc, argv)){
        printf("e.g.\ngetopts.exe --port 9000 --freq 1 --size 5 --file filename\n");
    }
    return 0;
}
int getOpts(int argc, char **argv)
{
    int port,size,hz;
    char filepath[120];
    int hasPort,hasFreq,hasSize,hasFile=0;
    for (int i=1;i<argc;i++) {
        if (!strcmp(argv[i],"--port")&&i+1<argc) {
            port=atoi(argv[++i]);
            printf("port:%d\n",port);
            hasPort=1;
        }
        else if (!strcmp(argv[i],"--freq")&&i+1<argc) {
            hz=atoi(argv[++i]);
            printf("hz:%d\n",hz);
            hasFreq=1;
        }
        else if (!strcmp(argv[i],"--size")&&i+1<argc) {
            size=atoi(argv[++i]);
            printf("size:%d\n",size);
            hasSize=1;
        }
        else if (!strcmp(argv[i],"--file")&&i+1<argc) {
            strcpy(filepath,argv[++i]);
            printf("file:%s\n",filepath);
            hasFile=1;
        }
        else {
            return -1;
        }
    }
    return hasFreq&&hasSize&&hasFile;
}

程序运行结果:
通过代码的最后一行,我们实际上做的是可选参数的筛选,实例中只有port这个参数是可选参数。运行结果中的最后一次运行也做了验证。

当获取参数失败时,会将使用示例打印出来。

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值