C 编程 - getopt

标签 c getopt

当我使用 -f 时出现错误段错误,有什么想法吗? -f 选项用于选择输入文件。

  struct list_names filenames;
  list_names_init(&filenames, "filenames");

  optind = 1;
  while ((ch = getopt(argc, argv, ":hvf:")) != -1)  //where getopt defined
    {
      switch (ch) {
        case 'h':
                printf("usage: ./hake [-h] [-v] [-f file]\n-h           print help\n-v           verbose mode; enable extra printing; can be repeated\n");
                printf("-f file      input filename; default is hakefile or Hakefile");
          break;
        case 'v':
          verbose = 1;
          break;
        case 'f':
          f_flag++;
          list_names_append_from_file(&filenames, optarg);
       printf("Read_file%s\n",optarg);
       read_file(optarg);
          break;

最佳答案

不知道 list_names_append_from_file 是如何定义的,很难回答您的问题。但是,段错误意味着您几乎可以肯定将错误类型或数量的参数传递给函数,或者您弄乱了指针。我建议使用 -Wall -Werror 重新编译(假设您使用的是 gcc),看看编译器是否不会立即告诉您出了什么问题。

关于C 编程 - getopt,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9440898/

相关文章:

bash - 重新排列 getopt 输出,以便每次都首先执行特定参数(如果给定)

c - Swift:将未初始化的 C 结构传递给导入的 C 函数

c - Getopt 函数没有选项,只有参数

c - 浮点异常C代码

c - 你如何在 C 中将结构成员排序到队列中?

c - Getopt - 需要输入

c - getopt() 函数表现出奇怪的行为

python - 使用 getopt 的命令行选项和参数

c - udp套接字到底接收什么?

c - 如何更改Intel icc编译器的缓存写入策略