C语言的一段程序编译时出现问题,大神们来帮帮忙

struct stud *creat()
{
FILE *fp;
fp=fopen("dianjia.txt","wt");
if(fp==NULL)
{
printf("error!");
getch();
exit(1);
}
else
{
int max;
printf("please:");
scanf("%d",&max);
struct stud *p1,*p2,*head;
head=p2=(struct stud *)malloc(sizeof(struct stud));
printf("please input:\n");
p1=(struct stud *)malloc(sizeof(struct stud));
scanf("%d %s %s %d-%d-%d %d %f",&p1->num,p1->name,p1->kind,&p1->time.year,&p1->time.month,&p1->time.day,&p1->number,&p1->money);
while(p1->num!=0){
p2->next=p1;
p2=p1;
p1=(struct stud *)malloc(sizeof(struct stud));
scanf("%d,%s,%s,%d-%d-%d,%d,%f",&p1->num,p1->name,p1->kind,&p1->time.year,&p1->time.month,&p1->time.day,&p1->number,&p1->money);
}
p2->next=NULL;
fwrite(*head,sizeof(struct stud),max,fp);
fclose(fp);
fp=fopen("dianjia.txt","rt");
fread(*head,sizeof(struct stud),max,fp);
fclose(fp);
return head;
}
}
编译时候出现问题,在fread和fwrite两行,出现问题,提示如下:

2.c: In function ‘creat’:
2.c:47: error: incompatible type for argument 1 of ‘fwrite’
/usr/include/stdio.h:688: note: expected ‘const void * __restrict__’ but argument is of type ‘struct stud’
2.c:50: error: incompatible type for argument 1 of ‘fread’
/usr/include/stdio.h:682: note: expected ‘void * __restrict__’ but argument is of type ‘struct stud’

新手,看不懂,求大神指教

fwrite(*head,sizeof(struct stud),max,fp);
fread(*head,sizeof(struct stud),max,fp);这两条语句错了。
fwrite和fread是文件读写函数,要求里面的第一个蚕食是指向文件的指针。你这里的head是一个指向结构体的指针,所以错了。应该使用你定义的fp指针,这个指向了文件。追问

那要把这段链表写入这个文件应该怎么修改呢?

追答

参考下:
http://baike.baidu.com/view/656700.htm

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-06-03
完全看不懂啊
你是要修改这个文件?追问

这是里面的一个函数,在这里面建立了一个链表,我想把这个链表写入这个fp文件

相似回答