readdir
函數是用于讀取目錄內容的函數,它在 CentOS(以及其他 Linux 發行版)中的使用與在其他 POSIX 兼容系統中的使用相同。readdir
函數的原型在 <dirent.h>
頭文件中定義。
函數原型:
#include <dirent.h>
struct dirent *readdir(DIR *dirp);
參數說明:
DIR *dirp
:這是一個指向 DIR
類型的指針,該類型表示一個目錄流。在使用 readdir
函數之前,你需要使用 opendir
函數打開一個目錄,并返回一個指向 DIR
結構的指針。如果無法打開目錄,opendir
將返回 NULL
。返回值:
readdir
返回一個指向 struct dirent
的指針,該結構包含有關目錄中下一個條目的信息。readdir
返回 NULL
。NULL
。struct dirent
結構通常包含以下成員:
long d_ino
:目錄項的 inode 號。off_t d_off
:目錄項在目錄文件中的偏移量。unsigned short d_reclen
:目錄項的長度。char d_name[]
:目錄項的名稱。請注意,d_name
是一個可變長度數組,其大小至少為 NAME_MAX + 1
字節,其中 NAME_MAX
是目錄項名稱的最大長度。
下面是一個簡單的示例,演示如何使用 readdir
函數讀取當前目錄的內容:
#include <stdio.h>
#include <stdlib.h>
#include <dirent.h>
#include <string.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;
}
這個程序將打印當前目錄中的所有文件和子目錄的名稱。