C语言二进制文件输入问题

来源:百度知道 编辑:UC知道 时间:2024/05/07 07:54:54
各位看一下这个程序,为什么file3的内容不对呢
//整个程序的作用是将已经按从小到大排序好的file1,file2中的数按从小到大输入到file3中
#include <stdio.h>
#include <stdlib.h>
int main()
{
FILE *p1,*p2,*p3;
int i,v1,v2,a[100],b[100],c[100];
p1=fopen("D:\\file1.dat","wb+");
p2=fopen("D:\\file2.dat","wb+");
p3=fopen("D:\\file3.dat","wb");
//如果文件打开失败
if(p1==NULL||p2==NULL||p3==NULL)
{
printf("文件打开错误\n");
exit(0);
}
//写入file1.dat
for(i=2;i<=10;i+=2)
{
fwrite(&i,sizeof(int),1,p1);
fflush(p1);
}
//写入file2.dat
for(i=1;i<=9;i+=2)
{
fwrite(&i,sizeof(int),1,p2);
fflush(p2);
}
//文件指针回归初始位置
rewind(p1);
rewind(p2);
//开始写入file3
v1=fread(&v1,sizeof(int),1,p1);
v2=fread(&v2,sizeof(int),1,p2);
while(!feof(p1)&&!feof(p2))
{
if(v1

文件存取的我也不太懂得~
不过有一个小小的错误
v1=fread(&v1,sizeof(int),1,p1);
v2=fread(&v2,sizeof(int),1,p2);
fread的返回值不是该位置的元素值,fread returns the number of full items actually read
所以本类你读进V1的值是2,结果再附上fread的返回值后,v1就等于1了

其他的我跑了一遍你的程序,也不太明白明明是相同的语句,为什么写进file1、file2的值就正确,而file3的就死无效值呢