目录的读取
📅 2026/7/2 8:43:48
👁️ 次浏览
1. opendir() - 打开目录1.1 函数原型#includedirent.hDIR*opendir(constchar*name);DIR*fdopendir(intfd);// 使用文件描述符需配合open()函数使用1.2 参数说明name: 要打开的目录路径名可以是相对路径或绝对路径fd: 已打开目录的文件描述符仅用于fdopendir()1.3 返回值成功: 返回指向DIR结构体的指针目录流指针失败: 返回NULL并设置errno表示错误类型1.4 DIR结构体DIR是一个不透明数据类型用于表示一个打开的目录流。开发者通常不需要直接访问其内部成员只需将其作为句柄传递给其他目录操作函数。1.5 使用步骤包含头文件dirent.h调用opendir()打开目标目录检查返回值是否为NULL处理可能的错误将返回的DIR*指针保存供后续使用1.6 错误处理常见的错误情况包括ENOENT: 目录不存在EACCES: 权限不足ENOTDIR: 路径不是目录EMFILE: 进程打开文件数达到上限2. readdir() - 读取目录项2.1 函数原型#includedirent.hstructdirent*readdir(DIR*dirp);2.2 参数说明dirp: 由opendir()返回的目录流指针2.3 返回值成功: 返回指向struct dirent的指针表示目录中的一个条目目录结束: 返回NULL此时不设置errno出错: 返回NULL并设置errno2.4 struct dirent结构体structdirent{ino_td_ino;/* 索引节点号 */off_td_off;/* 目录文件中的偏移 */unsignedshortd_reclen;/* 记录长度 */unsignedchard_type;/* 文件类型 */chard_name[256];/* 文件名 */};重要成员说明d_name: 文件名以null结尾的字符串d_type: 文件类型标识符常用值包括DT_REG: 普通文件DT_DIR: 目录DT_LNK: 符号链接DT_UNKNOWN: 未知类型2.5 使用模式典型的目录遍历模式structdirent*entry;while((entryreaddir(dirp))!NULL){// 处理每个目录项printf(文件名: %s\n,entry-d_name);}2.6 注意事项readdir()不是线程安全的多线程环境应使用readdir_r()返回的struct dirent指针指向静态存储区每次调用会被覆盖特殊目录项.当前目录和..上级目录也会被读取3. closedir() - 关闭目录3.1 函数原型#includedirent.hintclosedir(DIR*dirp);3.2 参数说明dirp: 要关闭的目录流指针3.3 返回值成功: 返回0失败: 返回-1并设置errno3.4 重要性及时关闭目录流非常重要原因包括释放系统资源文件描述符确保目录内容变更能及时反映避免文件描述符泄漏4. 完整示例程序4.1 基本目录遍历#includestdio.h#includedirent.h#includeerrno.h#includestring.hintlist_directory(constchar*path){DIR*diropendir(path);if(dirNULL){fprintf(stderr,无法打开目录 %s: %s\n,path,strerror(errno));return-1;}printf(目录 %s 的内容:\n,path);printf(\n);structdirent*entry;intcount0;while((entryreaddir(dir))!NULL){// 跳过 . 和 .. 目录if(strcmp(entry-d_name,.)0||strcmp(entry-d_name,..)0){continue;}printf(%3d. %s,count,entry-d_name);// 根据文件类型添加标识switch(entry-d_type){caseDT_DIR:printf( [目录]);break;caseDT_REG:printf( [文件]);break;caseDT_LNK:printf( [链接]);break;default:printf( [其他]);}printf(\n);}printf(\n);printf(总计: %d 个项目\n,count);if(closedir(dir)-1){fprintf(stderr,关闭目录失败: %s\n,strerror(errno));return-1;}return0;}intmain(){constchar*test_dir.;if(list_directory(test_dir)0){printf(目录遍历完成\n);}else{printf(目录遍历失败\n);}return0;}4.2 按文件类型筛选#includestdio.h#includedirent.h#includestring.hvoidlist_files_by_type(constchar*path,unsignedchartype){DIR*diropendir(path);if(dirNULL)return;structdirent*entry;printf(类型 %d 的文件:\n,type);while((entryreaddir(dir))!NULL){if(entry-d_typetypestrcmp(entry-d_name,.)!0strcmp(entry-d_name,..)!0){printf( %s\n,entry-d_name);}}closedir(dir);}intmain(){printf(当前目录下的所有子目录:\n);list_files_by_type(.,DT_DIR);printf(\n当前目录下的所有普通文件:\n);list_files_by_type(.,DT_REG);return0;}
魔兽世界插件开发终极指南:如何用免费开源工具快速上手API查询与宏命令生成 【免费下载链接】wow_api Documents of wow API -- 魔兽世界API资料以及宏工具 项目地址: https://gitcode.com/gh_mirrors/wo/wow_api
还在为魔兽世界插件开发中的API查询和宏命令…
📅 2026/7/2 8:43:48
一、为什么我要专门做一套 GEO 系统?过去十几年,我们习惯讨论的是 SEO:怎么让自己的页面在搜索结果里排到前面。
但这两年明显的变化是——用户越来越习惯直接问大模型:“有什么推荐?”、“哪个产品更适合我࿱…
📅 2026/7/2 8:43:48
更多请点击:
https://codechina.net
第一章:PCIe ACS与IOMMU Group隔离原理深度解析 PCIe ACS(Access Control Services)是PCI Express规范中用于增强设备间内存访问隔离的关键能力,其核心作用在于阻止恶意或故障设备…
📅 2026/7/2 8:43:48
2026 年电子制造业:三条产线,六个趋势
上周去供应商那边做过程审核,厂长跟我说了一句话,琢磨了一路回来。
“去年招了 20 个操作员,春节后走了 15 个。剩下的 5 个,3 个在看招聘软件。”
这大概就是眼下制造…
📅 2026/7/2 9:56:07
如何高效获取PS3游戏更新:智能下载器的完整实战指南 【免费下载链接】PS3GameUpdateDownloader downloader for ps3 game updates (.pkg files) from official sony servers written in python 项目地址: https://gitcode.com/gh_mirrors/ps/PS3GameUpdateDownloa…
📅 2026/7/2 9:56:07
安卓App权限管理终极指南:哪些权限绝对不能给?
你的App可能正在"偷看"你的隐私
每次安装一个新App,你都会看到一个权限请求列表。大多数人看都不看就点了"允许"——然后这个App就可以读取你的联系人、查看你的位置、访问…
📅 2026/7/2 9:56:07
前沿技术介绍:AI智能体视觉(TVA,Transformer-based Vision Agent)是依托Transformer架构与“因式智能体”理论所构建的颠覆性工业视觉技术,属于“物理AI” 领域的一种全新技术形态,完成了从“虚拟世界”到“…
📅 2026/7/2 9:56:07
碧蓝航线Alas自动化脚本:24小时智能管家完全实战指南 【免费下载链接】AzurLaneAutoScript Azur Lane bot (CN/EN/JP/TW) 碧蓝航线脚本 | 无缝委托科研,全自动大世界 项目地址: https://gitcode.com/gh_mirrors/az/AzurLaneAutoScript
还在为碧蓝…
📅 2026/7/2 9:56:07
随着设计图纸、工程模型、高清视频、海量业务数据包……数字化转型下,中小企业日常动辄需要传输GB甚至TB级大文件。长期以来,FTP凭借免费、易部署成为多数企业的首选传输工具,但伴随《数据安全法》《网络安全等级保护2.0》落地、跨区域业务扩…
📅 2026/7/2 9:54:07
1. 项目概述:从“能用”到“精通”的必经之路如果你正在学习或从事网络安全测试,尤其是Web应用安全评估,那么BurpSuite的Intruder模块绝对是你绕不开的核心工具。而Intruder模块里,功能最强大、也最让人又爱又恨的,莫过…
📅 2026/7/2 0:00:33
1. 项目概述:从“找东西”到“精准操控” 做自动化测试,尤其是Web UI自动化,最核心也最让人头疼的一步是什么?不是写复杂的业务逻辑,也不是处理异步加载,而是最基础的—— 让程序找到页面上那个你想操作的…
📅 2026/7/2 0:00:33
1. 项目概述:为什么是Maestro? 如果你正在寻找一个能让你快速上手、告别繁琐配置、并且对移动端UI自动化测试真正友好的框架,那么Maestro很可能就是你一直在等的那个答案。我接触过Appium、Espresso、XCUITest,也折腾过各种基于图…
📅 2026/7/2 0:00:33
6个月前的2025年12月,Boris Cherny 公开宣布自己卸载了 IDE。一时间,Vibe Coding 成了全行业最热的话题。6个月后,当我们回过头来拉一份真实账本,发现事情远没有"一句话生成一个App"那么浪漫。本文从产品经理和研发两个…
📅 2026/6/30 10:04:37
引言:审计结束三个月了,审计员的权限还没关某城商行每年按照监管要求开展至少一次数据安全审计。审计期间,内审部门需要抽样检查各类业务数据——交易流水、客户信息、员工操作日志、权限配置记录。这些数据分布在不同系统中,审计…
📅 2026/7/1 15:35:39
目录
第一步:选对模板,省心一半
第二步:打开扫码点餐功能
开启功能按钮
桌台管理与桌码生成
第三步:个性化设计,打造品牌感
调整点餐页面
设置点餐规则 你还在让顾客站着排队点餐吗?2025年ÿ…
📅 2026/7/2 1:17:03
在业务中快速构建一个能理解私有文档、准确回答专业问题的智能助手,是很多开发团队面临的共同挑战。传统方案往往需要从零开始搭建复杂的 RAG(检索增强生成)系统,涉及文档解析、向量化、检索、大模型调用等多个环节,整…
📅 2026/7/2 9:49:12
FAE放射组学分析工具:医学影像特征探索的完整解决方案 【免费下载链接】FAE FeAture Explorer 项目地址: https://gitcode.com/gh_mirrors/fae/FAE
你是否曾经面对海量医学影像数据感到无从下手?想要从CT、MRI等影像中提取有价值的定量特征&#…
📅 2026/7/2 1:36:45