c - C 中的 Glob 函数仅给出一个结果

标签 c glob

我必须用 C 语言编写一个 shell,并且需要在其中处理 globing,并且只允许我使用函数 glob。但是当我尝试使用它时,它只返回一个结果。

#include <glob.h>
#include <stdlib.h>

int     main(int ac, char **av)
{
  glob_t    s;
  unsigned long  i = -1;

  if (glob(av[1], 0, NULL, &s))
    printf("ERROR !\n");
  else
    while (++i < s.gl_pathc)
      printf("%s\n", s.gl_pathv[i]);
  return (0);
}

我在一个文件夹中运行此代码,其中有两个 C 文件:replace_glob.c 和 test.c

当我运行这段代码时:

$ ./a.out *.c
replace_glob.c
$ 

我不明白为什么,我非常感谢您的帮助

最佳答案

在命令行中

./a.out *.c

shell 扩展了 glob 模式,因此您的程序可以看到

{"./a.out", "replace_glob.c", "test.c", NULL}

作为其argv。您需要引用该模式才能让程序看到它:

./a.out '*.c'

关于c - C 中的 Glob 函数仅给出一个结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23516556/

相关文章:

c - 从 C 中的字符串数组打印

正确的 kill syscall linux 使用模式

c - 分配和 printf 之间的不同舍入

python - Python 中符合 POSIX 标准的 glob

CMake 通配生成的文件

python - 'utf- 8' codec can' t 解码位置 11 中的字节 0x92 : invalid start byte

c - linux内核模块赋值从指针生成整数而不进行强制转换

c - 链接两个 C 程序

ruby - GulpJS : I don't want gulp-ruby-sass to loop through all sass files

bash - nullglob 禁用路径名制表符完成