C 语言,用 fread 和 fwrite 复制文件内容,结果老不对呀,

#include<stdio.h>#include<string.h>#include<conio.h>#include<stdlib.h>#include<ctype.... #include <stdio.h>
#include <string.h>
#include <conio.h>
#include <stdlib.h>
#include <ctype.h>

struct book //定义书的类型
{
long booknum; //书号
char bookname[20]; //书名
char bookauthor[20]; //作者
char press[50]; //出版社
float price; // 价格
int count; //剩余数
};

void main()
{
FILE *fp, *fpr;
struct book book1;
fp=fopen("d:\\book.dat","wb");
fpr=fopen("d:\\root.dat","rb");
while(!feof(fpr))
{
fread(&book1,(long)sizeof(struct book),1,fpr);
fwrite(&book1,(long)sizeof(struct book),1,fp);
}
fclose(fp);
fclose(fpr);
}

这个应该可以讲root.dat的内容原版复制到book.dat里面吧,可是每次复制之后,book.dat比root.dat都会多出一部分数据(root.dat中的数据后面没有空格)。
展开
 我来答
匿名用户
2012-02-20
展开全部
多出的数据是什么样的呢?
会不会是因为root.dat中数据的大小实际不足一个book类型大小呢?不知道root.dat是怎么写入的,如果不是你亲自写入的,或许因为你们的内存对齐方式不一样导致你的sizeof(struct book)比root.dat写入时用的值大。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
jiangheshuilc
2012-02-20 · TA获得超过140个赞
知道小有建树答主
回答量:99
采纳率:100%
帮助的人:58.9万
展开全部
是feof的问题
参看一下下面的链接。
http://baike.baidu.com/view/656648.htm
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式