copendir
和 readdir
是在处理目录和文件时常用的两个函数,它们通常用在 POSIX 兼容的系统(如 Linux)中进行目录遍历。下面是它们的区别:
opendir
:
DIR*
类型的指针,该指针用于后续的目录读取操作。DIR *opendir(const char *name);
NULL
。opendir
来获取目录流的句柄。readdir
:
opendir
打开的目录流中读取下一个目录项。struct dirent *readdir(DIR *dirp);
DIR*
类型的指针,即通过 opendir
打开的目录流。dirent
结构的指针,该结构包含目录项的信息;当到达目录末尾时返回 NULL
。readdir
函数可以逐个获取目录中的文件和子目录。#include <stdio.h>
#include <dirent.h>
#include <stdlib.h>
int main() {
DIR *dir;
struct dirent *entry;
// 打开目录
dir = opendir(".");
if (dir == NULL) {
perror("opendir");
exit(EXIT_FAILURE);
}
// 读取目录项
while ((entry = readdir(dir)) != NULL) {
printf("%s\n", entry->d_name);
}
// 关闭目录
closedir(dir);
return 0;
}
在这个例子中,程序打开当前目录(.
),然后使用 readdir
遍历该目录中的所有条目,并打印每个条目的名称。最后,使用 closedir
关闭目录流。