c - 如何使用 GETOPT 在每个命令行选项后获取指向每个参数的指针

标签 c linux unix pointers getopt

表单的命令行输入:

exeName -a argumentA -b argumentB -c argumentC

需要将每个参数提取到相应的变量中(即 int a = argumentA 等)。

出现函数 getop() 用于查找命令行选项。

但是,我看不出如何在每个选项之后获得指向的指针(因此我可以在它之后提取参数)。

手册页中的这个引用听起来像是......但没有太多关于如何使用它的信息:

"If getopt() finds another option character, it returns that character, updating the external variable optind and a static variable nextchar"

如何使用 getop() 在每个命令行选项后设置指向参数的指针?

最佳答案

optarg 给出了指向 getopt() 扫描的当前选项的指针.如果你想要指向命令行上传递的每个参数的指针,那么你可以将它们存储在一个指针数组中,由 optarg 给出。

这是一个最小的工作示例:

#include #包括

int main (int argc, char **argv)
{
  char *p = 0;
  char *arr[5] = {0};
  int i;
  int c;

  while ((c = getopt (argc, argv, "A:B:C:")) != -1)
    switch (c)
    {
    case 'A':
      arr[0] = optarg; 
      break;
    case 'B':
      arr[1] = optarg;
      break;
    case 'C':
      arr[2] = optarg;
      break;
    default:
      printf("Invalid option %c\n", c);
    }

  printf("A:%s B:%s C:%s", arr[0], arr[1], arr[2]);    
  return 0;
}

当然,当没有提供一个或多个选项时,您应该添加更多的错误检查。

关于c - 如何使用 GETOPT 在每个命令行选项后获取指向每个参数的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24233135/

相关文章:

linux - 在没有 apt-get 或 yum 的情况下安装 git 或更新 git

c - bind() 函数根本没有执行,测试时没有输出

linux - 在 Windows 中利用 Unix 命令的强大功能

c - C 程序中 atexit() 函数的任何小实用示例

c - 连续调用 malloc 是否会在上一次调用 c 之后直接分配空间?

在我的链表代码中找不到错误

c - 在数组中绑定(bind)值并在 C 中动态返回数组

linux - 如何为此代码编写 if 记录的缩写版本?

shell -/etc/passwd 中没有条目的 unix 主目录

objective-c - 如何使用 ASN.1 x509 字节数组中的 RSA 公钥加密字符串?