文件输入输出问题

bad__ba 2008-10-30 12:26:46
ofstream outfile("data.dat",ios::out);
ifstream infile("data.dat",ios::in);
我这样定义的文件,在一个main函数里多次调用,但是写数据的时候老是只写第一次的,程序关了以后想要读数据,每次数据文件都变成空的了,怀疑是这两个函数设置的参数不对,高手帮我看下啊。而且感觉写的时候老爱出错。
//读文件
stu *openfile(stu *head_open)
{
cout<<"打开文件将丢失目前的临时文件?y"<<endl;
char tmp_open;
cin>>tmp_open;
if(tmp_open=='y'||tmp_open=='Y')
{
stu *pl_open,*pend_open;
stu *newhead_open=new stu;
pl_open=pend_open=newhead_open;

clearfile(head_open);
head_open=NULL;

if(!infile)
cout<<"打开文件错误!"<<endl;
else
{
while(!infile.eof())
{
pl_open=new stu;
infile>>pl_open->name>>pl_open->num>>pl_open->score;
pend_open->next=pl_open;
pend_open=pend_open->next;
}
infile.close();
pend_open->next=NULL;
delete_process(pend_open);
cout<<"读入成功!"<<endl;
}
return newhead_open->next;
}
else
return NULL;
}
//写文件
void savefile(stu * head_save)
{
cout<<"保存可能会覆盖以前数据,是否继续;y?"<<endl;
char tmp_save;
cin>>tmp_save;
if(tmp_save=='y'||tmp_save=='Y')
{
stu *pl_save;
pl_save=head_save;
if(!outfile)
{
cout<<"保存失败!"<<endl;
}
else
{
while(pl_save)
{
outfile<<pl_save->name<<" "<<pl_save->num<<" "<<pl_save->score<<" ";
pl_save=pl_save->next;
}
outfile.close();
cout<<"保存成功!"<<endl;
}
}
else ;
}
...全文
131 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
lann64 2008-11-03
  • 打赏
  • 举报
回复
读写文件注意:
1、打开模式
2、缓冲区维护,必要时fflush缓冲
3、状态标志,需要时clear状态位
4、关闭文件
5、输入输出绑定时,状态标志特别处理。
bad__ba 2008-11-03
  • 打赏
  • 举报
回复
确实加了iso::app就可以打开,但是不能覆盖以前的记录,谢谢大家了。
bad__ba 2008-11-03
  • 打赏
  • 举报
回复
大哥大姐们快来帮帮我啊
sun891420 2008-11-03
  • 打赏
  • 举报
回复
学习
bad__ba 2008-11-03
  • 打赏
  • 举报
回复
有没有人啊?
nicholas100 2008-10-31
  • 打赏
  • 举报
回复
学习
bad__ba 2008-10-31
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 pengzhixi 的回复:]
引用 3 楼 jia_xiaoxin 的回复:
ofstream outfile("data.dat",ios::out | ios::app);

否则,每次写的时候就会清除文件上所有内容。
[/Quote]

对啊,我向磁盘写的时候就是要让它清除以前的数据,但是读的时候希望能读到原来存储的数据。
这样一改不是就成了写的时候加到以前的末尾了,而且好像对从磁盘读数据的时候没什么影响啊,还是每次打开都为空。
overbai 2008-10-30
  • 打赏
  • 举报
回复
你的源程序好象没有贴完!暂时只知道这些!
ofstream outfile("data.dat",ios::out); 此方法将已经有的文件删除在重新建个新的同名文件!
改成ofstream outfile("data.dat",ios::app);
pengzhixi 2008-10-30
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 jia_xiaoxin 的回复:]
ofstream outfile("data.dat",ios::out | ios::app);
[/Quote]
否则,每次写的时候就会清除文件上所有内容。
jia_xiaoxin 2008-10-30
  • 打赏
  • 举报
回复
ofstream outfile("data.dat",ios::out | ios::app);
General1982 2008-10-30
  • 打赏
  • 举报
回复
以 out 模式打开的文件会被清空:丢弃该文件存储的所有数据。
应该以添加的方式打开文件,ios::app:在每次写之前找到文件尾.
内容概要:本文围绕“新型电力系统下多分布式电源接入配电网承载力评估方法”的研究,系统性地介绍了基于Matlab的仿真建模与代码实现方案,旨在评估高比例分布式电源(如光伏、风电等)接入背景下配电网的接纳能力。研究融合了智能优化算法(如蜣螂优化、灰狼优化、遗传算法)、多目标优化、鲁棒优化及双层优化模型,结合潮流计算、稳定性分析与故障仿真,构建了完整的承载力评估体系。文档不仅提供核心算法实现,还拓展至微电网调度、储能配置、电氢耦合系统、电动汽车协同等前沿方向,强调“复现+创新”相结合的科研路径,助力研究者快速掌握高水平论文复现技巧并激发原创思路。; 适合人群:具备电力系统、自动化或相关专业背景,熟悉Matlab/Simulink仿真环境,正在从事科研或工程应用的研究生及初级科研人员(工作1-3年);; 使用场景及目标:①复现高水平期刊中关于配电网承载力的优化模型;②开展高比例可再生能源接入下的配电网规划与运行研究;③学习并应用智能优化算法解决复杂电力系统问题;④获取完整科研资源包以加速课题进展与论文撰写; 阅读建议:建议读者关注公众号“荔枝科研社”获取网盘资源,下载全套代码与模型文件,按照文档结构循序渐进学习,重点理解算法设计逻辑与仿真建模细节,结合所提供的复现案例深化对优化模型与工程应用场景的理解,提升科研效率与创新能力。

65,211

社区成员

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

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