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

时间:2015-04-26 14:05:46

标签: c parsing parameters

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

    如果没有参数,
  1. 不做任何特别的事情

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

  4. 如果有任何参数不同于ignore()

  5. ,请致电-k函数


    下面的代码是否正确执行? 是否可以符合标准和良好做法指南?

      int flag = FALSE;
      if (argc == 2 && strcmp(argv[1], "-k") == 0)
        flag = TRUE;
      else if (argc >= 2)
        ignore();
    

1 个答案:

答案 0 :(得分:2)

以下程序显示了如何使用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;
  }
}