我在txt文件中有内存位置地址。我想从文件中读取地址并使用存储在该地址的值。这就是我所做的:
char line[10];
FILE *f;
f=fopen("p:\\address.txt", "r");
fgets(line,10,f);
该文件包含地址0x12ff30。我已将其存储在char数组行中。地址包含一个double值(来自0x12ff30的8个字节)。现在如何创建和使用指针来获取存储在该地址的值?
谢谢。
答案 0 :(得分:5)
请不要这样做。请使用IPC,即进程间通信。
如果您在几乎任何现代计算机系统上有两个进程,它们将拥有自己的虚拟地址空间。一个过程中的指针在其他过程中没有意义。
我建议你需要考虑使用某种IPC方法,如共享内存或消息队列,请参阅http://en.wikipedia.org/wiki/Inter-process_communication了解一些链接。有很多种方法可供选择。您应该使用它来移动double值,而不是指向它的指针。如果两个程序都需要并发访问那个双,那么你需要考虑如何同步它。
请不要使用IPC的文件系统。这真是一个糟糕的主意。
答案 1 :(得分:0)
我们假设该地址中有int
值。另外,让我们假设地址是可访问的[当您在另一次地址可能无效时读取文件]并且它不会崩溃。
然后,
void *p;
sscanf(line, "%p", &p);
double value = *(double *)p;
//use value for other operations.
答案 2 :(得分:0)
你的意思是你想将带有十六进制值的字符串转换为一个int吗? 我有这个例子
#include"stdio.h"
#include"stdlib.h"
int main()
{
char buff[] = "0x12ff30";
int num = strtol(buff,NULL,16);
printf("%x\n", num); // this is 12ff30
return 0;
}
所以,你可以试试这个。
char line[10];
FILE *f;
f=fopen("p:\\address.txt", "r");
fgets(line,10,f);
int address = strtol(line,NULL,16);