源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

c语言全盘搜索指定文件的实例代码

  • 时间:2022-02-21 20:25 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:c语言全盘搜索指定文件的实例代码
[u]复制代码[/u] 代码如下:
#include<stdio.h> #include<windows.h> void FindFile(char* ,char* ); int count=0;//统计文件数 char fname[32]; #define BUFSIZE 256 int main(int argc,char* argv[]) {         char szLogicalDriveStrings[BUFSIZE];     DWORD iLength;     int iSub;     printf("请输入要搜索的文件名:");     scanf("%s",fname);     ZeroMemory(szLogicalDriveStrings, BUFSIZE);     iLength = GetLogicalDriveStringsA(BUFSIZE-1, szLogicalDriveStrings);     for(iSub=0; iSub<iLength; iSub+=4)     {     //如果不是固定磁盘驱动器:本地硬盘或移动硬盘,忽略       if(GetDriveType(szLogicalDriveStrings+iSub)!=3)             continue;     FindFile(szLogicalDriveStrings+iSub,"*.*");     }     printf("一共发现%d个文件...\n",count);     scanf("%*d");     return 0; } void FindFile(char* pfilename,char* pfilter) {     WIN32_FIND_DATA findfiledate;      HANDLE hfind;     char filename[512];     char lpFileName[512];     char _lpFileName[512];     int i;     int result;     for(i=0;*(pfilename+i)!='\0';i++)           filename[i]=*(pfilename+i);     filename[i]='\0';     //如果最后一个字符不是'\'     if(filename[strlen(filename)-1]!='\\')         strcat(filename,"\\"); //添加'\'     strcpy(lpFileName,filename);     strcat(lpFileName,pfilter);     hfind=FindFirstFile(lpFileName,&findfiledate);     if(hfind==INVALID_HANDLE_VALUE)         return;     do     {         //如果不是目录         if(!(findfiledate.dwFileAttributes&FILE_ATTRIBUTE_DIRECTORY))         {             //如果找到指定文件             if(0==strcmp(fname,findfiledate.cFileName))            {                printf("%s%s\n",filename,findfiledate.cFileName);                  count++;             }         }         //如果是目录         else         {             //.和..不输出             if(findfiledate.cFileName[0]!='.')             {                 strcpy(_lpFileName,filename);                 strcat(_lpFileName,findfiledate.cFileName);                 FindFile(_lpFileName,pfilter);  //递归             }         }     }while(FindNextFile(hfind,&findfiledate));//FindNextFile返回为真,继续搜索     FindClose(hfind);     return; }
[img]http://files.jb51.net/file_images/article/201303/2013313231933065.jpg[/img] [img]http://files.jb51.net/file_images/article/201303/2013313232124790.jpg[/img]   使用递归来搜索文件,效率低,使用多线程效果更好。  
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部