我想像这样设置c程序的参数。
$./Program_name -a 100 -b 5 -c 30
我想在程序中使用此值a
,b
,c
。
例如:
int count = a;
int number = b;
int limit_exec = c;
我不知道它是如何运作的。我无法在谷歌找到它......我想看一些例子。
此外,与此同时,我想制作默认值和价值限制。
设置这样的限制:值a
只能包含1到10000之间的数字。
当我没有投入价值时使用默认值 像这样:
$./program -a 100 -c 30 // then value 'b' should use default number.
我不知道如何设置默认值。可以像这样在c代码中设置默认值吗?
#define a 50
#define b 100
#define c 30
答案 0 :(得分:4)
您可以使用getopt
来解析命令行输入
有关简要介绍,请参阅man
页面。
$ man 3 getopt
以下代码可根据您的要求运行。
<强>代码:强>
#include <stdio.h>
#include <unistd.h> /* Definition of getopt */
#include <stdlib.h> /* Definition of atoi */
int main (int argc, char ** argv)
{
char option;
/* Default Values */
int count = 10, number = 20, limit = 30;
while (-1 != (option = getopt (argc, argv, "a:b:c:")))
{
switch (option)
{
case 'a':
count = atoi(optarg);
/* Check for limit */
if (count <= 0 || count > 1000)
{
printf("Usage <%s> [a] value, Range of value : 1-1000\n", argv[0]);
exit(EXIT_FAILURE);
}
break;
case 'b':
number = atoi(optarg);
break;
case 'c':
limit = atoi(optarg);
break;
default:
printf ("Usage: <%s> [a] value [b] value [c] value\n", argv[0]);
}
}
printf("\nCount:[%d]\tNumber:[%d]\tlimit:[%d]\n\n", count, number, limit);
return 0;
}
编译: gcc -o exe filename.c -Wall
<强>执行:强>
$ ./exe /* Default values */
Count:[10] Number:[20] limit:[30]
$ ./exe -a 1 -b 2 -c 3
Count:[1] Number:[2] limit:[3]
$ ./exe -a 1 -c 3
Count:[1] Number:[20] limit:[3]
$ ./exe -a 9999 /* Same output for ./exe -a -1 */
Usage <./exe> [a] value, Range of Value : 1-1000