[英]How to convert a memory address into a char string
我想將內存段的地址轉換為字符字符串。
下面是一個代碼示例:
#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);
鑒於之前的代碼使用ptr
內容的字符串表示填充了buffer
。
正如評論中所述,您對snprintf()
調用不正確。 它應該是
snprintf(buffer, sizeof(buffer), "%p", (void *) ptr);
注意轉換為(void *)
- %p
格式說明符需要一個void *
指針。
buffer
可能還需要超過 10 個字節,具體取決於您的系統。
代碼中有兩個錯誤
1) 錯誤的 snprint - 您錯過了第二個參數,即緩沖區的大小。
snprintf(buffer, sizeof(buffer), "%p", ptr);
2) 打印緩沖區的格式錯誤 - 字符串應該是 %s
printf("Ptr addr stored in buffer: %s\n", buffer);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.