请我如何c语言遍历文件夹

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了请我如何c语言遍历文件夹相关的知识,希望对你有一定的参考价值。

输入:文件夹路径,如:D:\MATLAB\R2010a\work;

输出:将遍历该文件夹下(包括子文件夹)所有图像文件(.jpg;.bmp;.gif;.png;格式文件)后得到的所有图像文件路径写入一.txt文件(此TXT文件并不要求作为输入,固定为程序文件夹下一TXT文件即可);
最好程序有注释,谢谢

#include <windows.h>

/************************************************/
*参数说明:
char *pszDestPath为需要遍历的目标路径
/************************************************/

EnmuDirectory(char *pszDestPath)

//此结构说明参MSDN
WIN32_FIND_DATA FindFileData;
//查找文件的句柄
HANDLE hListFile;
//绝对路径,例:c:\windows\system32\cmd.exe
char szFullPath[MAX_PATH];
//相对路径
char szFilePath[MAX_PATH];
//构造相对路径
wsprintf(szFilePath, "%s\\*", pszDestPath);
//查找第一个文件,获得查找句柄,如果FindFirstFile返回INVALID_HANDLE_VALUE则返回
if((hListFile = FindFirstFile(szFilePath, &FindFileData)) == INVALID_HANDLE_VALUE)

//查找文件错误
return 1;

else

do

//过滤.和..
//“.”代表本级目录“..”代表父级目录
if( lstrcmp(FindFileData.cFileName, TEXT(".")) == 0 ||
lstrcmp(FindFileData.cFileName, TEXT("..")) == 0 )

continue;

//构造全路径
wsprintf(szFullPath, "%s\\%s", pszDestPath, FindFileData.cFileName);
//读取文件属性,如果不是文件夹
if(!(FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY))

//这里你可以自己添加分析是某种类型文件的代码。可以根据
//扩展名分析。

//这里有个实例,你可以看看

//有必要初始化一下
char *pszFileType = NULL;
//把pszFileType指向cFileName的倒数第三个数符。因为一般扩展名长为3个字符。
//当然,你也可以用其它方法分析扩展名。或倒序查“.”
pszFileType = &(FindFileData.cFileName[strlen(FindFileData.cFileName) - 3]);
//如果是jpg结尾的文件
if(!stricmp(pszFileType, "jpg"))

FILE *fp;
//或许这里打开C:\\data.txt不应该用"w+",你可试着来
fp = fopen("c:\\data.txt", "w+");
if(fp) fputs(szFullPath, fp);
fclose(fp);




//如果是文件夹,则递归调用EnmuDirectory函数
if(FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)

EnmuDirectory(szFullPath);

//循环,查找下一个文件
while(FindNextFile(hListFile, &FindFileData));

//关闭句柄
FindClose(hListFile);
//清空结构。可有可无的一句代码。函数退出会自动清空。
ZeroMemory(&FindFileData, sizeof(FindFileData));
return 0;


这是windows api版的,还有MFC版的和C版的。要的话来找我Q:503267714
参考技术A 现成的没有,给你参考下:

c++:
1、CFileFind类实现遍历文件,FindNext()查找下一个文件
2、比较文件后缀,符合要求就写入txt

有不懂得话加Q:2311776177!
参考技术B 二楼真有耐心

c语言如何遍历枚举元素

可不可以用数组来遍历枚举元素,例如一个我想枚举的范围是0-999之间的任何数,该怎么样写呢

用for循环:
for(i=1;i<=999;i++)
/*对数组a[i]进行处理*/}
当然也可以用while或do…while语句。
参考技术A for(i=1;i<=999;i++)

以上是关于请我如何c语言遍历文件夹的主要内容,如果未能解决你的问题,请参考以下文章

C语言:如何遍历指定的文件夹(可以包括子文件夹)中的每一个文件名

怎么用C语言编程遍历文件夹下所有文件名

在windows下 怎么用c语言遍历文件夹?要用纯c的

C语言遍历目录中的文件

用C语言编出遍历出某个目录以及其子目录下所有以TXT为扩展名的文本文件

C语言遍历所有文件的函数!