将字符串格式的内存地址转换为C中的指针

标签 c arrays pointers char

我有一个文本文件,其中包含程序某些组件的内存地址。例如,该文本文件的一部分如下所示:

00400000-0040b000

7f9ae612f000-7f9ae62ee000

我已经将该文件读入我的程序并分配了一个带有首地址 (00400000) 的 char[]。

我还有一个带有空指针的结构

struct myStruct
{
    void *address;
}

我希望指针*address的值为0x00400000,我该怎么做?

感谢您的帮助。

最佳答案

使用 sscanf() 将字符串解析为十六进制整数,然后将结果整数类型转换为 void* 指针。例如:

char str[] = "00400000";
unsigned long ul;
struct myStruct s;

sscanf(str, "%lx", &ul);
s.address = (void*) (uintptr_t) ul;

关于将字符串格式的内存地址转换为C中的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41528695/

相关文章:

使用指针复制 C 中的字符串

c++ - 通过指针进行最快可移植访问的 c/c++ 数据类型?

c++ - 在 Linux 中发送空的 Socket 缓冲区?

php - 将 JSON 数组从 android 发送到 Php

java - 字符数组如何工作?

c++ - 如何在不知道其父节点的情况下旋转子树

C++:创建指针的拷贝

c - 如何解释 (a==ca)++a;a+=(a)?3.55/2 +'d' -'a' :13. 9;在C中

c++ - 初始化二维动态数组 C++ 时读取访问冲突

c - 在 C 中存储整数和通用指针的最便携方法是什么?