c - 如何将内存地址转换为char字符串
问题描述
我想将内存段的地址转换为 char 字符串。
这是一个代码示例:
#include <stdio.h>
#include <stdlib.h>
int main(void) {
int size = 20;
char buffer[10];
char *ptr = (char*) malloc(size);
printf("Ptr addr: %p\n", ptr);
if(ptr != NULL)
{
snprintf(buffer, "%p", ptr);
printf("Ptr addr stored in buffer: %p\n", buffer);
}
return EXIT_SUCCESS;
}
输出:
指针地址:0x55ab2a43e260
Ptr addr 存储在缓冲区中:0x7ffe9a76470e
不幸的是,当我使用示例代码中的方法时,我有两个不同的地址。有人可以告诉我我做错了什么吗?
最好的问候,乌萨姆
解决方案
此代码打印 的地址,buffer
而不是其中的内容:
printf("Ptr addr stored in buffer: %p\n", buffer);
你可能想要
printf("Ptr addr stored in buffer: %s\n", buffer);
假设前面的代码填充buffer
了.ptr
正如评论中所述,您的调用snprintf()
不正确。它应该是
snprintf(buffer, sizeof(buffer), "%p", (void *) ptr);
请注意转换为(void *)
-%p
格式说明符需要一个void *
指针。
buffer
可能还需要超过 10 个字节,具体取决于您的系统。
推荐阅读
- r - 添加y标签到dendextend树状图
- python - 打印熊猫数据框时,如何在标题中包含列类型?
- html - textarea 中的新行
未解释 - firebase - 使用 firebase-functions-test 运行离线测试时缺少“client_secret”
- python - Pandas - 如何比较 2 个 CSV 文件和输出更改
- android - NativeScript 不会从 Sidekick 运行本地构建
- vue.js - 在 Axios Post action vueJs 之后我无法集成 Sweet Alert
- javascript - WebGL 三角形未正确渲染
- kubernetes - 与 HELM 共享依赖项
- php - php 将输入“名称”设置为 php echo 变量