C說話編程中對目次停止根本的翻開封閉和讀取操作詳解。本站提示廣大學習愛好者:(C說話編程中對目次停止根本的翻開封閉和讀取操作詳解)文章只能為提供參考,不一定能成為您想要的結果。以下是C說話編程中對目次停止根本的翻開封閉和讀取操作詳解正文
C說話opendir()函數:翻開目次函數
頭文件:
#include <sys/types.h> #include <dirent.h>
界說函數:
DIR * opendir(const char * name);
函數解釋:opendir()用來翻開參數name 指定的目次, 並前往DIR*形狀的目次流, 和open()相似, 接上去對目次的讀取和搜刮都要應用此前往值.
前往值:勝利則前往DIR* 型態的目次流, 翻開掉敗則前往NULL.
毛病代碼:
1、EACCESS 權限缺乏。
2、EMFILE 已到達過程可同時翻開的文件數下限。
3、ENFILE 已到達體系可同時翻開的文件數下限。
4、ENOTDIR 參數name 非真實的目次。
5、ENOENT 參數name 指定的目次不存在, 或是參數name 為一空字符串。
6、ENOMEM 焦點內存缺乏。
C說話closedir()函數:封閉目次
頭文件:
#include <sys/types.h> #include <dirent.h>
界說函數:
int closedir(DIR *dir);
函數解釋:closedir()封閉參數dir 所指的目次流。
前往值:封閉勝利則前往0,,掉敗前往-1,,毛病緣由存於errno 中。
毛病代碼:EBADF 參數dir 為有效的目次流。
典范:參考readir()。
C說話readdir()函數:讀取目次函數
頭文件:
#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