C语言之分析命令行参数

 

#include <stdio.h>
//unix类系统定义符号常量的头文件
#include <unistd.h>
#include <stdlib.h>

void usage(void)
{
    printf("+--------------------------------------\n");
    printf("| -l <ip_addr> interface to listen on\n");
    printf("| -p <num> port num to listen on\n");
    printf("| -h print help and exit\n");
    printf("+--------------------------------------\n");
    printf("\n");
    return;
}
void ParseOptions(int argc, char *argv[])
{
    int c;
    short port;
    opterr = 0;
    // getopt()用来分析命令行参数
    //参数 optstring为选项字符串, 告知 getopt()可以处理哪个选项以及哪个选项需要参数
    //如果选项字符串里的字母后接着冒号":",则表示还有相关的参数,如果接着"::",则表示选项与参数之间不能有空格。
    //全域变量optarg即会指向此额外参数。
    //如果在处理期间遇到了不符合optstring指定的其他选项getopt()将显示一个错误消息
    //如果不希望getopt()印出错信息,则只要将全域变量opterr设为0即可。
    while ((c = getopt(argc, argv, "l:p::h")) != -1) {
        switch(c) {
            case 'l'://listen
                printf("host:%s\n", optarg);
                break;
            case 'p'://port
                port = atoi(optarg);
                printf("port:%d\n",port);
                break;
            case 'h'://help
                usage();
                exit(0);
            default:
                printf("illegal argument:%c\n",c);
                break;
        }
    }
}


int main(int argc, char *argv[])
{
    ParseOptions(argc, argv);
    return 0;
}

 

Tags: c语言

上一篇: C语言之变参日志函数   下一篇: C语言之创建后台守护进程

提交疑问

回顶部