从输入中获取内存地址。 C

时间:2015-11-29 12:51:26

标签: c string memory input memory-address

我正在尝试创建一个程序,该程序获取一个表示48位地址的字符串,例如" 0x7f1241249000"并访问该给定虚拟地址的内容。输入的地址应该是合法的,因为它是从内存上映射文件的结果中获得的。 因此,我知道这样的文件分配在哪里。

我想要实现的目标是在屏幕上逐字节打印映射文件的内容,但我无法将字符串转换为相应的内存地址。

EDIT 好了,我现在可以将字符串视为指向给定地址的指针。但是现在当我尝试访问映射文件的内容时,我得到了分段错误。 我在代码中做的是:     char * address =(char *)strtoull(input,NULL,16);     int i;     for(i = 0; i< 10; i ++){       printf("%c \ n",address [i]);     }

使用gdb并显示地址输出正确的地址以及映射文件的内容,但printf崩溃。 对不起,如果这是一个愚蠢的问题,我是C的新手

1 个答案:

答案 0 :(得分:-1)

使用sscanf将字符串转换为unsigned long long,然后将其转换为char *,然后从该地址打印字节。