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’
展开
 我来答
百度网友f6906bf
2012-10-02
知道答主
回答量:14
采纳率:0%
帮助的人:17.8万
展开全部
可以传两个head进来吧,像struct1 *head1,struct2 *head2然后分别处理,然后在函数里面如果head1、head2为空则往文件中写。你可以试试。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
镭毅
2012-10-02 · TA获得超过1394个赞
知道大有可为答主
回答量:1155
采纳率:0%
帮助的人:1095万
展开全部
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;
}
更多追问追答
追问
有两种结构体,我想用void*代替不行吗
追答
显然不可。

void型的指针,就不会有head->next了。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式