我正在尝试编写一个简单的 TGA 图像文件保护程序作为 C++ 的学习练习。我将我的代码基于一个示例 TGA 加载器,该加载器为标头声明一个结构,然后使用 fread() 一次性加载整个标头。
我的程序现在不工作,似乎有两个额外的字节被写入文件。我打印了我的结构的大小,它太大了两个字节(20 而不是正确的 18)。经过一点阅读,我认为问题与数据对齐和填充有关(我不太熟悉结构的存储方式)。
我的问题是什么是一个好的解决方案?我想我可以逐字节编写结构的组件,而不是使用 fwrite() 一次写入整个结构,这就是我现在要做的。我假设如果它在加载标题时起作用,那么在编写它时它也会起作用。我的假设不正确吗?