在C语言中解析程序参数时,什么是好的做法
我正在解析传递给程序的参数。我想:在C语言中解析程序参数时,什么是好的做法,c,parsing,parameters,C,Parsing,Parameters,我正在解析传递给程序的参数。我想: 如果没有参数,则不执行任何特殊操作 如果只有-k作为参数传递,则将标志设置为1 如果存在与-k 下面的代码正确吗?是否能够提高其满足标准和良好实践指南的能力 int flag = FALSE; if (argc == 2 && strcmp(argv[1], "-k") == 0) flag = TRUE; else if (argc >= 2) ignore(); 以下程序显示了如何使用getopt: #
-k
作为参数传递,则将标志设置为1
-k
下面的代码正确吗?是否能够提高其满足标准和良好实践指南的能力
int flag = FALSE;
if (argc == 2 && strcmp(argv[1], "-k") == 0)
flag = TRUE;
else if (argc >= 2)
ignore();
以下程序显示了如何使用getopt:
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#define TRUE 1
#define FALSE 0
void ignore() {
printf("Ignore\n");
}
int main(int argc, char **argv) {
if(argc <= 1) {
printf("Do nothing\n");
return 0;
} else if(argc > 2) {
ignore();
} else {
int c, flag;
flag = FALSE;
while((c = getopt (argc, argv, ":k")) != -1) {
switch(c) {
case 'k':
flag = TRUE;
break;
default:
ignore();
break;
}
}
printf("Flag = %d\n",flag);
return 0;
}
}
#包括
#包括
#包括
#定义真1
#定义FALSE 0
无效忽略(){
printf(“忽略\n”);
}
int main(int argc,字符**argv){
如果(argc2){
忽略();
}否则{
INTC,旗帜;
flag=FALSE;
而((c=getopt(argc,argv,“:k”)!=-1){
开关(c){
案例“k”:
flag=TRUE;
打破
违约:
忽略();
打破
}
}
printf(“标志=%d\n”,标志);
返回0;
}
}
删除宏,它们没有用处。考虑有一个参数时的情况,但不是<代码> -k>代码>。你的代码做得对吗?getopt
是在类UNIX系统中执行此操作的标准方法。无论你做什么,我强烈建议不要解析main
中的参数。不要发明你自己的布尔值,C自1999年以来就有一个布尔值。这篇文章更适合网站getopt
不在标准C库中,但是POSIX也有。