求助!关于文件边读边写

loongee 2007-06-19 10:34:58
我的程序需要在读入文件的时候同时判断读入的信息是否合符要求,如果不符合要求的话就得把文件的当前行全部替换为空格,但问题就在于我的程序始终无法正常工作。代码如下:
#include <fstream>
#include <iostream>
using namespace std;

int main()
{
fstream infile("1.txt",ios::in ¦ios::out);
/*******不断读入文件数据*******/
/******………………………………*******/
/*****发现数据不合法,需要将当前行替换******/
char ctemp;
ctemp = '0';
while(ctemp != '\n')
{
infile.put(' ');
ctemp = infile.get();
}
return 0;
}

程序进入了死循环,无法读入也无法写入(devcpp)或只能不断地往里面写入空格(VC2005).如果删除其中的infile.put(' ');和ctemp = infile.get();的其中一句,程序就可以正常退出了,但显然这不是我要的结果,还请各位达人赐教,问题究竟出在哪里呢?怎样才能实现我需要的功能呢?(文件存在而且有内容,打开也成功了)
...全文
573 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
loongee 2007-06-21
  • 打赏
  • 举报
回复
算了吧,结帖了。。。。。
loongee 2007-06-20
  • 打赏
  • 举报
回复
谢谢楼上,自己来顶一个。
还有哪位达人能够帮忙解释下么?
cangwu_lee 2007-06-20
  • 打赏
  • 举报
回复
想法没有问题,只不过是做法有问题。
jixingzhong 2007-06-20
  • 打赏
  • 举报
回复
另外,
同时对一个文件进行读写,
容易出问题,
最好还是单独读取,单独写,
即建立两个文件操作 ...
jixingzhong 2007-06-20
  • 打赏
  • 举报
回复
同一个指针,
但是需要使用 seekg/seekp 调整指针 ...
taodm 2007-06-20
  • 打赏
  • 举报
回复
文件在读写间要有一个seek操作。
C语言时代就应该知道的知识点。
阿发伯 2007-06-20
  • 打赏
  • 举报
回复
while循环条件中最好加一个 && !infile.eof()
阿发伯 2007-06-20
  • 打赏
  • 举报
回复
理论上应该是这样的代码,我N年没用C/C++,现在的编译系统搞不明白

ctemp = infile.get();
while(ctemp != '\n')
{
infile.seekg(-1,ios_base::cur);
infile.put(' ');
ctemp = infile.get();
}
loongee 2007-06-20
  • 打赏
  • 举报
回复
经过个人尝试,勉强找到了一个能满足需求的方法,就是将上面的循环体改成
while(ctemp != '\n' && infile)
{
infile.put(' ');
infile.seekg(1,ios_base::cur); //如果删除这两行会使infile变为false,为什么?
infile.seekg(-1,ios_base::cur);
ctemp = infile.get();
infile.seekp(-1,ios_base::cur);
}
但是它也只能在VC2005下正常工作,哪位达人能帮忙解释下为什么么?
loongee 2007-06-20
  • 打赏
  • 举报
回复
谢谢各位,不过问题依然没有解决,使用seek后循环还是无法跳出。有谁能给出一小段代码吗?谢过。

To maozefa(阿发伯)
因为我在之前已经确认这一行有不符合要求的信息,因此就省略了第一次判断。写入一个空格再读取下一个字符进行判断。当然我指针的确有点问题。

To taodm((不能收CSDN社区短信息,请莫浪费精力))
很抱歉我们的课程是C++,学校没教C语言,所以不熟。

To jixingzhong(瞌睡虫·星辰)
其实我也很想用两个文件操作的,但是我不知道怎样让两个文件操作同步。(也就是怎样将一个文件的当前指针传给另一个文件操作呢?还请不吝赐教。

再次感谢各位。
阿发伯 2007-06-19
  • 打赏
  • 举报
回复
1、在put前文件指针应该回退一个字节
2、将ctemp = '0'; 换成ctemp = infile.get();
loongee 2007-06-19
  • 打赏
  • 举报
回复
你的意思是读出和写入使用的不是同一个文件指针么?
icosagon 2007-06-19
  • 打赏
  • 举报
回复
这种又读又写的文件流自己计算好位置,流内部位置定位的函数一个都没用怎么会成功

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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