获取文件名

#include "stdafx.h" #include <iostream> #include <Windows.h> using namespace std; struct fileName { char Fname[512]; fileName *pNext; }; //用于保存文件名 fileName *pHead = NULL; void FindPathFile(char *path) { WIN32_FIND_DATA FD; ZeroMemory(&FD,sizeof(WIN32_FIND_DATA)); //清空 HANDLE Hand; char FilePath[512]; ZeroMemory(FilePath,512); fileName *p = new fileName; ZeroMemory(p,sizeof(fileName)); fileName *pTemp = pHead = p; strcpy_s(FilePath,path); //将路径复制给FilePath if (FilePath[strlen(FilePath)-1] != '//') //判断最后是不是"/" { strcat_s(FilePath,"//*"); //要加/*才能浏览本文件夹,注意双引号与单引号 } Hand = FindFirstFile(FilePath,&FD); //看MSDN if (Hand == INVALID_HANDLE_VALUE) { return; //按照路径打开失败,则结束 } else while(1) { if (FindNextFile(Hand,&FD)) { //创建链表保存文件名 strcpy_s(p->Fname,FD.cFileName); p = new fileName; ZeroMemory(p,sizeof(fileName)); pTemp->pNext = p; pTemp = p; //cout << FD.cFileName << endl; } else break; }; FindClose(Hand); } int _tmain(int argc, _TCHAR* argv[]) { FindPathFile("G://VC2008//FindFileTest//FindFileTest//Debug"); fileName *p = pHead; while(p->pNext) { cout << p->Fname << endl; p = p->pNext; } return 0; }

 

 

这只是个简单的获取文件名得程序,还可以使用CFileFind类,要浏览文件夹的文件,在路径后必须为"/*",使用FindFirstFile()打开第一个文件,使用FindNextFile()查找下一个文件,

不过找到的值中,第一个为".",第二个为"..",接着才是文件名;如下图:

 

 获取文件名_第1张图片

 

 

不过我之前出现过错误,我也无法理解:

把上面代码中的while(1)改为

while(FindNextFile(Hand,&FD) != 0) { strcpy_s(p->Fname,FD.cFileName); p = new fileName; ZeroMemory(p,sizeof(fileName)); pTemp->pNext = p; pTemp = p; }  

 

 会报内存访问出错.....我只能淡定了......不知道为什么...

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(Path,include)