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

// --------------------------------------------------------------------------
//  函数: get_file_size 得到文件大小
// --------------------------------------------------------------------------
unsigned int get_file_size(FILE *fp)
{   
    unsignfile_size;
 
    fseek(fp, 0L, SEEK_END);//从文件尾开始 0L
    file_size = ftell(fp);  //file_size得到文件的字节数
    rewind(fp);
    return file_size;
}



// --------------------------------------------------------------------------
// 函数: compare_file  比较文件不相等返回FALSE(0)
// --------------------------------------------------------------------------
bool compare_file(FILE *fp1, FILE *fp2)
{   
    unsigned int file_size1, file_size2;
    unsigned char buff_f1, buff_f2;
    bool  result = TRUE;
 
    file_size1 = get_file_size(fp1); //得到fp1文件的大小
    file_size2 = get_file_size(fp2); //得到fp2文件的大小   
    if (file_size1 != file_size2) 
    {
         return FALSE;
    }   
    while(1)  //进入死循环直到从下面跳出为止
    {
         if (feof(fp1) || feof(fp2))//到文件尾(EOF)就跳出循环
         {
                break;
         }   
         fread((void *)&buff_f1, 1, 1, fp1);
         fread((void *)&buff_f2, 1, 1, fp2);
         if (buff_f1 != buff_f2)
         {
               result = FALSE;
               break;
         }
   }
   rewind(fp1);   
   rewind(fp2);   
   return result;
} //end of compare_file

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值