关于动态数组的问题
一个文件里存放了若干本书的相关信息,现在要把这些书的信息读到一个数组里去,是要用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 *' 展开
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 *' 展开
3个回答
展开全部
int fread( void *buffer, size_t size, size_t num, FILE *stream );
需要VOID的指针类型你的是struct book_information*
可以把P改为void,VOID可以指向任何类型
需要VOID的指针类型你的是struct book_information*
可以把P改为void,VOID可以指向任何类型
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
应该是free(void *)吧
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
p是个指针,可以这样把p[j] 改为 p+j
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询