voip
风的方向
厚德致远,博学敦行!
posts - 52,comments - 21,trackbacks - 0
            工作的时候写的一个修改记事本的程序段。记录下
代码如下:

#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)  编辑 收藏 引用 所属分类: 学习到的一些小知识

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理


哈哈哈哈哈哈