说我有以下内容:
#include <stdio.h>
#include <string.h>
int main() {
char c = 'c';
char addr[50];
strcpy(addr, &c);
printf("%p\n", &c);
printf("%s", addr);
printf("\n");
return 0;
}
上面会打印
0x7ffc241780af
c@@ //some gibberish
对于输出的第二行,我打算输出char数组,使其打印与第一行相同。 我希望将内存地址作为字符串,以便我可以使用它来操作,但我究竟如何将内存地址作为字符串?
答案 0 :(得分:2)
请改为尝试:
sprintf(addr, "%p", &c);
printf("%s\n", addr);
答案 1 :(得分:0)
使用sprintf(addr, "%p", &c);
答案 2 :(得分:0)
sprintf
函数用于“打印”到字符串。而不是
strcpy(addr, &c);
printf("%p\n", &c);
printf("%s", addr);
printf("\n");
试
sprintf( addr, "%p", (void *)&c );
printf( "%p\n", (void *)&c );
printf( "%s\n", addr );