【问题标题】:getting the address as a char string in c?在c中将地址作为char字符串获取?
【发布时间】:2016-02-17 12:25:45
【问题描述】:

说我有以下几点:

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

【问题讨论】:

  • printf("%p", addr); 你用%p 打印指针...

标签: c


【解决方案1】:

试试这个:

sprintf(addr, "%p", &c);
printf("%s\n", addr);

【讨论】:

    【解决方案2】:

    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 *)?
    • 根据 C 规范,%p 的参数必须是 void *。所以其他类型的指针需要转换为void *。在大多数系统上,它没有任何区别,但有些奇怪的计算机系统确实很重要。
    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 2021-11-30
      • 2023-04-11
      • 1970-01-01
      • 2022-07-25
      • 2016-11-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-30
      相关资源
      最近更新 更多