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

Using getopt to process simple command line arguments

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

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.

我错过了什么?

n = atoi(optarg);

否则您将 char 分配给 int

您还可以看到 4950 的来源。

char 1 的 Ascii 值是 49250.