汉扬编程 C语言入门 C 语言 分析传进来的参数

C 语言 分析传进来的参数

/**

* 任何人任何机构皆可用于任何项目,此软件免费无需书面授权

* 在软件和软件的所有副本中都必须包含版权声明和软件相关注解

*

* 模块: getopt.c

* 简述: 分析传进来的参数

* 作者: woods zhang -> hoojar@163.com -> /

* 版权: 2006-2018, 张树林 拥有此源码所有版权 (MIT许可协议)

* Copyright 2006-2018, Woods Zhang All Rights Reserved (The MIT License)

*/

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

#include <getopt.h>

/**

* 打印出使用指南

*/

void print_usage(const char *pname)

{

printf(\”Usage: %s [OPTION]… \”, pname);

printf(\”IM SERVER FOR CHAT. Without OPTION, same as -h. \”);

printf(\”-a, –addr server bind addr \”);

printf(\”-P, –port server bind prot \”);

printf(\”-h, –dbhost connect mysql host \”);

printf(\”-u, –dbuser connect mysql user \”);

printf(\”-p, –dbpkey connect mysql password \”);

printf(\”-n, –dbname connect mysql database name \”);

printf(\”-v, –version print the version \”);

printf(\”-h, –help display this help and exit \”);

}

int main(int argc, char **argv)

{

if (argc == 1)

{

print_usage(argv[0]);

exit(EXIT_FAILURE);

}

int opt_cmd = 0;//参数选项对就的指令编号

int opt_index = 0;//指向的变量将记录当前找到参数符合long_opts里的第几个元素

/**

optstring: 表示短选项字符串。

形式如“a:b::cd:“,分别表示程序支持的命令行短选项有-a、-b、-c、-d,冒号含义如下:

(1)只有一个字符不带冒号 只表示选项, 如:-c

(2)一个字符后接一个冒号 表示选项后面带一个参数,如:-a 100但-a=100出错

(3)一个字符后接两个冒号 表示选项后面带一个可选参数,即参数可有可无,如果带参数则选项与参数直接不能有空格形式应该如:-b200

*/

const char opt_str[] = \”a:p:h:u:p:n:vH\”;

/**

no_argument(或者是0)时参数后面不跟参数值:–参数

required_argument(或者是1)时参数输入格式为:–参数 值 或者 –参数=值

optional_argument(或者是2)时参数输入格式只能为:–参数=值

*/

static struct option long_opts[] =

{

{\”addr\”, required_argument, NULL, \’a\’},

{\”port\”, required_argument, NULL, \’P\’},

{\”dbhost\”, required_argument, NULL, \’h\’},

{\”dbuser\”, required_argument, NULL, \’u\’},

{\”dbpkey\”, required_argument, NULL, \’p\’},

{\”dbname\”, required_argument, NULL, \’n\’},

{\”version\”, no_argument, NULL, \’v\’},

{\”help\”, no_argument, NULL, \’H\’},

{NULL, 0, NULL, 0}//long_opts的最后一个元素必须是全0填充否则会报段错误

};

/**

* 循环分析参数

*/

while ((opt_cmd = getopt_long(argc, argv, opt_str, long_opts, &opt_index)) != -1)

{

switch (opt_cmd)

{

case 0:

printf(\”NO DATA \”);

break;

case \’a\’:

printf(\”server addr:%s \”, optarg);

break;

case \’P\’:

printf(\”server port:%s \”, optarg);

break;

case \’h\’:

printf(\”mysql host:%s \”, optarg);

break;

case \’u\’:

printf(\”mysql user:%s \”, optarg);

break;

case \’p\’:

printf(\”mysql password:%s \”, optarg);

break;

case \’n\’:

printf(\”mysql dbname:%s \”, optarg);

break;

case \’v\’:

printf(\”Version: 0.0.1 \”);

return EXIT_FAILURE;

case \’H\’:

default:

print_usage(argv[0]);

return EXIT_FAILURE;

}

}

printf(\”Test get opt long functions \”);

return EXIT_SUCCESS;

}

本文来自网络,不代表汉扬编程立场,转载请注明出处:http://www.hyzlch.com/cjia/6441.html

Auto X自动驾驶肖健雄:纸上得来终觉浅,绝知此事要躬行

c语言的应用领域是什么?

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注

返回顶部