命令行参数
作者:互联网
在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