【小程序】找出文件夾中特定後綴名的文件,並輸出到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