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中的数据后面没有空格)。 展开
#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中的数据后面没有空格)。 展开
2个回答
2012-02-20
展开全部
多出的数据是什么样的呢?
会不会是因为root.dat中数据的大小实际不足一个book类型大小呢?不知道root.dat是怎么写入的,如果不是你亲自写入的,或许因为你们的内存对齐方式不一样导致你的sizeof(struct book)比root.dat写入时用的值大。
会不会是因为root.dat中数据的大小实际不足一个book类型大小呢?不知道root.dat是怎么写入的,如果不是你亲自写入的,或许因为你们的内存对齐方式不一样导致你的sizeof(struct book)比root.dat写入时用的值大。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询