/* * 2-8.c * * Created on: 2011-1-4 * Author: jinyong * 目录操作 */ #include <sys/types.h> #include <dirent.h> #include <unistd.h> #include <stdio.h> int main(void) { DIR *dir; struct dirent *ptr; int i; dir = opendir("/etc"); /** * DIR *opendir(const char *name); * 打开目录文件 * 需要头文件:sys/types.h,dirent.h * 打开参数name指定的目录,并返回DIR*形态的目录流,和open类似。接下来对目录的读取和搜索都要使用此返回值。 * 成功返回DIR*形态的目录流,失败返回NULL */ while( (ptr = readdir(dir)) != NULL) { /** * struct dirent *readdir(DIR *dir); * 读取目录文件 * 返回参数dir目录流的下个目录进入点 * 结构dirent定义如下 * struct dirent * { * ino_t d_ino; //此目录进入点的inode * ff_t d_off; //目录文件开头至此目录进入点的位移 * singed short int d_reclen;//d_name的长度,不包含NULL字符 * unsinged char d_type;//d_name所指的文件类型 * har d_name[256];//文件名 * 成功则返回下个目录进入点,由错误发生或读取到目录文件则返回NULL * } */ printf("目录:%s/n",ptr->d_name); } closedir(dir); /** * int closedir(DIR *dir); * 关闭目录文件流 * 关闭成功返回0,失败返回-1,错误原因存在于errno中 */ }