在 C 中解析程序参数时有什么好的做法
What is a good practice when parsing program parameters in C
我正在解析传递给程序的参数。我想:
如果没有参数就什么都不做
如果仅将 -k
作为参数传递,则将 flag
设置为 1
调用 ignore()
函数,如果有任何参数不同于 -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;
}
}
我正在解析传递给程序的参数。我想:
如果没有参数就什么都不做
如果仅将
-k
作为参数传递,则将flag
设置为 1调用
ignore()
函数,如果有任何参数不同于-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;
}
}