所以我的代码行如下
printf("test @ 0x%1$08x = %2$d 0x%2$08x\n", &test_val, test_val);
但不是打印变量而是打印
test @ 0x$08x = $d 0x$08x
它完全忽略百分比字符而不打印任何变量。我找不到任何关于这个或任何可能发生这种情况的理由,希望有人可以提供帮助。
编辑:我找不到链接,但基本上是从我的知识和来自 Hacking: The art of Exploitation百分号之后的数字应该是它使用的参数,因此%n $ d将使用第n个 参数和打印为小数。在这种情况下,将打印%1 $ 08x & test_val以十六进制和%2 $ d将test_val打印为小数。
答案 0 :(得分:-1)
int c = 0;
int * p = &c;
printf("test@ 0x%d %d\n", &p, *p);
http://www.cplusplus.com/reference/cstdio/printf/ 看看这个页面,了解哪些修改器将具有哪种课程。
(数字)要打印的最小字符数。如果要打印的值小于此数字,则结果将填充空格。即使结果较大,也不会截断该值。