建筑师网站有哪些,东莞信科做网站,官网网站搭建,杭州手机网站制作公司opendir#xff0c;打开一个目录。 函数原型#xff1a;DIR *opendir(const char *name) DIR *fopendir(int fd) DIR是一个结构指针#xff0c;是一个内部结构#xff0c;保存所打开的目录信息。函数出错返回NULL readdir#xff0c;读目录 ,dirent.h 函数原型打开一个目录。 函数原型DIR *opendir(const char *name) DIR *fopendir(int fd) DIR是一个结构指针是一个内部结构保存所打开的目录信息。函数出错返回NULL readdir读目录 ,dirent.h 函数原型struct dirent *readdir(DIR *dirp); //返回一条记录项(文件或目录) int readdir_r(DIR *dirp, struct dirent *entry, struct dirent **result); struct dirent
{ino_t d_ino; //此目录进入点的inodeff_t d_off; //目录文件开头至此目录进入点的位移signed short int d_reclen; //d_name 的长度不包含NULLunsigned char d_type; //d_name 所指的文件类型har d_name[256]; //文件名
} 递归获取文件个数 #include dirent.h
#include stdio.h
#include stdlib.h
#include sys/types.hint getFileNum(char *root)
{//open dirDIR* dir NULL;dir opendir(root);if(dir NULL){perror(opendir);exir(1);}//遍历当前打开的目录struct dirent* ptr NULL;char path[1024] {0};int total 0;while(ptr readdir(dir) ! NULL){//过滤. 和 ..if(strcmp(ptr-d_name, .) 0 || strcmp(ptr-d_name, ..) 0){continue;}if(ptr-d_type DT_DIR){//递归 读目录sprintf(path, %s/%s, root, ptr-d_name);total getFileNum(path);}//如果是普通文件if(ptr-d_type DT_REG){total;}}//还需要关闭目录closedir(dir);return total;
}int main(int argc, char *argv[])
{if(argc 2){printf(./a.out dir\n);exit(1);}int total getFileNum(argv[1]);printf(%s has file numbers %d\n, argv[1], total);return 0;
} 转载于:https://www.cnblogs.com/lr1402585172/p/10490412.html