[英]Direct Parameter access being ignored
所以我的代码行如下
printf("test @ 0x%1$08x = %2$d 0x%2$08x\n", &test_val, test_val);
但不是打印变量,而是打印
test @ 0x$08x = $d 0x$08x
它完全忽略了百分比字符,并且没有打印出任何变量。 我找不到任何有关此事的信息,也无法找到希望发生这种情况的任何原因,希望有人可以提供帮助。
编辑:我找不到链接,但是基本上是从我的知识和黑客技术中找到的:剥削的艺术百分号后的数字应该是它使用的参数,因此%n $ d将使用第n个参数并打印为小数。 在这种情况下,%1 $ 08x将以十六进制形式打印&test_val,%2 $ d将以十进制形式打印test_val。
int c = 0;
int * p = &c;
printf("test@ 0x%d %d\n", &p, *p);
http://www.cplusplus.com/reference/cstdio/printf/查看此页面,了解哪些修饰符将具有哪门课程。
(数字)要打印的最小字符数。 如果要打印的值小于此数字,则结果将用空格填充。 即使结果较大,该值也不会被截断。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.