linux下opendir的使用
opendir:
作用:打开一个目录
头文件:
#include <sys/types.h>#include <dirent.h>
函数原型
DIR *opendir(const char *name);
描述/返回值:打开目录文件获取文件名为path的子目录下的所由文件和目录的列表,如果path是个文件则返回值为NULL
readdir:
头文件:
#include <dirent.h>
函数原型:
struct dirent *readdir(DIR *dirp);
描述:成功则返回下个目录进入点,返回本目录位置指针所指的文件并以结构体的方式返回. 有错误发生或读取到目录文件尾则返回NULL.
返回值:返回dirp文件下的一个文件的信息
struct dirent的定义
struct dirent
{
ino_t d_ino; 文件的inode
off_t d_off; 目录文件开头至此目录进入点的位移
signed short int d_reclen;的长度, 不包含NULL 字符
unsigned char d_type; 所指的文件类型 d_name 文件名
char d_name[256];
};
closedir:
头文件
#include <sys/types.h>#include <dirent.h>
函数原型
int closedir(DIR *dirp);
描述:关闭目录文件
返回值: 若函数执行成功,返回0;若失败,返回 -1
实列:
#include <string.h>
#include <dirent.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <stdlib.h>
#include <fcntl.h>
#include <stdint.h>
#include <stdio.h>#deifne FILENAME_MAX 1024//文件名称最大字节数//此函数为公式函数,也就是或这是万能函数,在任何项目中此函数都可以发挥作用
void do_ls(char *dirname,char filename[][FILENAME_MAX ],int *file_num)
{DIR *dir_ptr;//目录描述符struct dirent *direntp;*file_num = 0;//初始化文件个数dir_ptr = opendir(dirname);//打开目录if(dir_ptr == NULL)//打开目录失败{fprintf(stderr,"Ls: can not open %s",dirname);//报错}else //打开目录成功{while (1){direntp = readdir(dir_ptr);//读取目录if(direntp != NULL)//读取的数据不为空{// 在此处理子文件,如果是需要其他类型格式文件,需要在此加几个if分支if (direntp->d_type == DT_REG)//如果为普通文件格式{strcpy(filename[*file_num],dirname);strcat(filename[*file_num],"/");strcat(filename[*file_num],direntp->d_name);printf("%d : %s\n", *file_num,filename[*file_num]);(*file_num)++;}}else{break;}}closedir(dir_ptr);//关闭目录}
}int main()
{char filename[20][FILENAME_MAX];//文件名称数组int file_num;//文件个数char dirname[128] = "file_dir";//目录名do_ls(dirname,filename,&file_num);printf("file_num = %d\n",file_num);//打印文件个数
}
linux下opendir的使用相关推荐
- linux下opendir函数,linux 下 opendir 和 readdir 函数的应用
#include #include #include #include #include #include void printall(const char *path, int max){ DIR ...
- Linux下遍历文件夹的实现
转自:http://blog.csdn.net/wallwind/article/details/7528474 linux C 遍历目录及其子目录 #include <stdio.h> ...
- linux 下遍历文件夹下的所有文件
linux C 遍历目录及其子目录 #include <stdio.h> #include <string.h> #include <stdlib.h> #in ...
- 递归遍历Linux下的目录文件源码实现
网上搜到的结果大都不令人满意,这里综合了网上的结构,做了小许改动.希望对大家有帮助. 在Linux下的目录结构操作基本上使用opendir,readdir,closedir就够了. #include ...
- Linux下获取usb视频设备vendor id和product id的8种方法
在使用usb摄像头获取视频时,有时需要获取此摄像头供应商ID(vendor id, vid)和产品ID(product id, pid),这里在Linux下提供获取vid和pid的8种方法: 1. 通 ...
- Linux下通过v4l2获取视频设备名、支持的编解码及视频size列表实现
早些时候给出了在Windows下通过dshow获取视频设备信息的实现,包括获取视频设备名.获取每种视频设备支持的编解码格式列表.每种编解码格式支持的video size列表,见:https://blo ...
- Linux下遍历指定目录的C++实现
之前在 https://blog.csdn.net/fengbingchun/article/details/51474728 给出了在Windows遍历指定文件夹的C++实现,这里给出在Linux下 ...
- LINUX下用C语言历遍目录 C语言列出目录
(被考了一题遍历目录,连需要的系统库函数我都不知道...打击中...) 小羽给了一个答案: #include<stdio.h> #include<dirent.h> int m ...
- Linux下的示例程序
linux下的示例程序 #if 0 /* * 1. 遍历目录-1 */ #include <stdio.h> #include <dirent.h> #include &l ...
- linux下的c库函数大全
linux下的c库函数大全,虽然没有函数描述,但是最起码可以知道分类,就可以去 man 了 Linux C函数库参考手册 第1章字符测试函数 isalnum(测试字符是否为英文字母或数字) isalp ...
最新文章
- Android背景渐变色(shape,gradient)
- 三十二、VsCode前端的开发工具介绍和使用
- Java:多线程,CyclicBarrier同步器
- .net Reactor之exe、dll文件混淆
- 小程序 input 换行_小程序 input双向数据绑定
- 机器学习中的相似性度量(转载)
- Sushiswap团队开发者:Sushi在Q1实现400亿美元的交易量,xSUSHI持有者获得2000万美元费用
- 基于Taro开发小程序笔记--04路由跳转的几种方式
- MP-Ukagaka伪春菜插件扩展:在对话框用iframe显示链接
- python3.7语法错误_Tweepy不会安装在Python3.7上;显示“语法错误”
- 地磅15针到9针数据线连接串口数据采集方法
- OpenStack 从ISO启动并安装VM
- 问卷设计中的常见问题
- iOS sign in with Apple 苹果ID登录
- Problem F: 求三角形面积-gyy
- 关于搭建简易广域网私人通信程序(python)一步到位!
- 细分市场或成为OA产品同质化的救星|企服三会系列报道
- mybatis框架实现一对多、多对多关系查询,以及递归查询(单表多级分类:省市区三级地址查询)
- 打表+dp思维+博弈
- Windows下UDP编程