我有一个文本文件,其中包含程序某些组件的内存地址。例如,该文本文件的一部分如下所示:
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/