工作的时候写的一个修改记事本的程序段。记录下
代码如下:
#include <windows.h>
#include <stdio.h>
#include <string.h>
#include <direct.h>
char Chinaname[100]="C:\\Documents and Settings\\Administrator\\桌面\\jince\\Test2\\Chinaname.txt";
int HoZui(char Filename[])
{
int i,j=0;
int len=strlen(Filename);
char s[100],s0[100]="gpj";
for(i=len-1;i>=0;i--)
{
if(Filename[i]=='.')
break;
s[j]=Filename[i];
j++;
}
s[j]='\0';
if(strcmp(s,s0)==0)
return 1;
else
return 0;
}
void mypower1(const char* StartPath,const char* FinalPath)
{
FILE *fp1,*fp2,*fp3;
int c,count=0,chage[100],flag=1;
int pub[10];
memset(pub,0,sizeof(pub));
int i=0,j=0,k=0,n=0;
fp1=fopen(StartPath,"ab+");
fp2=fopen(FinalPath,"ab+");
fp3=fopen(Chinaname,"ab+");
while((c=fgetc(fp3))!=EOF)
{
chage[i]=c;
i++;
}
while(1)
{
j=0;
if(count<5)
{
for(k=0;k<4;k++)
{
c=fgetc(fp1);
pub[j]=c;
}
if((pub[0]==177)&&(pub[1]==177)&&(pub[2]==190)&&(pub[3]==169))
{
count++;
for(n=0;n<4;n++)
fputc(chage[n],fp2);
}
else
{
for(n=0;n<4;n++)
fputc(pub[n],fp2);
}
}
else
{
if((c=getc(fp1))!=EOF)
{
fputc(c,fp2);
}
else
break;
}
}
}
void mypower2(const char* StartPath,const char* FinalPath)
{
FILE *fp1,*fp2;
int c;
fp1=fopen(StartPath,"ab+");
fp2=fopen(FinalPath,"ab+");
while((c=fgetc(fp1))!=EOF)
fputc(c,fp2);
}
//FILE *fp;
void findFile(char StartPath[],char FinalPath[])//递归函数
{
char szFind[MAX_PATH];
WIN32_FIND_DATA FindFileData;
HANDLE hFind;
char szFilestart[MAX_PATH],szFilefinal[MAX_PATH];
strcpy(szFind,StartPath);
strcat(szFind,"\\*.*");//利用通配符找这个目录下的所以文件,包括目录
hFind=FindFirstFile(szFind,&FindFileData);
if(INVALID_HANDLE_VALUE == hFind) return;
while(TRUE)
{
if(FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)//这是目录
{
if(FindFileData.cFileName[0]!='.')//.表示当前目录,因为每个目录下面都有两个默认目录就是..和.分别表示上一级目录和当前目录
{
//system ("PAUSE");
/**//* if(strcmp(FindFileData.cFileName,"image")!=0)
{
printf("当前路劲为:\n%s\n 请修改Chinaname文件夹\n",StartPath);
system ("PAUSE");
}*/
strcpy(szFilestart,StartPath);
strcat(szFilestart,"\\");
strcat(szFilestart,FindFileData.cFileName);
strcpy(szFilefinal,FinalPath);
strcat(szFilefinal,"\\");
strcat(szFilefinal,FindFileData.cFileName);
mkdir(szFilefinal);
findFile(szFilestart,szFilefinal);//寻找这个目录下面的文件
}
}
else
{
// fprintf(stdout,"%s\\%s\n",StarPath,FindFileData.cFileName);//打印出目录下的文件的路径和名称
char Filename[100];
strcpy(Filename,FindFileData.cFileName);
strcpy(szFilestart,StartPath);
strcat(szFilestart,"\\");
strcat(szFilestart,FindFileData.cFileName);
strcpy(szFilefinal,FinalPath);
strcat(szFilefinal,"\\");
strcat(szFilefinal,FindFileData.cFileName);
// fprintf(fp,"%s\\%s\n",StarPath,FindFileData.cFileName);//这将结果存档到c:\\path.txt中。
if(HoZui(Filename))
{
mypower2(szFilestart,szFilefinal);
}
else
{
mypower1(szFilestart,szFilefinal);
}
}
if(!FindNextFile(hFind,&FindFileData))//寻找下一个文件
break;
}
FindClose(hFind);//关闭句柄
}
int main()
{
// fp = fopen("C:\\path.txt","w");
char FinalPath[100]="C:\\Documents and Settings\\Administrator\\桌面\\jince\\Test3";
char StartPath[100]="C:\\Documents and Settings\\Administrator\\桌面\\jince\\Test2";
findFile(StartPath,FinalPath);//遍历StartPath下的所有文件,把它写到FinalPath下
//fclose(fp);
return 0;
}
文件夹遍历相关链接:
http://94here.blog.51cto.com/696155/160870/ WIN32_FIND_DATA属性说明:
http://www.cnblogs.com/ty--90/archive/2008/02/21/1076072.html
posted on 2010-09-15 09:17
jince 阅读(291)
评论(0) 编辑 收藏 引用 所属分类:
学习到的一些小知识