从 getopt 转换参数

标签 c getopt size-t

假设我有这段代码:

size_t n;  // my parameter

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

我正在使用 getopt GNU C 函数解析命令行参数。如果 n 数据类型是 size_t(无符号整数)...

我应该如何转换这个值? 我应该使用 strtol 转换它吗?

最佳答案

调用 strtol 不是强制转换,但它可能是您想要执行的操作。 (strtoul 更有可能。)

两者都将接受负数(即使 strtoul 生成一个 unsigned long)所以您可能希望在调用转换函数之前进行一些错误检查。

有关详细信息,请阅读 man strtoul 联机帮助页。

您还可以考虑将 n 设为 unsigned long 而不是 size_t

关于从 getopt 转换参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22433213/

相关文章:

c - 在非结构或 union 中请求成员 `' next'`

c - 使用 getopt 解析命令行参数

bash - 如何在 Bash 中使用带有长选项的 getopt?

c - 在 GNU 系统中使用 printf 打印 size_t

c - 将字符串分配给二维数组

c - 如何从输入文件中提取信息并将它们放入 C 数组中?

python - Swig,返回 double 数组

c++ - `getopt` 的段错误

c++ - sizeof(size_t) 可以小于 sizeof(int) 吗?

C++ 函数 "size_t PASCAL"