feature.cpp
#include"head.h"
/********************获取文件名;读取内容;给num,fp,head,flieopenname赋值;创建链表***********************/
//打开文件,并读取文件
int read_file()
{
int i;
int fno,fsize;
if((fp=fopen("student_system.txt","rt"))==NULL)//判断文件是否存在,若存在打开
{ //否则询问是否继续打开
printf("\n库文件不存在!\n");
return 0;
}
rewind(fp); //使文件内部指针移动到文件的开始位置
fno=fileno(fp); //获取文件描述字
fsize=filelength(fno); //计算文件大小,以字节为单位
num=fsize/sizeof(Node); //计算文件包含的学生信息数目
iend=inew=(STUDENT *)malloc(sizeof(STUDENT));//申请动态空间
fread(inew,sizeof(Node),1,fp); //以Node(结构体)的空间大小读数据
for(i=1;i<=num;i++) //利用for循环创建链表,并把数据储存到其中
{
if(i==1) //第一个节点的创建
{
inew->next=head;
inew->last=NULL; //双向链表
iend=inew;
head=inew;
}
else
{
inew->next=NULL;
inew->last=iend;
iend->next=inew;
iend =inew;
}
inew=(STUDENT *)malloc(sizeof(STUDENT));
fread(inew,sizeof(Node),1,fp);
}
free(inew);//释放最后一个没有储存数据的节点
fclose(fp);//关闭文件
return num;
}
加入群715383213领取编程资料
/****************************输入函数*******************/
STUDENT *pinput()
{
char ch;
if(num==0)//判断是否是第一次录入
{
iend=inew=(STUDENT *)malloc(sizeof(ST