linux 系统获得当前文件夹下存在的所有文件 scandir函数和struct dirent **namelist结构体[转]
2017-11-09 12:46
549 查看
linux 系统获得当前文件夹下存在的所有文件 scandir函数和struct dirent **namelist结构体
1、引用头文件#include<dirent.h>struct dirent **namelist;
int itotalfile;
itotalfile = scandir(filenameBuf,&namelist,0,alphasort);
char filenamelist[itotalfile][128];
for(int j = 0; j<itotalfile; j++)
{
sprintf(filenamelist[j],"%s",filenameBuf) ;
strcat(filenamelist[j],namelist[j]->d_name);
}
2、
scandir函数:读取特定的目录数据
表头文件:#include <dirent.h>
定义函数:
int scandir(const char *dirp, struct dirent ***namelist,
int (*filter)(const struct dirent *),
int (*compar)(const struct dirent **, const struct dirent **));
函数说明:
scandir()会扫描参数dir指定的目录文件,经由参数select指定的函数来挑选目录结构至参数namelist数组中,最后再调用
参数compar指定的函数来排序namelist 数组中的目录数据。每次从目录文件中读取一个目录结构后便将此结构传给参数select所指的
函数, select函数若不想要将此目录结构复制到namelist数组就返回0,若select为空指针则代表选择所有的目录结构。scandir()会
调用 qsort()来排序数据,参数compar则为qsort()的参数,若是要排列目录名称字母则可使用alphasort(). 结构dirent定义请参考
readdir()
返回值 :成功则返回复制到namelist数组中的数据结构数目,有错误发生则返回-1
错误代码:ENOMEM 核心内存不足
Example
1 /* print files in current directory in reverse order */ 2 #include <dirent.h> 3 main() 4 { 5 struct dirent **namelist; 6 int n; 7 n = scandir(".", &namelist, 0, alphasort); 8 if (n < 0) 9 perror("scandir"); 10 else 11 { 12 while(n--) 13 { 14 printf("%s/n", namelist ->d_name); 15 free(namelist ); 16 } 17 free(namelist); 18 }
相关文章推荐
- linux 系统获得当前文件夹下存在的所有文件 scandir函数和struct dirent **namelist结构体
- Linux学习5之shell显示当前目录下所有的文件和文件夹
- linux 打包当前文件夹下所有文件
- linux 打包当前文件夹下所有文件的方法
- Windows和Linux下枚举(遍历)当前文件夹下所有文件完整路径的命令行
- C# 获得当前文件夹内所有文件的名称,大小,类型,属性,日期的函数
- linux 压缩当前文件夹下所有文件
- linux/mac下将一个文件夹中所有文件从当前目录移动到另一目录下
- 如何在linux下快速生成当前目录下所有文件夹下所有文件的MD5
- linux 移除当前文件夹下的所有.o文件
- Linux下的打印当前文件夹下文件的程序
- Linux_shell脚本_遍历文件夹下所有文件
- linux下的proc文件夹/proc文件系统解析
- 在linux下统计当前文件夹下的文件数
- linux下遍历当前目录下的所有文件和目录
- linux系统调用(文件和文件夹的属性)
- 使用某个文件夹下的所有文件去替换另一个文件夹下及其子文件夹下存在的同名文件(Python实现)
- 搜索文件夹内的所有文件里包含某字符串的linux命令(转)
- 如何获得Linux当前系统网络的总连接数