C 指向存储的特定内存地址的指针

C 指向存储的特定内存地址的指针,c,pointers,memory-address,C,Pointers,Memory Address,我有一个txt文件中的内存位置地址。我想从文件中读取地址并使用存储在该地址的值。以下是我所做的: char line[10]; FILE *f; f=fopen("p:\\address.txt", "r"); fgets(line,10,f); 该文件包含地址0x12ff30。我已将其存储在char数组行中。该地址包含一个双精度值(0x12ff30中的8个字节)。现在,我如何创建并使用指针来获取存储在该地址的值 谢谢。让我们假设该地址中有int值。另外,我们假设该地址是可访问的[当您再次读取

我有一个txt文件中的内存位置地址。我想从文件中读取地址并使用存储在该地址的值。以下是我所做的:

char line[10];
FILE *f;
f=fopen("p:\\address.txt", "r");
fgets(line,10,f);
该文件包含地址0x12ff30。我已将其存储在char数组行中。该地址包含一个双精度值(0x12ff30中的8个字节)。现在,我如何创建并使用指针来获取存储在该地址的值


谢谢。

让我们假设该地址中有
int
值。另外,我们假设该地址是可访问的[当您再次读取该文件时,该地址可能无效],并且不会崩溃。
那么


让我们假设该地址中有
int
值。另外,我们假设该地址是可访问的[当您再次读取该文件时,该地址可能无效],并且不会崩溃。
那么


请不要这样做。请使用IPC,即进程间通信

如果在几乎任何现代计算机系统上都有两个进程,它们将有自己的虚拟地址空间。一个进程中的指针在另一个进程中没有意义

我建议您需要研究使用IPC的一些方法,例如共享内存或消息队列,请参阅以获取一些链接。有许多方法可用。您应该使用它来移动双精度值,而不是指向它的指针。如果两个程序都需要同时访问该双线程,那么您需要考虑如何同步它


请不要将文件系统用于IPC。这真是个糟糕的主意。

请不要这样做。请使用IPC,即进程间通信

如果在几乎任何现代计算机系统上都有两个进程,它们将有自己的虚拟地址空间。一个进程中的指针在另一个进程中没有意义

我建议您需要研究使用IPC的一些方法,例如共享内存或消息队列,请参阅以获取一些链接。有许多方法可用。您应该使用它来移动双精度值,而不是指向它的指针。如果两个程序都需要同时访问该双线程,那么您需要考虑如何同步它


请不要将文件系统用于IPC。这真是个糟糕的主意。

你的意思是想把十六进制值的字符串转换成整数吗?? 我有这个例子

#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);

您的意思是要将具有十六进制值的字符串转换为整数吗?? 我有这个例子

#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);


你确定这就是你想做的吗?一般来说,您无法访问任意内存位置并获得有意义的行为。@OliCharlesworth嘿!实际上,我正在运行另一个软件,它将数据实时写入这个内存位置。所以我很确定我想访问这个位置并得到那个值:)你真的不想这样做。如果你的程序共享内存空间,那么有更好的方法来获取指针,比如说,全局变量?至少你需要研究一下IPC,比如共享内存。请不要将文件系统用作进程间通信的方法@user2438252:嗯。在大多数系统上,两个独立的程序将有完全不同的地址空间,因为。所以一个程序中的地址在另一个程序中毫无意义。@OliCharlesworth完全,完全。大约3个星期前,我记得有人想把指针重定向到C++中的IOFFROW中。我们进行了同样的谈话。指针一旦离开程序就毫无意义了!你确定这就是你想做的吗?一般来说,您无法访问任意内存位置并获得有意义的行为。@OliCharlesworth嘿!实际上,我正在运行另一个软件,它将数据实时写入这个内存位置。所以我很确定我想访问这个位置并得到那个值:)你真的不想这样做。如果你的程序共享内存空间,那么有更好的方法来获取指针,比如说,全局变量?至少你需要研究一下IPC,比如共享内存。请不要将文件系统用作进程间通信的方法@user2438252:嗯。在大多数系统上,两个独立的程序将有完全不同的地址空间,因为。所以一个程序中的地址在另一个程序中毫无意义。@OliCharlesworth完全,完全。大约3个星期前,我记得有人想把指针重定向到C++中的IOFFROW中。我们进行了同样的谈话。指针一旦离开程序就毫无意义了!您正在扫描到一个
双精度
?我不会立即给您一个-1,但您的答案有以下问题:
%x
格式说明符需要一个
无符号int
参数,而不是
无符号long
%p
说明符(和
void*
)更合适。您也没有正确地取消对指针的引用,而是将
value
设置为包含指向
p
@Hasturkun的指针。您可以编辑我的答案或给出自己的答案,如果可以的话。@Hasturkun则可以是
value=(int)*k
直接完成。我倾向于评论,而不是编辑,当一篇文章是新鲜的,可以由它的所有者改进,或当我认为一些事情应该澄清。这也有助于我避免编辑战争:p您正在扫描一个
双精度
?我不会立即给您一个-1,但您的答案有以下问题:
%x
格式说明符需要一个
无符号int
参数,而不是
无符号long
%p
说明符(和
void*
)更合适。您也没有正确地取消对指针的引用,而是将
value
设置为包含指向
p
@Hasturkun的指针。您可以编辑我的答案或给出y