c++ - 重写二进制文件的一部分

标签 c++ file fwrite fseek

我有一个带有标题和元信息的图像文件,图像数据存储在标题之后,我想重写图像数据,但是 imagesection 周围的其他数据已损坏(标题)并且文件被截断。

我怎样才能正确地完成它?

代码如下:

FILE* f = _tfopen(fileName, _T("wb"));
if( f != NULL )
{
        uint64 headerSize = 8;
        char arr[2*3*3]; //w=3 h=2  RGB
        memset(arr,100,2*3*3);
        _fseeki64(f, headerSize, SEEK_SET);
        fwrite(arr,sizeof(char),sizeof(arr),f);
        fclose(f);
}

最佳答案

我认为您需要将文件的打开模式从 "wb" 更改为 "r+b"

来自 cplusplus.com :

"w"write:为输出操作创建一个空文件。如果已存在同名文件,则丢弃其内容并将该文件视为新的空文件。

关于c++ - 重写二进制文件的一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20284906/

相关文章:

c++ - fwrite 在 C++ 中的工作

c++ - fwrite 在大数据上失败

c++ - 延期成员(member) build

C# ECDsaCng.SignData 在 OpenSSL 中使用签名?

c++ - C++ std::vector of array 的编译器错误

java - 如何选择 "My Documents"文件保存路径

c# - 从文件中读取随机行? C#

c - 是否可以创建一个用 C 语言读取半个文本文件的函数?

Python 打印到文件不工作

c++ - 是否可以将 Qt Creator 2.7 与 Visual Studio 2012 编译器一起使用并拥有其所有功能?