seekp 不是在寻找正确的位置?

seekp not seeking to proper location?

我有以下代码:

  file.open(fileName, ios::in | ios::out | ios::binary);
   // many lines later
  file.seekp(fooAddr, ios::beg);
  printf("foo_addr: %d\n", foo_addr);
  file.write((char*)fooStruct, sizeof(FooStruct));

我知道 fooAddr 是 128,因为 printf。 然而,出于某种原因,当我在我的十六进制编辑器中打开目标文件时,第一个字节写入位置 80。

这可能吗?还是我的程序中有一些我忽略的错误?

我想,对于上下文,我所有的文件操作都包含在一个宏中,该宏检查 file.goodbit 是否不为 0(真实),如果是 - 程序在打印错误后立即退出。

您的十六进制编辑器正在以十六进制格式显示文件偏移量,而不是十进制格式。

十进制 128 是十六进制 0x80。