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 關閉目錄流。