说我写:
program -x +5 +r
其中-x
,+5
,+r
是命令行开关。
+5
:每隔五秒发送一条消息
+r
和-x
:做事
我将如何在int main函数中执行此操作?我需要吗?
作为一个类编程并将-x
,+5
,+r
作为类的参数,或者每个切换都是自己的类?如果我希望命令行以不同的顺序切换,例如:
program +5 +4 -x
我如何解释消极和积极的迹象?任何帮助表示赞赏。
答案 0 :(得分:1)
这是我的命令行开关处理的标准方式,适用于接受+和 - 数字:
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 */