文件操作 修改数据出现乱码问题

vincent_1011 2009-01-24 01:31:17
很郁闷啊。最近在文件操作的时候发现这个问题

例如文件A中数据是:

测试

一共占4个字节。可是当我把想把1替换掉测字的时候就乱码。

发现是因为1是占一个字节的,放进去后就把里面的字节搞乱了。

大哥们都是怎么处理这些问题的?
...全文
170 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
chen_jun_fen 2009-02-03
  • 打赏
  • 举报
回复
判断 需要替换的的哪个 字符 是中文还是英文,然后才去决定是替换两个字节还是一个字节.
vincent_1011 2009-02-03
  • 打赏
  • 举报
回复
过年完了,再顶下,没人回答就得结了,晕晕
vincent_1011 2009-01-28
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 limenglin 的回复:]
用宽字符'1',中文都是2字节的...
[/Quote].

问题是被替换的字符串不确定啊。例如你要用一个数字替换第三个字符,可是不知道这第三个是数字还是中文

yangkunhenry上面的一个连接里面的办法确实就可以解决了这个问题,不过里面好像用到容器。
卖萌犯法 2009-01-27
  • 打赏
  • 举报
回复
用宽字符'1',中文都是2字节的...
lsyzh 2009-01-27
  • 打赏
  • 举报
回复
内存映射?
用Create...族函数。《Windows核心编程》里有说。
vincent_1011 2009-01-26
  • 打赏
  • 举报
回复
我写进去的字符串里面可能也有数字和中文啊。闷。
vincent_1011 2009-01-25
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 dongpy 的回复:]
先把文件数据读到内存,替换后再写回.

用"1"替换"测",长度不同,要把"测"的高字节改成空格符,或者把"试"往前移动一字节.
[/Quote]

这样不好,我想改完后文件就只有3个字节了。。

而且有时候修改文件,里面的内容又是未知性的。

不过这问题应该经常遇到的吧?所以应该有现成的机制来处理这些问题

可是我没找到。闷。
imafish_i 2009-01-25
  • 打赏
  • 举报
回复
写一个wchar_t的1进去试试
vincent_1011 2009-01-24
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 yangkunhenry 的回复:]
恩?昨天(3个小时前)还写了个替换的程序呢
处理的时候当字符串处理就可以了
你参考一下:http://topic.csdn.net/u/20090123/10/b78e139e-6174-4660-b8c4-387372081ece.html
[/Quote]

-_-.你那个麻烦哦?我想用内存映射出来。memcpy来替换的。
dongpy 2009-01-24
  • 打赏
  • 举报
回复
先把文件数据读到内存,替换后再写回.

用"1"替换"测",长度不同,要把"测"的高字节改成空格符,或者把"试"往前移动一字节.
vincent_1011 2009-01-24
  • 打赏
  • 举报
回复
to waizqfor

内存映射我会用.我也就是说想说乱码问题.

yangkunhenry 那个就不会乱码,,

不过用到容器什么的.有没别用这些杂东西.能处理乱码问题
yangkunhenry 2009-01-24
  • 打赏
  • 举报
回复
恩?昨天(3个小时前)还写了个替换的程序呢
处理的时候当字符串处理就可以了
你参考一下:http://topic.csdn.net/u/20090123/10/b78e139e-6174-4660-b8c4-387372081ece.html
waizqfor 2009-01-24
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 vincent_1011 的回复:]
引用 1 楼 yangkunhenry 的回复:
恩?昨天(3个小时前)还写了个替换的程序呢
处理的时候当字符串处理就可以了
你参考一下:http://topic.csdn.net/u/20090123/10/b78e139e-6174-4660-b8c4-387372081ece.html


-_-.你那个麻烦哦?我想用内存映射出来。memcpy来替换的。
[/Quote]
http://www.diybl.com/course/3_program/c++/cppjs/2008215/99870.html
http://www.9php.com/FAQ/cxsjl/c/2007/12/9123594109149.html
来两个内存映射

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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