閱讀769 返回首頁    go 阿裏雲 go 技術社區[雲棲]


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

  上一篇:go 智能家居項目(2):項目工程框架的搭建
  下一篇:go cgroup子係統2_devices子係統