C语言,帮我看看这个从文件中读取信息的函数

#include<stdio.h>structstudent{intnum;charname[20];structstudent*next;}*p,*t,*head;st... #include<stdio.h>
struct student
{
int num;
char name[20];
struct student *next;
}*p,*t,*head;
struct student *load()
{
int n=0,q;
struct student *head,*p,*t;
FILE *fp;
if((fp=fopen("stud.dat","rt"))==NULL)
{
printf("Open file stud.dat error!\n");
getch();
exit(1);
}
do
{
p=(struct student *)malloc(sizeof(struct student));
q=fread(p,sizeof(struct student)-4,1,fp);
if(q!=1)
break;
if(n==0)
{t=head=p;t->next=NULL;n++;}
p->next=NULL;
t->next=p;
t=p;
}while(1);
close(fp);
return head;
}
这个函数的意思是从文本文件"stud.dat"中读取信息到一个链表中,并返回链表的头指针。读取文件信息总是不正确,请各位帮忙看看是什么地方出了问题。不胜感谢。
q=fread(p,sizeof(struct student)-4,1,fp);
减四是除去读文件时指针变量所占的内存。
我把文件改为二进制文件了,结果还是不对。
展开
 我来答
匿名用户
2009-06-25
展开全部
q=fread(p,sizeof(struct student)-4,1,fp);
为什么要 减4 ??
therandomworld
2009-06-25 · TA获得超过812个赞
知道小有建树答主
回答量:724
采纳率:0%
帮助的人:544万
展开全部
文本文件应该用fscanf读取

二进制文件才用fread读取
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式