狗屁大学教材
在大学教材《c++程序设计实验教导与习题解答》"实验十一 流类库与输入/输出实验"实例3中,先不说缺少文件的定义语句,文中红色程序纯粹是误人子弟,实令人怀疑各位编委的水平:【实例3】 编写一个程序,生成人员信息文件f1.dat,其中信息包括姓名、身高和年龄,
并用二进制方式打开该文件。
题目分析:打开二进制文件时,在open 函数中要加上ios::binary 方式。向二进制文件
中写入信息时使用write 函数,从二进制文件中读出信息时使用read 函数。
程序示例:
#include "iostream.h"
#include "fstream.h"
#include "stdlib.h"
struct Person
{ char name[10];
double height;
unsigned age;
};
Person people[4]={{"wang",1.65,25},{"zhang",1.72,24},
{"li",1.89,21},{"hung",1.70,22}};
void main( )
{
//编写程序
for(int i=0;i<4;i++)
outfile.write((char *)&people[i],sizeof(people[i]));
outfile.close( );
infile.open("f1.dat",ios::in|ios::binary);
if(!infile)
{ cout<<"No such file!"<<endl;
abort( );
}
for(int j=0;j<4;j++)
{
infile.read((char *)&people[j], sizeof(people[j]));
cout<<people[j].name<<"\t"<<people[j].height
<<"\t"<<people[j].age<<endl;
}
infile.close( );
}
1.程序中使用的结构体people输入、输出一致掩盖了程序的错误;
2.如果使用另一新定义的结构体people1用于输入,则错误立现,此时使用vc6.0运行结果如下:
0 0
0 0
0 0
0 0
Press any key to continue
3.此问题应如何解决?
[ 本帖最后由 yxb0001 于 2009-10-7 13:20 编辑 ]