Glob函数在C中只给出一个结果

时间:2014-05-07 11:28:27

标签: 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
$ 

我不明白为什么,我真的很感谢你的帮助

1 个答案:

答案 0 :(得分:3)

在命令行中

./a.out *.c

shell会扩展glob模式,因此您的程序会看到

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

作为argv。您需要引用该程序的模式来查看它:

./a.out '*.c'