首页 > 代码库 > C语言文件操作函数的编写

C语言文件操作函数的编写


  1. 编写文件操作的头文件

/**************************************************************************

Copyright(C)   :2014-08-5 toto

Filename      :file.h

Author         :涂作权

Version        :V1.1

Date           :2014-08-05

Description    :文件操作的头文件

Others         :参考了原来的多线程操作和单线程操作当当网数据

FunctionList  :

 

History:修改历史记录列表,每条修改记录应该包括修改日期

1.Date:

Author:

Modification:

**************************************************************************/

/*将安全检查警报设置为失效,必须放在第一行*/

#pragma warning(disable:4996)

#ifndef_FILE_H_

#define_FILE_H_

 

#include<stdio.h>   //注意文件操作相关函数的头文件是stdio.h

#include<stdlib.h>   //为了使用system函数

#include<string.h>  //字符串操作所用到的头文件

#include<Windows.h>  //使用休眠函数时用到的头文件

#include<crtdbg.h>  //做内存泄露检测所需的头文件

 

/*************************************************************

Function        :getFileRow

Description     :获得文件的中记录的行数

Calls           :被本函数调用的函数清单

CalledBy       :调用本函数的函数清单

TableAccessed  :被访问的表(此项仅对于牵扯到数据库操作的程序)

TableUpdated   :被修改的表(此项对于牵扯到数据库操作的程序)

path            :表示的是文件的路径

Output          :输出的信息为空

Return          :返回文件中的行数

Others          :其它说明

*************************************************************/

externintgetFileRow(constchar *path);

 

/*************************************************************

Function        :main_view

Description     :查看菜单信息

Calls           :被本函数调用的函数清单

CalledBy       :调用本函数的函数清单

TableAccessed  :被访问的表(此项仅对于牵扯到数据库操作的程序)

TableUpdated   :被修改的表(此项对于牵扯到数据库操作的程序)

 

Output          :输出的信息为空

Return          :返回值为void

Others          :其它说明

*************************************************************/

externvoidmain_view();

 

/*************************************************************

Function        :getFileSize

Description     :获得文件的大小(字节数)

Calls           :被本函数调用的函数清单

CalledBy       :调用本函数的函数清单

TableAccessed  :被访问的表(此项仅对于牵扯到数据库操作的程序)

TableUpdated   :被修改的表(此项对于牵扯到数据库操作的程序)

 

path            :表示的文件路径

Output          :输出的信息为空

Return          :文件的字节大小

Others          :其它说明

*************************************************************/

externintgetFileSize(constchar *path);

 

/*************************************************************

Function        :loadFile

Description     :加载文件

Calls           :被本函数调用的函数清单

CalledBy       :调用本函数的函数清单

TableAccessed  :被访问的表(此项仅对于牵扯到数据库操作的程序)

TableUpdated   :被修改的表(此项对于牵扯到数据库操作的程序)

 

path            :表示的是文件路径

rowSize         :表示的是文件中信息由多少行

Output          :输出的信息为空

Return          :返回值为int,如果加载成功返回1,如果加载失败返回0

Others          :其它说明

*************************************************************/

externintloadFile(constchar *fPath,constintrowSize);

 

/*************************************************************

Function        :findStringByKeyword

Description     :通过关键字的方式进行查找

Calls           :被本函数调用的函数清单

CalledBy       :调用本函数的函数清单

TableAccessed  :被访问的表(此项仅对于牵扯到数据库操作的程序)

TableUpdated   :被修改的表(此项对于牵扯到数据库操作的程序)

 

keyword         :通过关键字查找信息

rowSize         :表示的是文件中信息由多少行

Output          :输出的信息为空

Return          :如果查找失败返回0,查找成功返回1

Others          :其它说明

*************************************************************/

externintfindStringByKeyword(constchar *keyword,constintrowSize);

 

/*************************************************************

Function        :freeMemory

Description     :释放内存空间

Calls           :被本函数调用的函数清单

CalledBy       :调用本函数的函数清单

TableAccessed  :被访问的表(此项仅对于牵扯到数据库操作的程序)

TableUpdated   :被修改的表(此项对于牵扯到数据库操作的程序)

 

pp              :存储文件信息的二重指针

rowSize         :表示的行大小

Output          :输出的信息为空

Return          :返回值为void

Others          :其它说明

*************************************************************/

externvoidfreeMemory(char **pp,constintrowSize);

 

/*************************************************************

Function        :writeStr2File

Description     :将字符串拼接的方式写入文件

Calls           :被本函数调用的函数清单

CalledBy       :调用本函数的函数清单

TableAccessed  :被访问的表(此项仅对于牵扯到数据库操作的程序)

TableUpdated   :被修改的表(此项对于牵扯到数据库操作的程序)

 

pFilePath       :要写入的文件路径

pStr            :要写入的字符串

mode            :表示写入的模式,0:表示直接追击  1:表示换行追加

Output          :输出的信息为空

Return          :如果写入成功返回1,如果写入失败返回0

Others          :其它说明

*************************************************************/

externintwriteStr2File(constchar *pFilePath,constchar *pStr,intmode);

 

/*************************************************************

Function        :copy()

Description     :将一个文件拷贝到另外一个文件

Calls           :被本函数调用的函数清单

CalledBy       :调用本函数的函数清单

TableAccessed  :被访问的表(此项仅对于牵扯到数据库操作的程序)

TableUpdated   :被修改的表(此项对于牵扯到数据库操作的程序)

 

pDestFile       :要写入的文件

pOriginalFile   :原始文件

mode            :表示写入的模式,0:表示直接追击  1:表示换行追加

Output          :输出的信息为空

Return          :如果写入成功返回1,如果写入失败返回0

Others          :其它说明

*************************************************************/

externintcopy(constchar *pDestFile,constchar *pOriginalFile);

 

/*************************************************************

Function        :encryptFileByChar()

Description     :将文件按照ch进行加密,并将文件输出到指定文件中

Calls           :被本函数调用的函数清单

CalledBy       :调用本函数的函数清单

TableAccessed  :被访问的表(此项仅对于牵扯到数据库操作的程序)

TableUpdated   :被修改的表(此项对于牵扯到数据库操作的程序)

 

pDestFile       :要写入的文件

pOriginalFile   :原始文件

ch              :用于加密的字符

Output          :输出的信息为空

Return          :如果写入成功返回1,如果写入失败返回0

Others          :其它说明

*************************************************************/

externintencryptFileByChar(constchar *pDestFile,

   constchar *pOriginalFile,constcharch);

 

/*************************************************************

Function        :deCodeFileByChar()

Description     :通过ch进行解密文件,并将文件输出到指定的文件中

Calls           :被本函数调用的函数清单

CalledBy       :调用本函数的函数清单

TableAccessed  :被访问的表(此项仅对于牵扯到数据库操作的程序)

TableUpdated   :被修改的表(此项对于牵扯到数据库操作的程序)

 

pDestFile       :要写入的文件

pOriginalFile   :原始文件

ch              :用于解密的字符

Output          :输出的信息为空

Return          :如果写入成功返回1,如果写入失败返回0

Others          :其它说明

*************************************************************/

externintdeCodeFileByChar(constchar *pDestFile,

   constchar *pOriginalFile,constcharch);

 

/*************************************************************

Function        :stringEncrypt()

Description     :将字符串变成字符串加密后的字符串

Calls           :被本函数调用的函数清单

CalledBy       :调用本函数的函数清单

TableAccessed  :被访问的表(此项仅对于牵扯到数据库操作的程序)

TableUpdated   :被修改的表(此项对于牵扯到数据库操作的程序)

 

pwdStr          :将字符串变成加密后的字符串

str             :要加密的字符串

Output          :输出的信息为空

Return          :返回加密后的字符串地址

Others          :其它说明

*************************************************************/

externchar *str2EncryptString(char *pwdStr,char *str);

 

/*************************************************************

Function        :str2DecodedString()

Description     :将字符串变成解密之后的文件

Calls           :被本函数调用的函数清单

CalledBy       :调用本函数的函数清单

TableAccessed  :被访问的表(此项仅对于牵扯到数据库操作的程序)

TableUpdated   :被修改的表(此项对于牵扯到数据库操作的程序)

 

pwdStr          :将字符串变成加密后的字符串

str             :要解密的字符串

Output          :输出的信息为空

Return          :返回解密后的字符串地址

Others          :其它说明

*************************************************************/

externchar *str2DecodedString(char *pwdStr,char *str);

 

/*************************************************************

Function        :encryptAndDecodeFileByString()

Description     :通过字符串str来加解密文件

Calls           :被本函数调用的函数清单

CalledBy       :调用本函数的函数清单

TableAccessed  :被访问的表(此项仅对于牵扯到数据库操作的程序)

TableUpdated   :被修改的表(此项对于牵扯到数据库操作的程序)

 

pDestFile       :要写入的文件

pOriginalFile   :原始文件

pwdString       :用于加解密的字符

Output          :输出的信息为空

Return          :如果写入成功返回1,如果写入失败返回0

Others          :其它说明

*************************************************************/

externintencryptAndDecodeFileByString(constchar *pDestFile,

   constchar *pOriginalFile,constchar* pwdString);

 

 

#endif

 

2.文件操作的实现函数

 

#define_CRT_SECURE_NO_WARNINGS

#include"file.h"

 

char **pp = NULL;  //存储指针数组的地址

intflag = 0;

 

/*************************************************************

Function        :getFileRow

Description     :获得文件的中记录的行数

Calls           :被本函数调用的函数清单

CalledBy       :调用本函数的函数清单

TableAccessed  :被访问的表(此项仅对于牵扯到数据库操作的程序)

TableUpdated   :被修改的表(此项对于牵扯到数据库操作的程序)

path            :表示的是文件的路径

Output          :输出的信息为空

Return          :返回文件中的行数

Others          :其它说明

*************************************************************/

intgetFileRow(constchar *path)

{

   FILE *pf;

   pf =fopen(path,"r");

   if (pf == NULL)

   {

       //代表获取失败

       fclose(pf);

       return -1;

   }

   else

   {

       inti = 0;

       //是否到文件末尾,如果到了返回1,没有到的时候返回0

       while (!feof(pf))

       {

           charstr[275];

           //读取一行

           fgetc(str, 275, pf);

           i++;

       }

       fclose(pf);

       returni;

   }

}

 

/*************************************************************

Function        :main_view

Description     :查看菜单信息

Calls           :被本函数调用的函数清单

CalledBy       :调用本函数的函数清单

TableAccessed  :被访问的表(此项仅对于牵扯到数据库操作的程序)

TableUpdated   :被修改的表(此项对于牵扯到数据库操作的程序)

 

Output          :输出的信息为空

Return          :返回值为void

Others          :其它说明

*************************************************************/

voidmain_view()

{

   system("cls");

   printf("\n******************当当用户信息查询系统*******************\n");

   printf("\t1.载入数据至内存(-l)\n");

   printf("\t2.查找字符串(-s)\n");

   printf("\t3.释放内存(-f)\n");

   printf("\n*************************0.退出**************************\n");

}

 

/*************************************************************

Function        :getFileSize

Description     :获得文件的大小(字节数)

Calls           :被本函数调用的函数清单

CalledBy       :调用本函数的函数清单

TableAccessed  :被访问的表(此项仅对于牵扯到数据库操作的程序)

TableUpdated   :被修改的表(此项对于牵扯到数据库操作的程序)

 

path            :表示的文件路径

Output          :输出的信息为空

Return          :文件的字节大小

Others          :其它说明

*************************************************************/

intgetFileSize(constchar *path)

{

   //定义一个文件指针

   FILE *pf = NULL;

   pf =fopen(path,"r");

   if (pf == NULL)

   {

       //代表获取文件失败

       fclose(pf);

       return -1;

   }

   else

   {

       //fseek():Moves thefile pointer to a specified location.

       fseek(pf, 0, SEEK_END);

       //ftell( FILE*stream ):文件开头到当前位置有多少个字节

       intnum =ftell(pf);

       //关闭文件

       fclose(pf);

       returnnum;

   }

}

 

/*************************************************************

Function        :loadFile

Description     :加载文件

Calls           :被本函数调用的函数清单

CalledBy       :调用本函数的函数清单

TableAccessed  :被访问的表(此项仅对于牵扯到数据库操作的程序)

TableUpdated   :被修改的表(此项对于牵扯到数据库操作的程序)

 

path            :表示的是文件路径

rowSize         :表示的是文件中信息由多少行

Output          :输出的信息为空

Return          :返回值为int,如果加载成功返回1,如果加载失败返回0

Others          :其它说明

*************************************************************/

intloadFile(constchar *fPath,constintrowSize)

{

   printf("加载文件后,请稍后....");

   FILE *pf;

   pp = (char **)malloc(sizeof(char *)* rowSize);

   pf =fopen(fPath,"r");

   if (pf == NULL)

   {

       printf("对不起,加载文件失败!");

       fclose(pf);

       return 0;

   }

   else

   {

       inti;

       for (i = 0; i <rowSize;i++)

       {

           //读取字符串的缓冲区

           charstr[275] = { 0 };

           //*fgets(char*string,int n,FILE *stream);

           //从文件中逐行读取字符串

           fgets(str,sizeof(str) ,pf);

           //获取要分配的字符串长度,最后加一是因为‘\0‘

           intstrlength =strlen(str) + 1;

           //分配内存

           char *px = (char *)malloc(sizeof(char) * strlength);

           //拷贝字符串

           strcpy(px,str);

           //设定最后一个字符串‘\0‘

           px[strlength - 1] = ‘\0‘;

           //存储字符串的首地址到指针数组

           pp[i] = px;

       }

   }

   return 1;

}

 

/*************************************************************

Function        :findStringByKeyword

Description     :通过关键字的方式进行查找

Calls           :被本函数调用的函数清单

CalledBy       :调用本函数的函数清单

TableAccessed  :被访问的表(此项仅对于牵扯到数据库操作的程序)

TableUpdated   :被修改的表(此项对于牵扯到数据库操作的程序)

 

keyword         :通过关键字查找信息

rowSize         :表示的是文件中信息由多少行

Output          :输出的信息为空

Return          :如果查找失败返回0,查找成功返回1

Others          :其它说明

*************************************************************/

intfindStringByKeyword(constchar *keyword,constintrowSize)

{

   if (pp == NULL)

   {

       printf("对不起,您还没有加载文件,请您先加载文件\n");

       return 0;

   }

   else

   {

       inti;

       for (i = 0; i <rowSize;i++)

       {

           //遍历所有的指针数组的地址,字符串查找

           char *pTemp = strstr(pp[i],keyword);

           if (pTemp != NULL)

           {

               printf("\n%s",pp[i]);

           }

       }

   }

   return 1;

}

 

/*************************************************************

Function        :freeMemory

Description     :释放内存空间

Calls           :被本函数调用的函数清单

CalledBy       :调用本函数的函数清单

TableAccessed  :被访问的表(此项仅对于牵扯到数据库操作的程序)

TableUpdated   :被修改的表(此项对于牵扯到数据库操作的程序)

 

pp              :存储文件信息的二重指针

rowSize         :表示的行大小

Output          :输出的信息为空

Return          :返回值为void

Others          :其它说明

*************************************************************/

voidfreeMemory(char **pp,constintrowSize)

{

   inti;

   for (i = 0; i <rowSize;i++)

   {

       free(pp[i]);

   }

   free(pp);

   flag = 0;

}

 

/*************************************************************

Function        :writeStr2File

Description     :将字符串拼接的方式写入文件

Calls           :被本函数调用的函数清单

CalledBy       :调用本函数的函数清单

TableAccessed  :被访问的表(此项仅对于牵扯到数据库操作的程序)

TableUpdated   :被修改的表(此项对于牵扯到数据库操作的程序)

 

pFilePath       :要写入的文件路径

pStr            :要写入的字符串

mode            :表示写入的模式,0:表示直接追击  1:表示换行追加

Output          :输出的信息为空

Return          :如果写入成功返回1,如果写入失败返回0

Others          :其它说明

*************************************************************/

intwriteStr2File(constchar *pFilePath,constchar *pStr,intmode)

{

   FILE *pf;

   //a+表示以追加的方式写文件,如果

   pf =fopen(pFilePath,"a+");

   if (pf == NULL)

   {

       //表示文件打开失败

       fclose(pf);

       return 0;

   }

   else

   {

       if (mode)

       {

           fputs(pStr,pf);

           //通过加入‘\r‘的方式换行,如果隔行输出使用‘\r\n‘

           fprintf(pf,"\r");

       }

       else

       {

           fprintf(pf,pStr);

       }

       fclose(pf);

   }

   //写入成功返回1

   return 1;

}

 

/*************************************************************

Function        :copy()

Description     :将一个文件拷贝到另外一个文件

Calls           :被本函数调用的函数清单

CalledBy       :调用本函数的函数清单

TableAccessed  :被访问的表(此项仅对于牵扯到数据库操作的程序)

TableUpdated   :被修改的表(此项对于牵扯到数据库操作的程序)

 

pDestFile       :要写入的文件

pOriginalFile   :原始文件

mode            :表示写入的模式,0:表示直接追击  1:表示换行追加

Output          :输出的信息为空

Return          :如果写入成功返回1,如果写入失败返回0

Others          :其它说明

*************************************************************/

intcopy(constchar *pDestFile,constchar *pOriginalFile)

{

   FILE *pfr, *pfw;

   //以代开二进制文件的方式打开

   pfr =fopen(pOriginalFile,"r");

   //要写入的文件

   pfw =fopen(pDestFile,"w");

   if (pfr == NULL ||pfw ==NULL)

   {

       fclose(pfr);

       fclose(pfw);

       return 0;

   }

   else

   {

       intlength =getFileSize(pOriginalFile);

       //分配内存,读取文件

       char *p = (char *)malloc(length * sizeof(char));

       //读取文件到内存

       fread(p,sizeof(char),length,pfr);

       //写入文件

       fwrite(p,sizeof(char),length,pfw);

 

       //关闭文件

       fclose(pfr);

       fclose(pfw);

   }

   return 1;

}

 

/*************************************************************

Function        :encryptFileByChar()

Description     :将文件按照ch进行加密,并将文件输出到指定文件中

Calls           :被本函数调用的函数清单

CalledBy       :调用本函数的函数清单

TableAccessed  :被访问的表(此项仅对于牵扯到数据库操作的程序)

TableUpdated   :被修改的表(此项对于牵扯到数据库操作的程序)

 

pDestFile       :要写入的文件

pOriginalFile   :原始文件

ch              :用于加密的字符

Output          :输出的信息为空

Return          :如果写入成功返回1,如果写入失败返回0

Others          :其它说明

*************************************************************/

intencryptFileByChar(constchar *pDestFile,

   constchar *pOriginalFile,constcharch)

{

   FILE *pfr, *pfw;

   //以读的方式写入文件

   pfr =fopen(pOriginalFile,"r");

   //以写的方式写入文件中

   pfw =fopen(pDestFile,"w");

   if (pfr == NULL ||pfw ==NULL)

   {

       //表示加载失败

       fclose(pfr);

       fclose(pfw);

       return 0;

   }

   else

   {

       //读取原始文件中的大小(通过这种方式获得字节数大小)

       intlength =getFileSize(pOriginalFile);

       //分配内存,读取文件

       char *p = (char *)malloc(sizeof(char) * length);

       //读取文件到内存中

       fread(p,sizeof(char),length,pfr);

       inti;

       for (i = 0; i <length;i++)

       {

           //加密方法是,于指定字符串进行异或操作

           p[i] ^= ch;

       }

       //写入文件

       fwrite(p,sizeof(char),length,pfw);

       fclose(pfr);

       fclose(pfw);

   }

   return 1;

}

 

/*************************************************************

Function        :deCodeFileByChar()

Description     :通过ch进行解密文件,并将文件输出到指定的文件中

Calls           :被本函数调用的函数清单

CalledBy       :调用本函数的函数清单

TableAccessed  :被访问的表(此项仅对于牵扯到数据库操作的程序)

TableUpdated   :被修改的表(此项对于牵扯到数据库操作的程序)

 

pDestFile       :要写入的文件

pOriginalFile   :原始文件

ch              :用于解密的字符

Output          :输出的信息为空

Return          :如果写入成功返回1,如果写入失败返回0

Others          :其它说明

*************************************************************/

intdeCodeFileByChar(constchar *pDestFile,

   constchar *pOriginalFile,constcharch)

{

   FILE *pfr, *pfw;

   pfr =fopen(pOriginalFile,"r");

   pfw =fopen(pDestFile,"w");

   if (pfr == NULL ||pfw ==NULL)

   {

       fclose(pfr);

       fclose(pfw);

       //如果是成功,则

       return 0;

   }

   else

   {

       //读取原始文件的大小

       intlength =getFileSize(pOriginalFile);

       //分配内存,读取文件

       char *p = (char *)malloc(sizeof(char) * length);

       //读取文件到内存中

       fread(p,sizeof(char),length,pfr);

       inti;

       for (i = 0; i <length;i++)

       {

           //解密方法是,于指定字符串进行异或操作

           p[i] ^= ch;

       }

       fwrite(p,sizeof(char),length,pfw);

       //关闭文件

       fclose(pfr);

       fclose(pfw);

   }

 

   return 1;

}

 

/*************************************************************

Function        :stringEncrypt()

Description     :将字符串变成字符串加密后的字符串

Calls           :被本函数调用的函数清单

CalledBy       :调用本函数的函数清单

TableAccessed  :被访问的表(此项仅对于牵扯到数据库操作的程序)

TableUpdated   :被修改的表(此项对于牵扯到数据库操作的程序)

 

pwdStr          :将字符串变成加密后的字符串

str             :要加密的字符串

Output          :输出的信息为空

Return          :返回加密后的字符串地址

Others          :其它说明

*************************************************************/

char *str2EncryptString(char *pwdStr,char *str)

{

   //获取加密长度

   intpwdStrLength =strlen(pwdStr);

   //获取字符串的长度

   intstrLength =strlen(str);

   if (strLength % pwdStrLength)

   {

       inttimes =strLength /pwdStrLength;

       inti,j;

       //循环次数

       for (i = 0; i <times;i++)

       {

           for (j = 0; j <pwdStrLength;j++)

           {

               str[pwdStrLength * i +j] ^=pwdStr[j];

           }

       }

   }

   else

   {

       //获取循环次数

       inttimes =strLength /pwdStrLength;

       inti,j;

       for (i = 0; i <times;i++)

       {

           //循环密码

           for (j = 0; j <pwdStrLength;j++)

           {

               str[pwdStrLength * i +j] ^=pwdStr[j];

           }

       }

       //剩下的长度

       intlastLength =strLength %pwdStrLength;

       for (i = 0; i <lastLength;i++)

       {

           str[pwdStrLength * (strLength /pwdStrLength) +i] ^=pwdStr[i];

       }

   }

   returnstr;

}

 

/*************************************************************

Function        :str2DecodedString()

Description     :将字符串变成解密之后的文件

Calls           :被本函数调用的函数清单

CalledBy       :调用本函数的函数清单

TableAccessed  :被访问的表(此项仅对于牵扯到数据库操作的程序)

TableUpdated   :被修改的表(此项对于牵扯到数据库操作的程序)

 

pwdStr          :将字符串变成加密后的字符串

str             :要解密的字符串

Output          :输出的信息为空

Return          :返回解密后的字符串地址

Others          :其它说明

*************************************************************/

char *str2DecodedString(char *pwdStr,char *str)

{

   //获取加密长度

   intpwdStrLength =strlen(pwdStr);

   //获取字符串的长度

   intstrLength =strlen(str);

   if (strLength % pwdStrLength)

   {

       inttimes =strLength /pwdStrLength;

       inti,j;

       //循环次数

       for (i = 0; i <times;i++)

       {

           for (j = 0; j <pwdStrLength;j++)

           {

               str[pwdStrLength * i +j] ^=pwdStr[j];

           }

       }

   }

   else

   {

       //获取循环次数

       inttimes =strLength /pwdStrLength;

       inti,j;

       for (i = 0; i <times;i++)

       {

           //循环密码

           for (j = 0; j <pwdStrLength;j++)

           {

               str[pwdStrLength * i +j] ^=pwdStr[j];

           }

       }

       //剩下的长度

       intlastLength =strLength %pwdStrLength;

       for (i = 0; i <lastLength;i++)

       {

           str[pwdStrLength * (strLength /pwdStrLength) +i] ^=pwdStr[i];

       }

   }

   returnstr;

}

 

/*************************************************************

Function        :encryptAndDecodeFileByString()

Description     :通过字符串str来加解密文件

Calls           :被本函数调用的函数清单

CalledBy       :调用本函数的函数清单

TableAccessed  :被访问的表(此项仅对于牵扯到数据库操作的程序)

TableUpdated   :被修改的表(此项对于牵扯到数据库操作的程序)

 

pDestFile       :要写入的文件

pOriginalFile   :原始文件

pwdString       :用于加解密的字符

Output          :输出的信息为空

Return          :如果写入成功返回1,如果写入失败返回0

Others          :其它说明

*************************************************************/

intencryptAndDecodeFileByString(constchar *pDestFile,

   constchar *pOriginalFile,constchar*pwdString)

{

   FILE *pfr, *pfw;

   //读取

   pfr =fopen(pOriginalFile,"r");

   //写入

   pfw =fopen(pDestFile,"w");

   if (pfr == NULL ||pfw ==NULL)

   {

       fclose(pfw);

       fclose(pfr);

       return 0;

   }

   else

   {

       intlength =getFileSize(pOriginalFile);

       char *newstr = (char*)malloc(sizeof(char) * (length + 1));

       inti;

       for (i = 0; i <length;i++)

       {

           //获取一个字符

           charch =fgetc(pfr);

           //不断存入字符

           newstr[i] = ch;

       }

       //字符串处理为‘\0‘

       newstr[length] = ‘\0‘;

       //加密字符串

       str2EncryptString(pwdString,newstr);

 

       for (i = 0; i <length;i++)

       {

           //挨个写入字符

           fputc(newstr[i],pfw);

       }

   }

   fclose(pfr);

   //关闭文件

   fclose(pfw);

   

   return -1;

}