关于C语言中读取TXT文本的内容

我们老师让我们编一个很简单的学生管理系统,后面没有数据库支持的,学生信息就存在服务器的TXT文本里面。。。。
学生信息包括姓名,年龄,学号,成绩。按照这些信息的顺序每人一行,存在TXT文本里面。
现在我有一个地方不会,就是如何把这些信息读入到程序中定义好的结构体中。
哪位大大能给个示范或者给例程都行呀。
小弟先谢过了。

第1个回答  推荐于2016-09-05
bool TScoreInfo::fileList(){
ifstream sfile;
string sSInfo;
clear();
sfile.open(DATAFILE.c_str(),ifstream::in);
if (!sfile.is_open()){
cout<<"Can't open datafile!Please check the existence of this file!"<<endl;
return false;}
//读取第一行的标题行
getline(sfile,sSInfo);
//读取数据
getline(sfile,sSInfo);
while(!sfile.eof()){
TSptr p=new TStudentNode;
p->aStudent= new TSInfo(sSInfo);
p->next = 0;
p->aStudent->caculateTotalScore();
dealNode(p->aStudent);
insertList(p);
getline(sfile,sSInfo);
}
sfile.close();

stateFlag=1;
return true;
}追问

能不能麻烦您用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!");
}

//稍微试了下,可以用但是字符串处理的地方需要修改,你自己看着调整吧

本回答被提问者采纳
第2个回答  2011-07-07
用文件啊
相似回答