文件读取的有关问题,这样的格式应该如何读进去! 急
文件读取的问题,这样的格式应该怎么读进去! 急急急~~
typedef struct stu //学生资料
{
char _class[20]; //班级
int num; //学号(两位数)
char name[8]; //姓名
float elec; //电子技术
float C_prog; //c++程序设计
float media; //多媒体
float Eng; //大学英语
float math; //大学数学
float sport; //大学体育
float polity; //政治
float ave; //平均成绩
int order; //名次
stu *next; //记录下一结点的指针
}stuNode;
学生结构体
stuNode * link; //头节点
//保存文件到本地文本文件
void SaveFile(stuNode *link)
{
FILE *fp;
if( (fp=fopen("c:\\student.txt","w+"))==NULL)
{
printf("不能打开此文件!\n");
return;
}
for(stuNode * s = link ; s != NULL ; s = s->next );
{
fprintf(fp,"%s 班级\n",s->_class);
fprintf(fp,"------------------------------------------\n" );
fprintf(fp,"|学号| 姓名 |电子技术| C++ | 多媒体 | 英语 | 数学 | 体育 |政治经济|\n" );
fprintf(fp,"------------------------------------------\n" );
fprintf(fp,"| %2d |%-8s|%7.0f|%7.0f|%7.0f|%7.0f|%7.0f|%7.0f|%7.0f|\n", s->num,
s->name,
s->elec,
s->C_prog,
s->media,
s->Eng,
s->math,
s->sport,
s->polity );
fprintf(fp,"------------------------------------------\n" );
// }
fclose(fp);
}
文件保存的内容格式如下:
1 班级
------------------------------------------
|学号| 姓名 |电子技术| C++ | 多媒体 | 英语 | 数学 | 体育 |政治经济|
------------------------------------------
| 1 |1 | 1| 1| 1| 1| 1| 1| 1|
------------------------------------------
问各位大哥读的时候应该怎么样读出来啊??
void LoadFile(stuNode *link)
{
FILE *fp;
stuNode * temp ;
if( (fp=fopen("c:\\student.txt","r"))==NULL)
{
printf("不能打开此文件!\n");
}
while(!fp)
{
stuNode * s;
fscanf(fp,"%d",s->_class);
fscanf(fp,"%d %s %f %f %f %f %f %f %f ",s->num,s->name, s->elec,s->C_prog,s->media,s->Eng, s->math, s->sport, s->polity );
s->next = NULL;
if(link == NULL)
link = s;
else
{
s->next = link->next;
link ->next = s;
}
}
fclose(fp);
}
我这里写错了! 各位大哥,应该怎么写这个读取的函数啊!
急急急~ ....
小弟在线等待 ...
或者MSN我 liulop2004@hotmail.com
小弟不胜感激!
------解决方案--------------------
int fseek(FILE *stream, long offset, int fromwhere);
我想只有利用上面那个函数,把文件指针移动到你想读取的位置。
typedef struct stu //学生资料
{
char _class[20]; //班级
int num; //学号(两位数)
char name[8]; //姓名
float elec; //电子技术
float C_prog; //c++程序设计
float media; //多媒体
float Eng; //大学英语
float math; //大学数学
float sport; //大学体育
float polity; //政治
float ave; //平均成绩
int order; //名次
stu *next; //记录下一结点的指针
}stuNode;
学生结构体
stuNode * link; //头节点
//保存文件到本地文本文件
void SaveFile(stuNode *link)
{
FILE *fp;
if( (fp=fopen("c:\\student.txt","w+"))==NULL)
{
printf("不能打开此文件!\n");
return;
}
for(stuNode * s = link ; s != NULL ; s = s->next );
{
fprintf(fp,"%s 班级\n",s->_class);
fprintf(fp,"------------------------------------------\n" );
fprintf(fp,"|学号| 姓名 |电子技术| C++ | 多媒体 | 英语 | 数学 | 体育 |政治经济|\n" );
fprintf(fp,"------------------------------------------\n" );
fprintf(fp,"| %2d |%-8s|%7.0f|%7.0f|%7.0f|%7.0f|%7.0f|%7.0f|%7.0f|\n", s->num,
s->name,
s->elec,
s->C_prog,
s->media,
s->Eng,
s->math,
s->sport,
s->polity );
fprintf(fp,"------------------------------------------\n" );
// }
fclose(fp);
}
文件保存的内容格式如下:
1 班级
------------------------------------------
|学号| 姓名 |电子技术| C++ | 多媒体 | 英语 | 数学 | 体育 |政治经济|
------------------------------------------
| 1 |1 | 1| 1| 1| 1| 1| 1| 1|
------------------------------------------
问各位大哥读的时候应该怎么样读出来啊??
void LoadFile(stuNode *link)
{
FILE *fp;
stuNode * temp ;
if( (fp=fopen("c:\\student.txt","r"))==NULL)
{
printf("不能打开此文件!\n");
}
while(!fp)
{
stuNode * s;
fscanf(fp,"%d",s->_class);
fscanf(fp,"%d %s %f %f %f %f %f %f %f ",s->num,s->name, s->elec,s->C_prog,s->media,s->Eng, s->math, s->sport, s->polity );
s->next = NULL;
if(link == NULL)
link = s;
else
{
s->next = link->next;
link ->next = s;
}
}
fclose(fp);
}
我这里写错了! 各位大哥,应该怎么写这个读取的函数啊!
急急急~ ....
小弟在线等待 ...
或者MSN我 liulop2004@hotmail.com
小弟不胜感激!
------解决方案--------------------
int fseek(FILE *stream, long offset, int fromwhere);
我想只有利用上面那个函数,把文件指针移动到你想读取的位置。