// --------------------------------------------------------------------------
// 函数: 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
//返回值:无
以上两个函数可以做到对两个文件(数据流)数据的验证,验证其内容是否相等