如何在C语言中将地址作为一个char字符串获取?

3

假设我有以下内容:

#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

对于输出的第二行,我打算输出字符数组,使其与第一行相同。 我希望将内存地址作为字符串输出,以便可以操作它,但我该如何将内存地址获取为字符字符串?


你可以使用 %p 来打印指针,例如 printf("%p", addr); - David C. Rankin
3个回答

2
尝试使用以下方法:
sprintf(addr, "%p", &c);
printf("%s\n", addr);

1

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

为什么要使用(void *)? - please rekt me
根据C规范,%p的参数必须是void *类型。因此,其他类型的指针需要转换为void *类型。在大多数系统上,这没有任何区别,但有一些奇怪的计算机系统会有所不同。 - user3386109

0
使用 `sprintf(addr, "%p", &c);`

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接