请看下面的一段烂程序:为什么结果是:m=1 f=0;而不是:m=1 f=1;呢?
#include<iostream.h>
#include<fstream.h>
class stu{
int number;
char *name;
char G;
int age;
char *tunnum;
public:
stu(){};
stu(int n,char*na,char g,int a,char*tn)
{
number=n;
name=na;
G=g;
age=a;
tunnum=tn;
}
friend ostream& operator<<(ostream& obj,stu& a)
{
obj<<a.number<<endl;
obj<<a.name<<endl;
obj<<a.G<<endl;
obj<<a.age<<endl;
obj<<a.tunnum<<endl;
return obj;
}
static void readfromfile(char*filename)
{
stu s;
int sum=0,m=0,f=0;
ifstream file(filename,ios::binary);
do
{
file.read((char*)&s,sizeof(stu));
file.seekg(sizeof(stu),ios::beg);
//cout<<s<<endl;
sum++;
if(s.G=='M')
m++;
if(s.G=='F')
f++;
}while(file.eof());
cout<<m<<" "<<f<<endl;
}
};void main()
{
stu a1(101,"you",'M',18,"05523123048"),
a2(102,"yan",'F',20,"05523123045");
ofstream fout("f:\\message.txt",ios::binary|ios::ate);
fout<<a1;
fout<<a2;
stu::readfromfile("f:\\message.txt");
}
#include<iostream.h>
#include<fstream.h>
class stu{
int number;
char *name;
char G;
int age;
char *tunnum;
public:
stu(){};
stu(int n,char*na,char g,int a,char*tn)
{
number=n;
name=na;
G=g;
age=a;
tunnum=tn;
}
friend ostream& operator<<(ostream& obj,stu& a)
{
obj<<a.number<<endl;
obj<<a.name<<endl;
obj<<a.G<<endl;
obj<<a.age<<endl;
obj<<a.tunnum<<endl;
return obj;
}
static void readfromfile(char*filename)
{
stu s;
int sum=0,m=0,f=0;
ifstream file(filename,ios::binary);
do
{
file.read((char*)&s,sizeof(stu));
file.seekg(sizeof(stu),ios::beg);
//cout<<s<<endl;
sum++;
if(s.G=='M')
m++;
if(s.G=='F')
f++;
}while(file.eof());
cout<<m<<" "<<f<<endl;
}
};void main()
{
stu a1(101,"you",'M',18,"05523123048"),
a2(102,"yan",'F',20,"05523123045");
ofstream fout("f:\\message.txt",ios::binary|ios::ate);
fout<<a1;
fout<<a2;
stu::readfromfile("f:\\message.txt");
}
解决方案 »
- 用vc6编译出来的总体是windows 98风格的,但List Ctrl,Tree Ctrl等控件中出现的滚动条却是XP风格的,有什么办法让这些滚动条也变成98风格的?
- (MFC)窗口分割中视图的动态更新(同步日志显示)
- 显示avi某一帧时,有错位显示现象,怎么解决?
- 如何在WTL中使用MFC的控件类。
- 怎样在程序中将一个对话框与新增的CFormView类关联?
- 给中国现在的软件公司分分类,我们应该选择适合自己的那一种!
- 难道没人帮我解决了吗?
- 这个问题大送分,我已经有很多问题大送分了。不过得分的全是回答正确的,参与者也有分。
- 如何让非模态对话框弹出只限定一个?
- 200分求解:在使用一个OCX控件中时碰到的问题!
- 用互斥体判断程序是否已运行的问题
- window2000的telnet的客户端和windowxp的telnet有什么不同吗?
#include<fstream.h>
class stu{
int number;
char name[256];
char G;
int age;
char tunnum[256];
public:
stu(){};
stu(int n,char*na,char g,int a,char*tn)
{
number=n;
strcpy(name,na);
G=g;
age=a;
strcpy(tunnum,tn);
}
friend ostream& operator<<(ostream& obj,stu& a)
{
obj<<a.number<<endl;
obj<<a.name<<endl;
obj<<a.G<<endl;
obj<<a.age<<endl;
obj<<a.tunnum<<endl;
return obj;
} static void readfromfile(char*filename)
{
stu s;
int sum=0,m=0,f=0;
ifstream file(filename,ios::binary);
do
{
file.read((char*)&s,sizeof(stu));
//file>>s;
//cout<<s<<endl;
sum++;
if(s.G=='M')
m++;
if(s.G=='F')
f++;
}while(!file.eof());
cout<<s<<endl;
}
};void main()
{
stu a1(101,"you",'M',18,"05523123048"),
a2(102,"yan",'F',20,"05523123045");
ofstream fout("c:\\message.txt",ios::binary);
fout.write((char*)&a1,sizeof(stu));
fout.write((char*)&a2,sizeof(stu)); // fout<<a1;
// fout<<a2;
stu::readfromfile("c:\\message.txt");}或者重载一个〉〉