我从汇编程序到C得到一个字符串,我需要获取该地址的内容。 怎么做? Google使用reinterpret_cast给出C ++示例,但它不适用于C(我想)。 如果您还要注意所需的库,我将不胜感激,tenx
#include <stdio.h>
#include <stdlib.h>
unsigned long const1(void);
int main()
{
printf("Const: %d\n", const1());
return 0;
}
答案 0 :(得分:3)
如果您已经获得了地址,并且您知道它是一个以空字符结尾的字符串,那么您需要做的只是将其视为字符串。
printf("%s", (char*)alleged_string_address);
答案 1 :(得分:1)
等待您的信息时的初步答案:
char* foo = (char*)...pointer from assembly...;
*foo = 'a'; /* write a to the address pointed at by foo */
foo++; /* increment the address of foo by 1 */
*foo = 'b'; /* write b to that address. foo now contains ab, if it points at RAM. */
这个答案适用于嵌入式系统。如果需要指向类似外设寄存器的指针,请使用volatile来避免编译器优化。
volatile char* foo = (char*)...pointer from assembly...;
*foo = 'a'; /* write a to the address pointed at by foo */
foo++; /* increment the address of foo by 1 */
*foo = 'b'; /* write b to that address. foo now contains ab, if it points at RAM. */
答案 2 :(得分:0)
如果 知道 ,字符串后面会有一个零字节,请尝试以下操作:
char* p = (char*) <your address here>;
// use p for whatever here
如果字符串后面没有零,则C中的标准字符串函数将失败。