1.网上有些代码有问题,改进如下
#include <stdio.h> #include<windows.h> #include<iostream> #include<string> using namespace std; int count = 0; void find(char * lpPath) { char save_path[200]; char szFile[MAX_PATH] = {0}; char szFind[MAX_PATH]; char root[MAX_PATH]; WIN32_FIND_DATA FindFileData; strcpy(szFind,lpPath); strcat(szFind,"*.*"); HANDLE hFind=::FindFirstFile(szFind,&FindFileData); if(INVALID_HANDLE_VALUE == hFind) return; while(TRUE) { if(FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) { if(FindFileData.cFileName[0]!='.') { strcpy(szFile,lpPath); //strcat(szFile,"//"); strcat(szFile,FindFileData.cFileName); strcat(szFile,"//"); find(szFile); } } else { strcpy(root, lpPath); strcat(root,FindFileData.cFileName); cout << root << endl; } if(!FindNextFile(hFind,&FindFileData)) break; } FindClose(hFind); } void main() { find("..//2003//"); }