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);
减四是除去读文件时指针变量所占的内存。
我把文件改为二进制文件了,结果还是不对。 展开
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);
减四是除去读文件时指针变量所占的内存。
我把文件改为二进制文件了,结果还是不对。 展开
2个回答
2009-06-25
展开全部
q=fread(p,sizeof(struct student)-4,1,fp);
为什么要 减4 ??
为什么要 减4 ??
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询