当前位置:   article > 正文

比较两文件(流)内容是否相同(很经典的代码)

c++ 比较两个文件是否相同
// --------------------------------------------------------------------------
//  函数: get_file_size 得到文件大小
// --------------------------------------------------------------------------
  1. unsigned int get_file_size(FILE *fp)
  2. {
  3. unsignfile_size;
  4. fseek(fp, 0L, SEEK_END);//从文件尾开始 0L
  5. file_size = ftell(fp); //file_size得到文件的字节数
  6. rewind(fp);
  7. return file_size;
  8. }



// --------------------------------------------------------------------------
// 函数: compare_file  比较文件不相等返回FALSE(0)
// --------------------------------------------------------------------------
  1. bool compare_file(FILE *fp1, FILE *fp2)
  2. {
  3. unsigned int file_size1, file_size2;
  4. unsigned char buff_f1, buff_f2;
  5. bool result = TRUE;
  6. file_size1 = get_file_size(fp1); //得到fp1文件的大小
  7. file_size2 = get_file_size(fp2); //得到fp2文件的大小
  8. if (file_size1 != file_size2)
  9. {
  10. return FALSE;
  11. }
  12. while(1) //进入死循环直到从下面跳出为止
  13. {
  14. if (feof(fp1) || feof(fp2))//到文件尾(EOF)就跳出循环
  15. {
  16. break;
  17. }
  18. fread((void *)&buff_f1, 1, 1, fp1);
  19. fread((void *)&buff_f2, 1, 1, fp2);
  20. if (buff_f1 != buff_f2)
  21. {
  22. result = FALSE;
  23. break;
  24. }
  25. }
  26. rewind(fp1);
  27. rewind(fp2);
  28. return result;
  29. } //end of compare_file

关于rewind函数百度解释如下
//函数名: rewind
//功 能: 将文件内部的位置指针重新指向一个流(数据流/文件)的开头
//注意:不是文件指针而是文件内部的位置指针,
//随着对文件的读写文件的位置指针(指向当前读写字节)向后移动。
//而文件指针是指向整个文件,如果不重新赋值文件指针不会改变。
//void rewind(FILE *stream);
//头文件:stdio.h
//返回值:无
以上两个函数可以做到对两个文件(数据流)数据的验证,验证其内容是否相等

转载于:https://my.oschina.net/u/198124/blog/57834

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/酷酷是懒虫/article/detail/871653
推荐阅读
相关标签
  

闽ICP备14008679号