Products
GG网络技术分享 2025-11-22 23:34 1
嘿嘿,巨大家优良!今天我要给巨大家讲讲一个超级酷的手艺——非递归遍历文件夹!听起来有点麻烦,但其实呢,就像玩儿游戏一样轻巧松。准备优良了吗?我们一起来学吧!
哎呀,这玩意儿问题问得优良。非递归遍历,就是不用那种一直往里跳的递归方法,而是像走迷宫一样,一步步地走出来。比如说我们要走一个迷宫,不是一直往里跳,而是走一步,kankan有没有出路,然后再走下一步。这样,我们就Neng不迷路,还Neng找到出口。

用c语言实现非递归遍历,就像写一个细小故事一样。我们得有一个起点,然后一步一步地写下去。下面 我就给巨大家举个例子,kankan怎么写:
//这里有个实例,你Nengkankan
EnmuDirectory
把迭代得到的非文件文件夹项,即子目录保存到一个stack中。
if
//查找文件错误
wsprintf;
if) == INVALID_HANDLE_VALUE)
FILE *fp;
{
}
//当然你也Neng用其它方法琢磨 名。或倒序查“.”
lstrcmp) == )
//过滤.和..
//构造相对路径
//绝对路径,例:c:\windows\system32\cmd.exe
WIN32_FIND_DATA FindFileData;
//查找文件的句柄
//关闭句柄
//清空结构。可有可无的一句代码。函数退出会自动清空。
return ;
接着逐个弹出栈顶元素并迭代之,就实现了以非递归方式遍历文件夹。
HANDLE hListFile;
fp = fopen;
ZeroMemory);
File_Handle = _findfirst;
//查找第一个文件, 得到查找句柄,Ru果FindFirstFile返回INVALID_HANDLE_VALUE则返回
//“.”代表本级目录“..”代表父级目录
FindClose;
char szFullPath;
fclose;
do
if fputs;
}while);
else
if)
/************************************************/
//循环,查找下一个文件
例程:
char *pszDestPath为需要遍历的目标路径
continue;
i++;
//Ru果是文件夹,则递归调用EnmuDirectory函数
int main
int File_Handle;
*参数说明:
int i=;
struct _finddata_t files;
_findclose;
这是windows api版的,还有MFC版的和C版的。要的话来找我Q:
//把pszFileType指向cFileName的倒数第三个数符。基本上原因是一般 名长远为3个字符。
//这里你Neng自己添加琢磨是某种类型文件的代码。Neng根据
if) == ||
//Ru果是jpg的文件
//构造全路径
//有少许不了初始化一下
用c语言遍历文件夹, 其实就像我们玩儿捉迷藏一样,得一步一步来。下面 我就给巨大家讲讲步骤:
优良了今天我们就学到这儿吧!非递归遍历文件夹其实并不困难,只要我们一步一步地来就像玩游戏一样,就Neng轻巧松掌握了。希望巨大家douNeng成为编程细小达人哦!
哦对了Ru果你觉得这篇细小文章有用,别忘了点赞和分享哦!
Demand feedback