有没有API可以在文件中精确定位地修改指定的一个或者若干个字节。

Mauney 2005-01-26 01:52:33
有没有API可以在文件中精确定位地修改指定的一个或者若干个字节。
...全文
143 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
Mauney 2005-01-26
  • 打赏
  • 举报
回复
原来如此,多谢,多谢。
马上结贴给分。
谢谢,谢谢!
Maconel 2005-01-26
  • 打赏
  • 举报
回复
WriteFile(FileHandle,str,(DWORD)sizeof(str),&length,NULL);
是这里错了,str是个char*型的,不管它指向哪里,他的sizeof始终是4,你可以显示出来看一下。
解决方法是改为strlen(str)。
Mauney 2005-01-26
  • 打赏
  • 举报
回复
Maconel(Maconel)能不能解释一下为什么我每次只能写4个字节到文件里?
以下是我的代码:
char *filename = "d:\\aa.txt", *str = "c";
DWORD length;
HANDLE FileHandle = CreateFile(filename,GENERIC_WRITE,FILE_SHARE_READ|FILE_SHARE_WRITE,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);
if(FileHandle == INVALID_HANDLE_VALUE)
MessageBox(NULL,"File cannot be opened.","Infor",MB_OK);
else
MessageBox(NULL,"File has been opened successfully.","Infor",MB_OK);
SetFilePointer(FileHandle,50,NULL,FILE_BEGIN);
WriteFile(FileHandle,str,(DWORD)sizeof(str),&length,NULL); //虽然用了SIZEOF
但是每次只能固定地
写4个字符。无论str
的实际大小是多少。
CloseHandle(FileHandle);
请问错在什么地方??为什么每次都是写4 个字节,而不是按照sizeof(str)的大小。
gnixemos 2005-01-26
  • 打赏
  • 举报
回复
C 库函数 fseek fread fwrite
windows Api :SetFilePointer ReadFile WriteFile
MFC : CFile对象的seek ...

hxblvc 2005-01-26
  • 打赏
  • 举报
回复
"精确定位" 有现成的API 如:fseek()
"修改" 没有直接的API.要通过fread().fwrite()来完成.
kay_zlc 2005-01-26
  • 打赏
  • 举报
回复
Most of file APIs provides functions such as seek,read,write...
So they can meet your requirements.
Maconel 2005-01-26
  • 打赏
  • 举报
回复
OpenFile 打开文件
ReadFile 读文件
SetFilePointer 定位到文件中某处
WriteFile 写文件
CloseHandle 关闭文件
Mauney 2005-01-26
  • 打赏
  • 举报
回复
最好写得详细一点。

3,881

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 其它技术问题
社区管理员
  • 其它技术问题社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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