繁体   English   中英

如何在主函数中实现int argc和char * argv []?

[英]How do I implement int argc and char *argv[] in the main function?

说我写:

program -x +5 +r

其中-x+5+r是命令行开关。

+5 :每五秒钟发送一次消息

+r-x :做东西

我将如何在int main函数中执行此操作? 我需要将程序作为一个类,并将-x+5+r作为该类的参数,还是每个开关都是其自己的类? 如果我希望命令行切换顺序不同,该怎么办?

   program +5 +4 -x

我还将如何解释消极和积极的迹象? 任何帮助表示赞赏。

这是我的命令行开关处理的标准方式,适用于接受+和-数字:

int main(int argc, char **argv)
{
    int i= 0;
    char filename[256];
    int number;
    int xOption= 0;

    /* format: prog -dfilename -xrs -n3 +5 -3
     * Switch chars are case insensitive and can be in any order
     */
LabelNextSwitch:
    while (++i < argc) {
        switch (argv[i][0]) {
        case '-':
                while (*++argv[i]) {
                    switch (toupper(*argv[i])) {
                    case 'D':
                            strncpy (filename, argv[i]+1, 256);
                            filename[255]= '\0';
                            goto LabelNextSwitch;

                    case 'N':
                            ++argv[i]; number = 0;
                            while (isdigit(*argv[i]))
                                number = number *10 + *argv[i]++ - '0';
                            goto LabelNextSwitch;

                    case 'X':
                            xOption= 1;
                            break;

                    case 'R':
                            // whatever
                            break;

                    case 'S':
                            // whatever
                            break;

                    default:
                            if (isdigit(*++argv[i])) {
                                number = 0;
                                while (isdigit(*argv[i]))
                                    number = number *10 + *argv[i]++ - '0';
                                number = -number;
                                goto LabelNextSwitch;
                            }
                            else
                                printf("Bad argument '%c', ignored.\n",*argv[i]);
                    } /* end switch (*argv[i]) */
                } /* end while (*++argv[i]) */
                break;
        case '+':
                if (isdigit(*++argv[i])) {
                    number = 0;
                    while (isdigit(*argv[i]))
                        number = number *10 + *argv[i]++ - '0';
                    goto LabelNextSwitch;
                }
                else
                    printf("Bad argument +%s, ignored.\n",argv[i]);
                break;
        default:
                printf("Bad argument %s, ignored.\n",argv[i]);
        } /* switch (argv[i][0]) */
    } /* end while (++i < argc) */
    return 0;
} /* end function */

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM