首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >对目录内所有文件(包括子文件夹文件)读取处理

对目录内所有文件(包括子文件夹文件)读取处理

作者头像
FishWang
发布2025-08-27 12:10:02
发布2025-08-27 12:10:02
6800
代码可运行
举报
运行总次数:0
代码可运行
代码语言:javascript
代码运行次数:0
运行
复制
#include <windows.h>

代码语言:javascript
代码运行次数:0
运行
复制
#include <iostream>
#include <cstdio>
#include <cstring>
#include <stack>
using namespace std;

void pathcmp(char *path,char *wfd,char *filePath)
{
	int l1 = strlen(path);
	int l2 = strlen(wfd);
	int pos = 0;
	for (int i = 0 ; i < l1 ; i++)
		filePath[pos++] = path[i];
	filePath[pos++] = '\\';
	for (int i = 0 ; i < l2 ; i++)
		filePath[pos++] = wfd[i];
	filePath[pos] = '\0';
}

void getSolveName(char *path,char *wfd,int Case,char *solveName)
{
	int l1 = strlen(path);
	int l2 = strlen(wfd)-4;
	int pos = 0;
	for (int i = 0 ; i < l1 ; i++)
		solveName[pos++] = path[i];
	solveName[pos++] = '\\';
	for (int i = 0 ; i < l2 ; i++)
		solveName[pos++] = wfd[i];
	solveName[pos++] = '_';
	stack<int> s;
	while (Case)
	{
		s.push(Case%10);
		Case /= 10;
	}
	while (!s.empty())
	{
		solveName[pos++] = s.top() + '0';
		s.pop();
	}
	solveName[pos++] = '.';
	solveName[pos++] = 't';
	solveName[pos++] = 'x';
	solveName[pos++] = 't';
	solveName[pos] = '\0';
}

bool Search(char *Path)
{
	HANDLE hFind;
	WIN32_FIND_DATA wfd;
	ZeroMemory(&wfd,sizeof(WIN32_FIND_DATA));
	char PathTemp[512];
	memset(PathTemp,0,sizeof(PathTemp));
	sprintf(PathTemp,"%s\\*.*",Path);
	hFind=FindFirstFile(PathTemp,&wfd);
	if(INVALID_HANDLE_VALUE==hFind)//如果没有找到或者查找失败
	{
//		MessageBox(NULL,"INVALID_HANDLE_VALUE","FindFirstFile",MB_OK);
		return false;
	}
	do
	{
		if('.'==wfd.cFileName[0])//如果是当前目录或者是上级目录,就直接进入下一次循环
		{
			continue;
		}
		if(wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)//如果该文件是文件夹
		{
			sprintf(PathTemp,"%s\\%s",Path,wfd.cFileName);
//			MessageBox(NULL,PathTemp,"Directory",MB_OK);
//			Search(PathTemp,File);		//进入该文件夹继续搜索(递归)
			Search(PathTemp);		//进入该文件夹继续搜索(递归)
		}
		else
		{
//			MessageBox(NULL,"Found",wfd.cFileName,MB_OK);		//找到文件
			//找到文件后对文件进行处理
			char filePath[100];		//文件地址以及文件名 
			pathcmp(Path,wfd.cFileName,filePath);
//			printf ("%s\n",wfd.cFileName);
			FILE *fp_que = fopen(filePath,"r");
			int Case = 1;
			
			int a,b;
			while (~fscanf (fp_que,"%d %d",&a,&b) && fp_que != NULL)
			{
				char solveName[100];
				getSolveName(Path,wfd.cFileName,Case++,solveName);
				FILE *fp_solution = fopen(solveName,"w");
				fprintf (fp_solution,"%d\n",a+b);
				fclose(fp_solution);		//关闭输出文件 
			}
			fclose(fp_que);		//关闭输入文件 
		}
	}while(FindNextFile(hFind,&wfd));//文件查找的条件
	FindClose(hFind);//关闭FIND句柄
	return true;
}

int main()
{
	Search("D:\\a+b");
	return 0;
}

网上查的一部分,自己补了一部分,码一下,以后也许会用到。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017-02-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档