769
技术社区[云栖]
【小程序】找出文件夹中特定后缀名的文件,并输出到txt
因为这几天在弄Qt,这些高级语言真的没啥,但是环境却是很难配好,要放入所有的Qt库文件,必须找出所有 .lib 后缀的文件,于是。。。这个程序应运而生。
这个小程序没有文件夹的嵌套,其实归根结底,程序的核心就是一些系统函数的调用和字符串处理。
直接上代码:
//只需要输出当前文件夹里面的文件名
//不用管嵌套文件夹
#include "stdio.h"
#include "windows.h"
#include <string.h>
//对不满足要求的文件不予显示
bool process(char str[],char suffix[])
{
if(str[0]=='.')
return false;
//去掉没有后缀的
int i;
for(i=0;i<strlen(str);i++)
{
if(str[i]=='.')
break;
}
//说明没有后缀
if(i==strlen(str))
return false;
//如果有后缀,说明此时的i就是那个 '.' 的位置
int pointPos=i;
for(i=pointPos+1;i<strlen(str);i++)
{
if(str[i]!=suffix[i-pointPos-1])
break;
}
//说明后缀不同
if(i!=strlen(str))
return false;
return true;
}
void find(char * lpPath,char *suf)
{
//这里的proStr必须要分配内存空间,如果只是char *,strcpy会报错
char proStr[MAX_PATH];
char szFind[MAX_PATH],szFile[MAX_PATH];
WIN32_FIND_DATA FindFileData;
strcpy(szFind,lpPath);
strcat(szFind,"\\*.*");
HANDLE hFind=::FindFirstFile(szFind,&FindFileData);
if(INVALID_HANDLE_VALUE == hFind)
return;
while(TRUE)
{
strcpy(proStr,FindFileData.cFileName);
//进入处理函数进行判断,传入文件名
if(process(proStr,suf)==true)
printf("%s\n",FindFileData.cFileName);
if(!FindNextFile(hFind,&FindFileData))
break;
}
}
void main()
{
char tFPath[50];
char suffix[30];
printf("Please enter the target folder path:\n");
scanf("%s",tFPath);
//strcpy(tFPath,"D:\\Qt\\4.8.2\\lib");
printf("Please enter the Suffix you want:\n");
scanf("%s",suffix);
//会生成到d盘的result.txt文件
//必须放到后面,不然printf就打印到文件里面了
freopen("d:/result.txt","w",stdout);
find(tFPath,suffix);
}
运行效果:

最后更新:2017-04-03 05:39:52