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

标签 c parsing parameters

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

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

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

  3. 如果参数与-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/

相关文章:

c - 需要使用 strtok() 知道两个标记分隔符之间何时没有数据出现

.net - 如何分割 RTF 文件

parsing - parse_url相当于grails/groovy吗?

c - 将函数作为参数传递不起作用

c - 当遇到 exit(1) 时,malloc 的内存会发生什么情况?

java - 缺少基本 for 循环表达式的语法

java - 高效且干净地解析 JSON 字符串

c# - 避免输入参数出现 "null entry for parameter id of non-nullable type"错误的干净方法

c - 使用这个参数的目的是什么,int (*cmp) (void*, void*)

将 volatile int 转换为 int8_t 进行输出