【小程序】找出文件夹中特定后缀名的文件,并输出到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);
}

运行效果:

【小程序】找出文件夹中特定后缀名的文件,并输出到txt



上一篇:wget 使用三例


下一篇:AsWing 应用之JTable的例子