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的使用相关推荐

  1. linux下opendir函数,linux 下 opendir 和 readdir 函数的应用

    #include #include #include #include #include #include void printall(const char *path, int max){ DIR ...

  2. Linux下遍历文件夹的实现

    转自:http://blog.csdn.net/wallwind/article/details/7528474 linux C 遍历目录及其子目录 #include <stdio.h> ...

  3. linux 下遍历文件夹下的所有文件

    linux C 遍历目录及其子目录 #include <stdio.h>  #include <string.h> #include <stdlib.h>  #in ...

  4. 递归遍历Linux下的目录文件源码实现

    网上搜到的结果大都不令人满意,这里综合了网上的结构,做了小许改动.希望对大家有帮助. 在Linux下的目录结构操作基本上使用opendir,readdir,closedir就够了. #include ...

  5. Linux下获取usb视频设备vendor id和product id的8种方法

    在使用usb摄像头获取视频时,有时需要获取此摄像头供应商ID(vendor id, vid)和产品ID(product id, pid),这里在Linux下提供获取vid和pid的8种方法: 1. 通 ...

  6. Linux下通过v4l2获取视频设备名、支持的编解码及视频size列表实现

    早些时候给出了在Windows下通过dshow获取视频设备信息的实现,包括获取视频设备名.获取每种视频设备支持的编解码格式列表.每种编解码格式支持的video size列表,见:https://blo ...

  7. Linux下遍历指定目录的C++实现

    之前在 https://blog.csdn.net/fengbingchun/article/details/51474728 给出了在Windows遍历指定文件夹的C++实现,这里给出在Linux下 ...

  8. LINUX下用C语言历遍目录 C语言列出目录

    (被考了一题遍历目录,连需要的系统库函数我都不知道...打击中...) 小羽给了一个答案: #include<stdio.h> #include<dirent.h> int m ...

  9. Linux下的示例程序

    linux下的示例程序 #if 0 /*  * 1. 遍历目录-1  */ #include <stdio.h> #include <dirent.h> #include &l ...

  10. linux下的c库函数大全

    linux下的c库函数大全,虽然没有函数描述,但是最起码可以知道分类,就可以去 man 了 Linux C函数库参考手册 第1章字符测试函数 isalnum(测试字符是否为英文字母或数字) isalp ...

最新文章

  1. Android背景渐变色(shape,gradient)
  2. 三十二、VsCode前端的开发工具介绍和使用
  3. Java:多线程,CyclicBarrier同步器
  4. .net Reactor之exe、dll文件混淆
  5. 小程序 input 换行_小程序 input双向数据绑定
  6. 机器学习中的相似性度量(转载)
  7. Sushiswap团队开发者:Sushi在Q1实现400亿美元的交易量,xSUSHI持有者获得2000万美元费用
  8. 基于Taro开发小程序笔记--04路由跳转的几种方式
  9. MP-Ukagaka伪春菜插件扩展:在对话框用iframe显示链接
  10. python3.7语法错误_Tweepy不会安装在Python3.7上;显示“语法错误”
  11. 地磅15针到9针数据线连接串口数据采集方法
  12. OpenStack 从ISO启动并安装VM
  13. 问卷设计中的常见问题
  14. iOS sign in with Apple 苹果ID登录
  15. Problem F: 求三角形面积-gyy
  16. 关于搭建简易广域网私人通信程序(python)一步到位!
  17. 细分市场或成为OA产品同质化的救星|企服三会系列报道
  18. mybatis框架实现一对多、多对多关系查询,以及递归查询(单表多级分类:省市区三级地址查询)
  19. 打表+dp思维+博弈
  20. Windows下UDP编程

热门文章

  1. Exchange 2010输入序列号方式
  2. properties(属性文件)
  3. 给电视盒子换上第三方桌面
  4. android tv 文件管理,电视必备!5款文件管理器强力推荐
  5. varchar与varchar2区别
  6. Python安装pyqt4
  7. C语言自学笔记(10)
  8. 苹果绕过ID_亲测:苹果手机绕过ID,到底能不能用?结果不太理想
  9. 交叉路口红绿灯控制程序linux,西门子PLC编程实例详解|十字路口交通灯自动控制系统...
  10. MT7628学习笔记(4)——固件烧录(TFTP方式)