因为这几天在弄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); }
运行效果: