我正在尝试创建一个程序,该程序获取一个表示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的新手
答案 0 :(得分:-1)
使用sscanf
将字符串转换为unsigned long long
,然后将其转换为char *
,然后从该地址打印字节。