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

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

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

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;iif (!strcmp(argv[i],"--port")&&i+1printf("port:%d\n",port);
            hasPort=1;
        }
        else if (!strcmp(argv[i],"--freq")&&i+1printf("hz:%d\n",hz);
            hasFreq=1;
        }
        else if (!strcmp(argv[i],"--size")&&i+1printf("size:%d\n",size);
            hasSize=1;
        }
        else if (!strcmp(argv[i],"--file")&&i+1strcpy(filepath,argv[++i]);
            printf("file:%s\n",filepath);
            hasFile=1;
        }
        else {
            return -1;
        }
    }
    return hasFreq&&hasSize&&hasFile;
}

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

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

c语言解析命令行参数的简单例子_第1张图片

你可能感兴趣的:(c)