求助c++高手,关于fstream ,定义文件流对象无法写入的问题
extern kh inputname(kh p1)//这个是一个片段,由于工程不是太小,//说以没贴全,希望路过的高手能看看
void kaihu()
{
system("cls");//清屏
fstream f;//定义文件流对象
f.open("contents.txt",ios::app);//以追加的方式打开文件
system("cls");//清屏
inputId(p);
f.seekg(0,ios::beg);//读指针至开头
if(f.fail())exit(0);//判断是否至读开头
while(f.eof())
{
f.read(( char*)&p2,sizeof(kh));
if(f.fail())exit(0);//判断是否正常读取
if(!strcmp(p.id,p2.id))//相等时
{
MessageBox(0,"此用户已开户!","提示",0);
system("cls");
printf("1.返回开户主界面\n");
printf("2.退出\n");
printf("请输入功能号:");
switch(getch())
{
case '1':kh1();break;
case '2':exit(0);break;
default: MessageBox(0,"无效命令操作!","提示",0);
}
}
else
break;
}
inputname(p);//输入名字并检验是否正确
inputpwd(p);//输入密码并检查是否合法
inputmoney(p);//输入存款金额;
system("cls");
f.write((char*)&p,sizeof(kh)); //写入数据
f.close();
system("cls");
MessageBox(0,"数据保存成功","提示",0);
//读出数据
int jx;
jx=MessageBox(0,"读出账户的信息吗?","提示",1);
if(jx)
{
system("cls");
p.content();
system("pause");
}
exit(0);
}
这是一个片段,外部函数声明入下:就以其中的inputname为例吧
kh inputname(kh p1)//kh是我定义的一个类名
{
system("cls");
while(1)
{
printf("请输入姓名:");
cin>>p1.name;
if(strlen(p1.name)>9)////得到字符串长度
{
MessageBox(0,"输入的姓名字数有误","提示",0);
}
break;
}
return p1;
}
现在我面临的问题是我最后是把我传进去的内容显示出来,但是,显示的结果是我保存在对象p中的内容为空。这是为什么呢?