readdir 和 glob 是在 Linux 系统中用于文件和目录操作的两个不同的函数。它们各自有不同的用途和工作方式。
readdir 是一个 POSIX 标准的库函数,用于读取目录的内容。它通常与 opendir 和 closedir 一起使用。readdir 函数从一个已经打开的目录流中读取下一个目录项。
函数原型:
#include <dirent.h>
struct dirent *readdir(DIR *dirp);
参数:
dirp:指向一个 DIR 类型的指针,该指针是通过 opendir 函数打开的目录流。返回值:
dirent 结构的指针,该结构包含了目录项的信息。NULL。注意:
readdir 返回的 dirent 结构中的 d_name 字段包含了目录项的名称。readdir 不会自动排序目录项,返回的顺序可能与文件系统中的实际顺序不同。glob 是一个用于文件名模式匹配的函数,它根据指定的模式扩展为一个或多个文件名列表。glob 函数可以处理通配符(如 * 和 ?),并返回匹配的文件名数组。
函数原型:
#include <glob.h>
int glob(const char *pattern, int flags, int (*errfunc)(const char *epath, int eerr), glob_t *p);
参数:
pattern:要匹配的文件名模式。flags:控制匹配行为的标志。errfunc:错误处理函数指针。p:指向 glob_t 结构的指针,用于存储匹配结果。返回值:
0。注意:
glob 函数会自动扩展模式,生成所有匹配的文件名。glob 返回的结果是一个动态分配的字符串数组,使用完毕后需要调用 globfree 函数释放内存。readdir 用于遍历目录中的条目,而 glob 用于根据模式匹配文件名。readdir 返回一个结构体指针,包含单个目录项的信息;glob 返回一个字符串数组,包含所有匹配的文件名。readdir;如果你需要根据模式查找文件,使用 glob。在实际编程中,你可以根据具体的需求选择合适的函数。有时候,你可能需要结合使用这两个函数来完成复杂的文件操作任务。