使用getopt处理简单的命令行参数

时间:2017-12-10 17:11:22

标签: c command-line-arguments getopt

我想处理一些命令行选项。

int main(int argc, char **argv) {
  char c;
  int n = 10000;
  int nThreads = 3;

  while ((c = getopt (argc, argv, "n:t:")) != -1){
    switch (c)
      {
      case 'n':
        n = *optarg;
        break;
      case 't':
        nThreads = *optarg;
        break;
      default:
        abort();
      }
  }

  printf("n=%d, nThreads=%d\n", n, nThreads);
}

但这并不像我预期的那样有效。运行./program -n 10000 -t 2将导致程序输出n=49, nThreads=50

我错过了什么?

1 个答案:

答案 0 :(得分:1)

n = atoi(optarg);

否则,您要将char分配给int

此外,您还可以看到4950的来源。

char 1的Ascii值为49250