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