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。
我有以下代码:
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。