求一个windows下的纯C语言实现的文件夹遍历程序,要可以遍历子文件夹,不要unix下的和C++的。

2024-12-21 15:07:04
推荐回答(4个)
回答1:

// 这是我以前写的一个,你参考参考 要用到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:");
}

回答2:

伪代码:
void function(LPCTSTR lpszPath)
{
开始查找;
if (没有找到文件)
return;
do
{
if (找到的文件是目录)
function(找到的目录);
else
对文件进行操作;
} while (查找下一个文件并成功);
}
实现这个算法所需要用到的API函数有:
·FindFirstFile;
·FindNextFile;

具体函数的用法 查看下msdn吧 或者google一下

回答3:

我只能告诉你原理,你可以自己查相关的函数套用.!~!~!@@@

你先要切换到当前目录,就是你要遍历的地方.
这种方法是用递归,如果是文件,一直找下去.直到没有文件.这里也需要函数去判断这个文件是文件夹还是程序.

回答4:

哥们 unix环境编程 也就是APUE里面有源代码 你可以照着改改