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

// --------------------------------------------------------------------------
//  函数: 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
//返回值:无
以上两个函数能够作到对两个文件(数据流)数据的验证,验证其内容是否相等
相关文章
相关标签/搜索