在c中获取地址作为字符串?

时间:2016-02-17 04:16:13

标签: c

说我有以下内容:

#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数组,使其打印与第一行相同。 我希望将内存地址作为字符串,以便我可以使用它来操作,但我究竟如何将内存地址作为字符串?

3 个答案:

答案 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 );