c++中文件读写出错(求助)

hdjava 2012-03-04 12:22:32
Student stud;
fstream iofile("stud.txt);
if(!iofile) return -1;
int t=0;
int n;//n代表用户输入的学号
cin>>n;
while(iofile.read((char *)&stud,sizeof(stud)))
{
if(stud.num==n) //按学号查找文件中的学生记录,并修改其信息
{ cout<<stud.num<<" "<<stud.name<<" "<<stud.score<<endl; //显示欲修改的记录
cout<<"Please edit data:"<<endl;
cin>>stud.num>>stud.name>>stud.score;
iofile.write((char *)&stud,sizeof(stud));
t=1;
break;
}
}
if (t==0)
cout<<"没有此学号记录,无法修改!"<<endl;
iofile.close();

以上是核心代码,stud.txt已经建好,而且里面有一些记录。我运行程序时,发现修改后的数据无法写入到文件中。应该是write函数那里执行的不对。但是不太清楚为什么这样?

read 和write对应的文件指针是不是同一个?还是分别对应读指针和写指针?
...全文
116 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
无芒 2012-03-04
  • 打赏
  • 举报
回复
楼主代码 乱的可以

用源代码 插入

fstream iofile("stud.txt");

文件流标记只有一个 可以使用seekp来转移
fzlrpsun 2012-03-04
  • 打赏
  • 举报
回复
stud.txt是什么样的
hdjava 2012-03-04
  • 打赏
  • 举报
回复
为什么write后,数据并不能写入文件
taoyi75 2012-03-04
  • 打赏
  • 举报
回复
说实话,楼主思路是有问题的。读文件那个循环不小心就会进入一个死循环。还有创建的那个读写文件的fstream的读写方式也没有写是二进制读写方式,楼主应该是想用这个读写二进制文件吧
hdjava 2012-03-04
  • 打赏
  • 举报
回复
拷代码时漏掉一个引号。程序编译是没有问题的,现在应该是编写思路上有问题。
lirunfa 2012-03-04
  • 打赏
  • 举报
回复
fstream iofile("stud.txt);
后面少了个"

64,644

社区成员

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

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