#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;
}
网上查的一部分,自己补了一部分,码一下,以后也许会用到。