天天看点

c遍历文件

#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;

}