在linux中读取目录内容
发布时间:2020-12-14 01:29:40 所属栏目:Linux 来源:网络整理
导读:我们如何在 Linux中使用C语言读取目录的内容(子目录和文件名). 解决方法 这是一个递归程序,以递归方式打印所有子目录和文件的名称. 用法:./ a.out路径名 不检查作为命令行参数提供的初始路径名的错误条件. 基本代码流程: 读取当前目录中的所有条目. 如果是
我们如何在
Linux中使用C语言读取目录的内容(子目录和文件名).
解决方法
这是一个递归程序,以递归方式打印所有子目录和文件的名称.
用法:./ a.out路径名 不检查作为命令行参数提供的初始路径名的错误条件. 基本代码流程: 读取当前目录中的所有条目. 如果是目录名,则将其名称添加到路径名中,并以递归方式调用函数. 否则打印文件的名称. 有关特定函数的详细信息可以在dmuir指出的各个手册页中引用: #include<sys/stat.h> #include<unistd.h> #include<dirent.h> #include<error.h> int read(char *pth) { char path[1000]; strcpy(path,pth); DIR *dp; struct dirent *files; /*structure for storing inode numbers and files in dir struct dirent { ino_t d_ino; char d_name[NAME_MAX+1] } */ if((dp=opendir(path))==NULL) perror("dirn"); char newp[1000]; struct stat buf; while((files=readdir(dp))!=NULL) { if(!strcmp(files->d_name,".") || !strcmp(files->d_name,"..")) continue; strcpy(newp,path); strcat(newp,"/"); strcat(newp,files->d_name); printf("%sn",newp); //stat function return a structure of information about the file if(stat(newp,&buf)==-1) perror("stat"); if(S_ISDIR(buf.st_mode))// if directory,then add a "/" to current path { strcat(path,"/"); strcat(path,files->d_name); read(path); strcpy(path,pth); } } } int main(int argc,char *argv[]) { read(argv[1]); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |