C語言readdir()函式:讀取目錄函式
阿新 • • 發佈:2019-01-22
相關函式:open, opendir, closedir, rewinddir, seekdir, telldir, scandir
標頭檔案:#include <sys/types.h> #include <dirent.h>
定義函式:struct dirent * readdir(DIR * dir);
函式說明:readdir()返回引數dir 目錄流的下個目錄進入點。結構dirent 定義如下:
struct dirent
{
ino_t d_ino; //d_ino 此目錄進入點的inode
ff_t d_off; //d_off 目錄檔案開頭至此目錄進入點的位移
signed short int d_reclen; //d_reclen _name 的長度, 不包含NULL 字元
unsigned char d_type; //d_type d_name 所指的檔案型別 d_name 檔名
har d_name[256];
};
返回值:成功則返回下個目錄進入點. 有錯誤發生或讀取到目錄檔案尾則返回NULL.
附加說明:EBADF 引數dir 為無效的目錄流。
範例
#include <sys/types.h>
#include <dirent.h>
#include <unistd.h>
main()
{
DIR * dir;
struct dirent * ptr;
int i;
dir = opendir("/etc/rc.d");
while((ptr = readdir(dir)) != NULL)
{
printf("d_name : %s\n", ptr->d_name);
}
closedir(dir);
}
執行:
d_name : .
d_name : ..
d_name : init.d
d_name : rc0.d
d_name : rc1.d
d_name : rc2.d
d_name : rc3.d
d_name : rc4.d
d_name : rc5.d
d_name : rc6.d
d_name : rc
d_name : rc.local
d_name : rc.sysinit
標頭檔案:#include <sys/types.h> #include <dirent.h>
定義函式:struct dirent * readdir(DIR * dir);
函式說明:readdir()返回引數dir 目錄流的下個目錄進入點。結構dirent 定義如下:
struct dirent
{
ino_t d_ino; //d_ino 此目錄進入點的inode
ff_t d_off; //d_off 目錄檔案開頭至此目錄進入點的位移
signed short int d_reclen; //d_reclen _name 的長度, 不包含NULL 字元
unsigned char d_type; //d_type d_name 所指的檔案型別 d_name 檔名
har d_name[256];
};
返回值:成功則返回下個目錄進入點. 有錯誤發生或讀取到目錄檔案尾則返回NULL.
附加說明:EBADF 引數dir 為無效的目錄流。
範例
#include <sys/types.h>
#include <dirent.h>
#include <unistd.h>
main()
{
DIR * dir;
struct dirent * ptr;
int i;
dir = opendir("/etc/rc.d");
while((ptr = readdir(dir)) != NULL)
{
printf("d_name : %s\n", ptr->d_name);
}
closedir(dir);
}
執行:
d_name : .
d_name : ..
d_name : init.d
d_name : rc0.d
d_name : rc1.d
d_name : rc2.d
d_name : rc3.d
d_name : rc4.d
d_name : rc5.d
d_name : rc6.d
d_name : rc
d_name : rc.local
d_name : rc.sysinit