在 C 中解析程序参数时有什么好的做法

What is a good practice when parsing program parameters in C

我正在解析传递给程序的参数。我想:

  1. 如果没有参数就什么都不做

  2. 如果仅将 -k 作为参数传递,则将 flag 设置为 1

  3. 调用 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;
  }
}