gpt4 book ai didi

c - 对 C 内存地址执行操作作为 char* 进行输出。

转载 作者:行者123 更新时间:2023-12-02 09:16:41 25 4
gpt4 key购买 nike

我正在尝试将 argv 中所有参数的地址打印为分段字符。

argv[0]的地址

0x7ffdf0451078

我想将其打印为

0x7ffd f0 45 10 78

然后截断开头的 id,并将其打印到类似于

的格式化网格中
 +------+------+------+------+
| f0 | 45 | 10 | 78 |
+------+------+------+------+

我假设完成此操作的最简单方法是将 argv[0] 的地址保存为字符串或字符数组,然后对该字符串/数组进行一些操作。

但是到目前为止,我还无法将地址放入任何类型的容器中。

最佳答案

你可以做

char str[100];
sprintf(str, "%p", argv[0]);

现在,如果 argv[0]0x7ffdf0451078str 将具有 “0x7ffdf0451078”

您只需要 f0451078 部分。即 str+6 部分。

现在使用 sscanf() 就像

char d[4][3];
sscanf(str+6, "%2s%2s%2s%2s", d[0], d[1], d[2], d[3]);

并根据需要打印它们。

如果您使用 %x 格式说明符而不是 %p,请使用 str+4

演示 here .

关于c - 对 C 内存地址执行操作作为 char* 进行输出。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46612038/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com