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

标签 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 .

我错过了什么?

最佳答案

n = atoi(optarg);

否则,您会将 char 分配给 int

您还可以看到 4950 的来源。

字符1的Ascii值为49250

关于c - 使用 getopt 处理简单的命令行参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47741313/

相关文章:

int 可以包含 char 的值吗?

c++ - 使用 long_options 解析具有任意数量的 required_arguments 的选项

linux - 命令行日期格式化帮助

c - 在程序中包含可选输入?

c - 为什么 gdb 得到错误的 "optind"变量值?

c - 我可以获得最简单的 getopt 程序?

c - 如何将字符数值分配给整数类型(应存储相同的字符数值)

c - 使用较小的字符串文字初始化 char 数组

检查命令行参数是否正确 - C 编程

java - 在 Linux 上运行 Java 并出现错误 : Could not find or load main class