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 关闭目录流。