// 这是我以前写的一个,你参考参考 要用到windows API 函数
#include
#include
#include
#define LEN 1024
// 深度优先递归遍历目录中所有的文件
BOOL DirectoryList(LPCSTR Path)
{
WIN32_FIND_DATA FindData;
HANDLE hError;
int FileCount = 0;
char FilePathName[LEN];
// 构造路径
char FullPathName[LEN];
strcpy(FilePathName, Path);
strcat(FilePathName, "\\*.*");
hError = FindFirstFile(FilePathName, &FindData);
if (hError == INVALID_HANDLE_VALUE)
{
printf("搜索失败!");
return 0;
}
while (::FindNextFile(hError, &FindData))
{
// 过虑.和..
if (strcmp(FindData.cFileName, ".") == 0
|| strcmp(FindData.cFileName, "..") == 0 )
{
continue;
}
// 构造完整路径
wsprintf(FullPathName, "%s\\%s", Path,FindData.cFileName);
FileCount++;
// 输出本级的文件
printf("\n%d %s ", FileCount, FullPathName);
if (FindData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
{
printf("
DirectoryList(FullPathName);
}
}
return 0;
}
void main()
{
DirectoryList("G:");
}
伪代码:
void function(LPCTSTR lpszPath)
{
开始查找;
if (没有找到文件)
return;
do
{
if (找到的文件是目录)
function(找到的目录);
else
对文件进行操作;
} while (查找下一个文件并成功);
}
实现这个算法所需要用到的API函数有:
·FindFirstFile;
·FindNextFile;
具体函数的用法 查看下msdn吧 或者google一下
我只能告诉你原理,你可以自己查相关的函数套用.!~!~!@@@
你先要切换到当前目录,就是你要遍历的地方.
这种方法是用递归,如果是文件,一直找下去.直到没有文件.这里也需要函数去判断这个文件是文件夹还是程序.
哥们 unix环境编程 也就是APUE里面有源代码 你可以照着改改