【发布时间】:2017-04-13 18:15:54
【问题描述】:
我正在尝试使用以下代码修改我的结构的一个字节:
struct example *dev;
PRINT_OPAQUE_STRUCT(dev);
sprintf((char*) dev + 24, "%x",1);
PRINT_OPAQUE_STRUCT(dev);
PRINT_OPAQUE_STRUCT 只是打印结构的内容,并在另一个主题中定义: Print a struct in C
这个程序的输出是:
d046f64f20b3fb4f00000000e047f64f00000000ffffffff000000 d046f64f20b3fb4f00000000e047f64f00000000ffffffff310000
我不知道为什么我写的是值“31”而不是值“01”。我试图用“%01x”替换 sprintf 的第二个参数,但它没有改变任何东西。有谁知道为什么?
谢谢!
【问题讨论】:
-
还请注意,您将要更改的字符后面的字符更改为 00。在这种情况下,它已经是 00,所以您看不到它,但如果是 42,您就会看到将其覆盖为 00
标签: c