c语言文本检索程序,c语言全盘搜索指定文件的实例代码

#include

#include

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

{

//如果不是固定磁盘驱动器:本地硬盘或移动硬盘,忽略

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;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值