运维开发网

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

运维开发网 https://www.qedev.com 2020-02-05 17:40 出处:网络 作者: 网络整理
c语言全盘搜索指定文件的实例代码,需要的朋友可以参考一下

复制代码 代码如下:

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

}

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

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

 

使用递归来搜索文件,效率低,使用多线程效果更好。

 

0

精彩评论

暂无评论...
验证码 换一张
取 消