c语言,要保存多种结构体数据到相应的文件中,用一个函数实现,我写的报错了,如何解决?
//params:头节点,临时节点,要保存的文件名//return:0代表成功intsave_msg(void*head,void*temp,char*filename)...
//params:头节点,临时节点,要保存的文件名
//return:0代表成功
int save_msg(void *head,void *temp,char *filename){
FILE *fp = fopen(filename,"wb");
if(NULL == fp)
return 1;
temp = head->next;
while(temp != NULL){
if(fwrite(temp,1,sizeof(temp),fp)==0){
fclose(fp);
return 2;
}
temp = temp->next;
}
fclose(fp);
return 0;
}
警告: 提领‘void *’指针 [默认启用]
错误: 在非结构或联合中请求成员‘next’ 展开
//return:0代表成功
int save_msg(void *head,void *temp,char *filename){
FILE *fp = fopen(filename,"wb");
if(NULL == fp)
return 1;
temp = head->next;
while(temp != NULL){
if(fwrite(temp,1,sizeof(temp),fp)==0){
fclose(fp);
return 2;
}
temp = temp->next;
}
fclose(fp);
return 0;
}
警告: 提领‘void *’指针 [默认启用]
错误: 在非结构或联合中请求成员‘next’ 展开
2个回答
展开全部
可以传两个head进来吧,像struct1 *head1,struct2 *head2然后分别处理,然后在函数里面如果head1、head2为空则往文件中写。你可以试试。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
int save_msg(void *head,void *temp,char *filename){//这里的head要换成,head所在的结构或者联合。。
FILE *fp = fopen(filename,"wb");
if(NULL == fp)
return 1;
temp = head->next;
while(temp != NULL){
if(fwrite(temp,1,sizeof(temp),fp)==0){
fclose(fp);
return 2;
}
temp = temp->next;
}
fclose(fp);
return 0;
}
FILE *fp = fopen(filename,"wb");
if(NULL == fp)
return 1;
temp = head->next;
while(temp != NULL){
if(fwrite(temp,1,sizeof(temp),fp)==0){
fclose(fp);
return 2;
}
temp = temp->next;
}
fclose(fp);
return 0;
}
更多追问追答
追问
有两种结构体,我想用void*代替不行吗
追答
显然不可。
void型的指针,就不会有head->next了。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询