#include <windows.h>
#include <stdio.h>
FILE *fp;
void findFile(char filePath[])//这个是你要的函数
{
char szFind[MAX_PATH];//这是要找的
WIN32_FIND_DATA FindFileData;
HANDLE hFind;
char szFile[MAX_PATH];
strcpy(szFind,filePath);
strcat(szFind,"//*.*");//应用通配符找这个目录下的所以文件,包括目录
hFind=FindFirstFile(szFind,&FindFileData);
if(INVALID_HANDLE_VALUE == hFind) return;
while(TRUE)
{
if(FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)//这是目录
{
if(FindFileData.cFileName[0]!='.')//.表示当前目录,由于每个目录下面都有两个默许目录就是..和.分别表示上一级目录和当前目录
{
strcpy(szFile,filePath);
strcat(szFile,"//");
strcat(szFile,FindFileData.cFileName);
findFile(szFile);//寻觅这个目录下面的文件
}
}
else
{
fprintf(stdout,"%s//%s/n",filePath,FindFileData.cFileName);//打印出目录下的文件的途径和称号
fprintf(fp,"%s//%s/n",filePath,FindFileData.cFileName);//这将结果存档到c://path.txt中。
}
if(!FindNextFile(hFind,&FindFileData))//寻觅下一个文件
break;
}
FindClose(hFind);//关闭句柄
}
int main()
{
fp = fopen("C://path.txt","w");
findFile("D://e-book//实习//随笔//读书ing");//这里是你要遍历的目录,你自己能够改动,它会显现这个目录下的一切文件,包括这个目录下子目录下的文件。
fclose(fp);
return 0;
}
#include <stdio.h>
#include <string.h>
#include <dir.h>
void find(char *c)
{
struct ffblk fb,fm;
int dr,df;
char dir[255]={0},tmp[255];
strcpy(tmp,c);
dr=findfirst(strcat(tmp,"//*"),&fb,FA_DIREC);
while (!dr)
{
if (strcmp(fb.ff_name,".")&&strcmp(fb.ff_name ,"..")&&fb.ff_attrib ==FA_DIREC) {
strcpy(dir,c);
strcat(dir,"//");
strcat(dir,fb.ff_name);
find(dir);
}
dr=findnext(&fb);
}
df=findfirst(strcat(tmp,".*"),&fm,0);
while (!df)
{
printf("%s//%s/n",c,fm.ff_name);
df=findnext(&fm);
}
}
int main(void)
{
find("c:");
return 0;
}