我们老师让我们编一个很简单的学生管理系统,后面没有数据库支持的,学生信息就存在服务器的TXT文本里面。。。。
学生信息包括姓名,年龄,学号,成绩。按照这些信息的顺序每人一行,存在TXT文本里面。
现在我有一个地方不会,就是如何把这些信息读入到程序中定义好的结构体中。
哪位大大能给个示范或者给例程都行呀。
小弟先谢过了。
能不能麻烦您用C写一下,我刚学C很菜的,C++我看不大懂。
追答//忘了c是什么样的了,试下看
#include
#include
//定义结构
struct student{
int sid;
char sname[50];
};
//定义个结构的链表list
typedef struct stdlist{
student sdata;
stdlist * next;
} *stdptr;
//传入头指针
bool filllist (stdptr alistHead){
stdptr p=alistHead->next;
while(p) p=p->next; //移动到链表的结尾,一般应该传进来的是空头指针才对
FILE *fp;
if((fp=fopen("testdata.txt","rt"))==NULL) return false;
student tmpNode;
//循环读取
while(1){
stdptr q=new stdlist;
printf("qcreated\n");
q->next=NULL;
//delete q;
fread(&tmpNode,sizeof(student),1,fp);
printf("tmpNode:%d %s\n",tmpNode.sid,tmpNode.sname);
q->sdata=tmpNode;
printf("q uncreated %d %s\n",q->sdata.sid,q->sdata.sname);
fscanf(fp,"%s%d",&(q->sdata.sname),&(q->sdata.sid));
printf("q uncreated %d %s\n",q->sdata.sid,q->sdata.sname);
if (feof(fp)) break;
p->next=q;
p=q;
}
fclose(fp);
return true;
}
bool clearlist (stdptr alistHead){
stdptr p=alistHead->next;
while(p) {
alistHead->next=p->next;
delete p;
p==alistHead->next;
}
return true;
}
int main(){
stdptr aHead=new stdlist;
aHead->next=NULL;
filllist(aHead);
clearlist(aHead);
delete aHead;
printf("ok!");
}
//稍微试了下,可以用但是字符串处理的地方需要修改,你自己看着调整吧