求助c++高手,关于fstream ,定义文件流对象无法写入的问题

yidifanhua123456 2010-11-11 11:45:57
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中的内容为空。这是为什么呢?
...全文
299 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
luciferisnotsatan 2010-11-12
  • 打赏
  • 举报
回复
kh inputname(kh p1) 改成指针 (kh *p1)或者 引用 (kh &p1)。建议用指针

代码做相应修改
jixingzhong 2010-11-12
  • 打赏
  • 举报
回复
inputname(p);
==>
inputname(&p);

其他类似的,都改用指针方式访问

64,686

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧