如何把磁盘文件中的某个字符代替成指定的字符?

fthislife 2009-11-09 02:35:04
如何把文件中的某个字符代替成指定的一个字符?比如说:在d盘有个文a.txt,现要把该文件中所有字符'a'替换成“b"符字,而其他的字符位置不变。怎样实现?
...全文
47 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
fthislife 2009-11-09
  • 打赏
  • 举报
回复
谢谢热情的回贴
xixiaoliu 2009-11-09
  • 打赏
  • 举报
回复
fopen, fread, fwrite 系列的函数会缓存文件内容,在以上思路下不好用。
一定要用这些函数的话,可能需要全部读入,处理后一次性写出
mstlq 2009-11-09
  • 打赏
  • 举报
回复
请分别google“fopen”“fseek ”“fread”“fwrite”……
xixiaoliu 2009-11-09
  • 打赏
  • 举报
回复
然后

int main()
{
foo(_T("D:\\aaa.txt"), 'a', 'b');

return 0;
}
xixiaoliu 2009-11-09
  • 打赏
  • 举报
回复

#include <Windows.h>
#include <tchar.h>

void foo(LPCTSTR szFileName, BYTE byFind, BYTE byReplaceWith)
{
HANDLE hFile = CreateFile(szFileName, GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);

if (hFile == INVALID_HANDLE_VALUE)
{
return;
}

DWORD dwLength = GetFileSize(hFile, NULL);
DWORD dwBytes;
BYTE byBuffer;

for (DWORD i = 0; i < dwLength; ++i)
{
ReadFile(hFile, &byBuffer, 1, &dwBytes, NULL);

if (byBuffer == byFind)
{
SetFilePointer(hFile, -1, NULL, FILE_CURRENT);
WriteFile(hFile, &byReplaceWith, 1, &dwBytes, NULL);
}
}

CloseHandle(hFile);
}
fthislife 2009-11-09
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 xixiaoliu 的回复:]
二进制+R/W 方式打开文件,逐字节检查,如果为 a,倒退一字节,写回 b
[/Quote]
怎样倒退?麻烦写几句代码,谢了
xixiaoliu 2009-11-09
  • 打赏
  • 举报
回复
二进制+R/W 方式打开文件,逐字节检查,如果为 a,倒退一字节,写回 b

64,676

社区成员

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

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