300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > Linux C 遍历目录下的所有文件

Linux C 遍历目录下的所有文件

时间:2021-09-25 11:15:09

相关推荐

Linux C 遍历目录下的所有文件

1、原文链接:/fnlingnzb-learner/p/6472391.html

Linux C 读取文件夹下所有文件(包括子文件夹)的文件名

#include <stdio.h>#include <stdlib.h>#include <string.h>#include <dirent.h>#include <unistd.h>int readFileList(char *basePath){DIR *dir;struct dirent *ptr;char base[1000];if ((dir=opendir(basePath)) == NULL){perror("Open dir error...");exit(1);}while ((ptr=readdir(dir)) != NULL){if(strcmp(ptr->d_name,".")==0 || strcmp(ptr->d_name,"..")==0) ///current dir OR parrent dircontinue;else if(ptr->d_type == 8) ///fileprintf("d_name:%s/%s\n",basePath,ptr->d_name);else if(ptr->d_type == 10) ///link fileprintf("d_name:%s/%s\n",basePath,ptr->d_name);else if(ptr->d_type == 4) ///dir{memset(base,'\0',sizeof(base));strcpy(base,basePath);strcat(base,"/");strcat(base,ptr->d_name);readFileList(base);}}closedir(dir);return 1;}int main(void){DIR *dir;char basePath[1000];///get the current absoulte pathmemset(basePath,'\0',sizeof(basePath));getcwd(basePath, 999);printf("the current dir is : %s\n",basePath);///get the file listmemset(basePath,'\0',sizeof(basePath));strcpy(basePath,"./XL");readFileList(basePath);return 0;}

个人推荐使用1的方法,因为解析的很清楚

2、原文链接:/s/blog_6d041c110100nxk7.html

#include <unistd.h>#include <stdio.h>#include <dirent.h>#include <string.h>#include <sys/stat.h>void printdir(char *dir, int depth){DIR *dp;struct dirent *entry;struct stat statbuf;if((dp = opendir(dir)) == NULL) {fprintf(stderr,"cannot open directory: %s\n", dir);return;}chdir(dir);while((entry = readdir(dp)) != NULL) {lstat(entry->d_name,&statbuf);if(S_ISDIR(statbuf.st_mode)) {if(strcmp(".",entry->d_name) == 0 ||strcmp("..",entry->d_name) == 0)continue;printf("%*s%s/\n",depth,"",entry->d_name);printdir(entry->d_name,depth+4);}else printf("%*s%s\n",depth,"",entry->d_name);}chdir("..");closedir(dp);}int main(int argc, char* argv[]){char *topdir, pwd[2]=".";if (argc != 2)topdir=pwd;elsetopdir=argv[1];printf("Directory scan of %s\n",topdir);printdir(topdir,0);printf("done.\n");exit(0);}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

网上看到好多这下面这段遍历文件夹下所有文件的c程序,这其实是windows下的,所以在linux下是编译不通过的,切记

#include <stdio.h>#include <io.h>int main (void){_finddata_t fileDir;long lfDir;if((lfDir = _findfirst(dir,&fileDir))==-1l)printf("No file is found\n");else{printf("file list:\n");do{printf("%s\n",fileDir.name);}while( _findnext( lfDir, &fileDir ) == 0 );}_findclose(lfDir);return 0;}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。