我在 txt 文件中有内存位置地址。我想从文件中读取地址并使用存储在该地址的值。这是我所做的:
char line[10];
FILE *f;
f=fopen("p:\\address.txt", "r");
fgets(line,10,f);
该文件包含地址 0x12ff30。我已将其存储在 char 数组行中。该地址包含一个双精度值(从 0x12ff30 开始的 8 个字节)。现在如何创建和使用指针来获取存储在该地址的值?
谢谢你。
我在 txt 文件中有内存位置地址。我想从文件中读取地址并使用存储在该地址的值。这是我所做的:
char line[10];
FILE *f;
f=fopen("p:\\address.txt", "r");
fgets(line,10,f);
该文件包含地址 0x12ff30。我已将其存储在 char 数组行中。该地址包含一个双精度值(从 0x12ff30 开始的 8 个字节)。现在如何创建和使用指针来获取存储在该地址的值?
谢谢你。
请不要这样做。请使用IPC,即进程间通信。
如果您在几乎任何现代计算机系统上都有两个进程,那么它们将拥有自己的虚拟地址空间。一个进程中的指针在其他进程中没有意义。
我建议您需要考虑使用 IPC 的某些方法,例如共享内存或消息队列,请参阅http://en.wikipedia.org/wiki/Inter-process_communication获取一些链接。有很多方法可用。您应该使用它来移动双精度值,而不是指向它的指针。如果两个程序都需要同时访问该双重,那么您需要考虑无论如何您将如何同步它。
请不要将文件系统用于 IPC。这真是一个可怕的想法。
让我们假设该地址中存在int
价值。另外让我们假设地址是可访问的[当您再次读取文件时,地址可能无效]并且它不会崩溃。
然后,
void *p;
sscanf(line, "%p", &p);
double value = *(double *)p;
//use value for other operations.
您的意思是要将具有十六进制值的字符串转换为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);