关于动态数组的问题

一个文件里存放了若干本书的相关信息,现在要把这些书的信息读到一个数组里去,是要用MALLOC函数建立动态数组吧?不知道我这么写哪里有问题,麻烦帮忙看看,先谢谢了。下面给出... 一个文件里存放了若干本书的相关信息,现在要把这些书的信息读到一个数组里去,是要用MALLOC函数建立动态数组吧?不知道我这么写哪里有问题,麻烦帮忙看看,先谢谢了。下面给出部分相关代码:
struct book_information
{
int record_number;
char book_name[30];
char writer[20];
char type_number[10];
char press[50];
double price;
}book,*book_array,*p;
FILE *fp,*p1,*p2;
int i,j;

if((fp=fopen("Book_information.rec","rb+"))==NULL)
{
printf("cannot open the file");
exit(1);
}
p1=fp;
fseek(fp,0L,2);
rewind(fp);
i=(p2-p1)/sizeof(struct book_information);
p=(struct book_information*)malloc(i*sizeof(struct book_information));

for(j=0;j<i;j++)
{
fread(p[j],sizeof(struct book_information),1,fp);
}
运行的时候系统提示错误: error C2664: 'fread' : cannot convert parameter 1 from 'struct sort::book_information' to 'void *'
展开
 我来答
luzhiwei512
2010-06-13 · TA获得超过386个赞
知道小有建树答主
回答量:407
采纳率:0%
帮助的人:359万
展开全部
int fread( void *buffer, size_t size, size_t num, FILE *stream );
需要VOID的指针类型你的是struct book_information*
可以把P改为void,VOID可以指向任何类型
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
gqgq0311
2010-06-13 · TA获得超过768个赞
知道小有建树答主
回答量:563
采纳率:100%
帮助的人:272万
展开全部
应该是free(void *)吧
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
fanz_no1
2010-06-13 · TA获得超过196个赞
知道答主
回答量:157
采纳率:0%
帮助的人:211万
展开全部
p是个指针,可以这样把p[j] 改为 p+j
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式