C 语言标准 I/O 函数介绍以及演示程序

//送佛送到西,好人做到底
//使用 C/c++ 标准库实现
/*C 语言标准 I/O 函数介绍
1. 库文件
一般位于 或者 库中
2. 函数介绍
2.1 FILE * fopen(const char * filepath,const char * type);
打开文件
主要有模式有
b -> 按字节流
w -> 清除原来文件内容写文件或者创建文件
a -> 追加文件
r -> 读文件
这些函数可以组合使用
成功 返回不为空,失败为空,

2.2. int fclose()
关闭文件
成功 返回为0,失败为 EOF

2.3 int fread(void * buff,size_t size,size_t nobj,FILE * fp);
    int fwrite(const void * buff,size_t size,size_t nobj,FILE * fp);
文件读写函数
buff 是存储内容的缓冲
size 是结构的 sizeof() 所得
nobj 是表示读写的次数
fp   是文件指针
fread 读文件时, ret < nobj 有两种情况,碰到文件结束或者出现错误
fwrite 写文件时,ret < nobj 就是出现错误

2.4 int feof(FILE *fp);
文件结束检测函数,只有在读取操作后,feof 才置位,默认是 false。
如文件结束,则返回值为非0,否则为0

2.5 int ferror(FILE *fp)
读写文件出错检测函数
返回值为0表示未出错,否则表示有错

2.6 void clearerr(FILE *fp)
文件出错标志和文件结束标志置0函数函数
用于清除出错标志和文件结束标志,使它们为0值

3. 演示代码
下面代码通过复制一个文件,很好的演示了上面函数的调用,请研读.
void filecopy()
{
 std::string srcfile = "c://test.rar";
 std::string destfile = "c://bbb.rar";
 FILE *fpsrc = fopen(srcfile.c_str(),"r+b");
 if(fpsrc == NULL)
 {
     //打开文件失败
     return;
 }
 FILE *fpdest = fopen(destfile.c_str(),"w+b");
 if(fpdest == NULL)
 {
     //创建文件或者清除文件内容失败
     fclose(fpsrc);
     return;
 }
 while(feof(fpsrc) == 0)
 {
  char buff[1024 * 64];
  memset(buff,0,sizeof(buff));
  int readlen = fread(buff,sizeof(char),sizeof(buff),fpsrc);
  if(readlen < sizeof(buff))
  {
   if(ferror(fpsrc))
   {
    //读取出现错误
    fclose(fpsrc);
    fclose(fpdest);
   }
  }
     if(fwrite(buff,sizeof(char),readlen,fpdest) < readlen)
  {
   //写错误
   fclose(fpsrc);
   fclose(fpdest);
  }
 }
 fclose(fpsrc);
 fclose(fpdest);
}

你可能感兴趣的:(C++,技术)