其他分享
首页 > 其他分享> > 命令行参数

命令行参数

作者:互联网

在linux命令行中执行程序我们通常看到如下做法:

# tar -tzvf test.tar.gz

琢磨一下在自己的程序中要实现这样的功能也不难,碰巧最近看到类似的例子,在此记录一下,没准以后用得着呢。

首先,我们都知道argc, argv参数的意义,只不过通常用不到它们。
其次,明确程序可能输入的参数,写一个工整的help打印说明。
最后,使用输入参数无非是想指明某些条件或者指明某些自定义值,因此根据argc、argv的的值进行字符串分析,通常要明确的有“参数个数、参数分隔符、参数是否会指明一个值”等等。

这里藏着折叠内容

    #include < stdio.h>
    #include < stdint.h>
    #include < stdlib.h>
    #include < string.h>

    #if !defined(bool)
    #define bool int
    #endif
    #if !defined(true)
    #define true (1 == 1)
    #endif
    #if !defined(false)
    #define false (!true)
    #endif

    int main(int argc, char **argv)
    {
        int j;
        size_t arglen;
        bool flg_debug = false;
        bool flg_binary = false;
        bool flg_help = false;
        const char *binary_name = NULL;

        if (argc >= 2)
        {
            for (j = 1; j < argc; j++)
            {
                arglen = strlen(argv[j]);
                if (((argv[j][0] == '-') || (argv[j][0] == '/')) && (arglen >= 2))
                {
                    switch (argv[j][1])
                    {
                    case 'd':
                        flg_debug = true;
                        break;
                    case 'b':
                        if ((j + 1 >= argc) || (argv[j + 1][0] == '-') || (argv[j + 1][0] == '/'))
                        {
                            printf("   Option -b requires a file name\n");
                            return 1;
                        }
                        binary_name = argv[++j];
                        flg_binary = true;
                        break;
                    default:
                        flg_help = true;
                        break;
                    }
                }
                else
                {
                    flg_help = true;
                }
            }
        }

        if ((flg_help) || (argc == 1) || (argc > 5))
        {
            printf("usage: %s [-h] [-b file] [-d]\n", argv[0]);
            printf("   -h      : display usage\n");
            printf("   -b file : dump Mass Storage data to file 'file'\n");
            printf("   -d      : enable debug output\n");
        }

        return 0;
    }

标签:false,help,argv,参数,命令行,argc,true,flg
来源: https://www.cnblogs.com/long-bky/p/12978235.html