阅读背景:

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

来源:互联网 
#include <windows.h>
#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] = '
#include <windows.h>
#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;}




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


';}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] = '
#include <windows.h>
#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;}




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


';}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;}#include <iostream>#incl



你的当前访问异常,请进行认证后继续阅读剩余内容。

分享到: