读书人

文件读取的有关问题,这样的格式应该如

发布时间: 2012-03-12 12:45:33 作者: rapoo

文件读取的问题,这样的格式应该怎么读进去! 急急急~~
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);
我想只有利用上面那个函数,把文件指针移动到你想读取的位置。


中文字符占用字节数: UTF16 2字节, UTF32 4 字节, UTF8 2-6 字节 , GB2312 2 字节。
[解决办法]
fprintf不一定有方法读好的
要特别熟悉fscanf才行
如果你还要读,建议用二进制格式,而不是文本格式
[解决办法]
fscanf(f,"%d | %d | %d | %d ....",&.....);
如果你中间有间隔符也做为格式加进scan

读书人网 >C++

热点推荐