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
。在实际编程中,你可以根据具体的需求选择合适的函数。有时候,你可能需要结合使用这两个函数来完成复杂的文件操作任务。