C:磁盘遍历

本文介绍了如何在C语言中使用非标准的Linux和WindowsAPI(_findfirst和_opendir等)进行磁盘遍历,包括它们的函数说明和递归函数的注意事项。特别强调了递归遍历可能带来的栈溢出问题及避免使用递归的替代方法。
摘要由CSDN通过智能技术生成

1、磁盘遍历:

a)属于非标C语言函数,linux(苹果mac和ios)和windows两大系统提供的。

b)linux标准:https://blog.csdn.net/SweeNeil/article/details/84788542

#include<sys/types.h>
#include<dirent.h>
DIR* opendir (const char * path );
struct dirent *readdir(DIR *dp);    
void rewinddir(DIR *dp);   
int closedir(DIR *dp);    
long telldir(DIR *dp);   
void seekdir(DIR *dp,long loc);  

c)windows标准:
https://blog.csdn.net/Jcrry/article/details/130091614

#include <io.h>
long _findfirst(const char *, struct _finddata_t *);
int _findnext(intptr_t handle,struct _finddata_t *fileinfo); 
_findclose(HANDLE);

2、_findfirst函数说明:

a)long _findfirst(const char * sFileName, struct _finddata_t *fileinfo);
b)功能是获取与指定的文件名称匹配的第一个文件的信息,
c)若成功则返回第一个实例的句柄,否则返回-1L。
d)第一个参数可以代入具体单一的文件名,也可以用通配符*指定一群符合条件集合。

3、_findnext函数说明:

a)int _findnext(intptr_t handle,struct _finddata_t *fileinfo);
b)基于_findfirst返回的集合句柄,继续去获取剩余集合内所有文件的信息。
c)若成功则返回0,否则返回-1

4、递归函数:

a)在函数调用本函数
b)如果没有递归结束条件就是死递归,不断压栈会出现栈溢出。(崩溃)
c)线性递归类似于循环,能用循环就不要用递归。因为递归需要进出栈效率比循环要低很多。
d)在树状的数据结构中,就不得不使用递归函数,循环不能解决树状遍历。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值