我正在解析传递给程序的参数。我想:
如果没有参数就什么都不做
如果只有
-k
作为参数传递,则将flag
设置为 1如果参数与
不同,调用-k
ignore()
函数
下面的代码是否正确执行?能否改进以满足标准和良好实践指南?
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;
}
}
关于c - 在 C 中解析程序参数时有什么好的做法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29878630/