【发布时间】:2016-10-05 02:19:01
【问题描述】:
基本上,到目前为止我有这个代码:
#include <glob.h>
#include <string.h>
#include <stdio.h>
# define ERROR 1
# define FAILURE -1
int main(int ac, char **av)
{
glob_t globlist;
int i;
i = 0;
if (ac == 1)
return (-1);
else
{
if (glob(av[1], GLOB_PERIOD, NULL, &globlist) == GLOB_NOSPACE
|| glob(av[1], GLOB_PERIOD, NULL, &globlist) == GLOB_NOMATCH)
return (FAILURE);
if (glob(av[1], GLOB_PERIOD, NULL, &globlist) == GLOB_ABORTED)
return (ERROR);
while (globlist.gl_pathv[i])
{
printf("%s\n", globlist.gl_pathv[i]);
i++;
}
}
return (0);
}
例如,当我键入./a.out "*" 时,它会打印我所在的所有文件以及目录,但不会打印目录中的内容。我应该如何打印所有文件,包括子文件/文件夹?
谢谢
【问题讨论】:
-
与您的问题完全无关,但您不应从
main函数返回-1。在“成功”时返回0,在“失败”时返回小于 256 的 正 值。这是因为在 POSIX 系统(包括 Linux、OSX 和所有现代 Unix 系统)上,高位具有特殊含义。 -
您可能想看看
dirent.h中的原型函数。 -
@alk 我知道 dirent.h,但我真的不知道如何很好地使用它。就像我认为我必须做递归一样,我错了吗?
-
是的,你必须递归。因此,您需要将
glob代码放入函数中(而不是main())。也同意关于return()的建议。祝你好运。 -
@shellter 谢谢!基本上我是第一次 glob,然后访问所有目录,然后再 glob 一次?