c语言 怎么读内存数据 50

已知内存地址0x08116314怎么读出数据并存入变量我老是读出来的数据和实际的不一... 已知内存地址0x08116314 怎么读出数据并存入变量 我老是读出来的数据和实际的不一 展开
 我来答
爱教育爱学习
高粉答主

2019-10-29 · 学而不思则罔,思而不学则殆
爱教育爱学习
采纳数:384 获赞数:112729

向TA提问 私信TA
展开全部

分配内存空间然后读取

#include<stdio.h>

#include<stdlib.h>

intfilelength(FILE*fp);

char*readfile(char*path);

intmain(void)

{

FILE*fp;

char*string;

string=readfile("c:/c.c");

printf("读入完毕\n按任意键释放内存资源\n");

//printf("%s\n",string);

system("pause");

return0;

}

char*readfile(char*path)

{

FILE*fp;

intlength;

char*ch;

if((fp=fopen(path,"r"))==NULL)

{

printf("openfile%serror.\n",path);

exit(0);

}

length=filelength(fp);

ch=(char*)malloc(length);

fread(ch,length,1,fp);

*(ch+length-1)='\0';

returnch;

}

intfilelength(FILE*fp)

{

intnum;

fseek(fp,0,SEEK_END);

num=ftell(fp);

fseek(fp,0,SEEK_SET);

returnnum;

}

扩展资料

cLinux进程间通信共享内存

#include"comm.h"

staticintcommShm(intsize,intflags)//创建共享内存

{

key_tkey=ftok(PATHNAME,PROJ_ID);

if(key<0){

perror("ftok");

return-1;

}

intshmid=shmget(key,size,flags);

if(shmid<0){

perror("shmget");

return-2;

}

returnshmid;

}

intcreateShm(intsize)

{

returncommShm(size,IPC_CREAT|IPC_EXCL);

}

intgetShm(intsize)//获取共享内存

{

returncommShm(size,IPC_CREAT);

}

intdestoryShm(intshmid)//销毁共享内存

{

if(shmctl(shmid,IPC_RMID,NULL)<0){

perror("shmctl");

return-3;

}

}

百度网友6fa3859
推荐于2018-03-01 · TA获得超过3349个赞
知道小有建树答主
回答量:1148
采纳率:85%
帮助的人:421万
展开全部

  C语言访问内存可借助指针实现。方法:

  1、声明一种特定类型的指针,根据以何种方式访问内存来确定。比如从内存中读取整形数据,则声明为int *类型。

  2、用内存地址为指针赋值,注意进行类型转换。

  3、对指针进行取值,得到数据。

  例子:

int *a;

a = (int *)0x34587;
printf("%d", *a);

  注意,要确定访问地址的合法性。

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
xoaxa
2013-03-19 · TA获得超过8608个赞
知道大有可为答主
回答量:6415
采纳率:72%
帮助的人:3444万
展开全部
0x08116314只是一个地址指针,读取时,数据的类型必须确定。
假定存储的是int类型,那么读取时,必须强制类型转换,即
int *p = 0x08116314;
那么 *p 就是数据了。
假定是字符串,那么则有
char *p = 0x08116314;
char str[20]; // 假定串长在20之内,则有
strcpy(str,p);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
angelzxl1992
2013-03-19 · TA获得超过269个赞
知道小有建树答主
回答量:145
采纳率:0%
帮助的人:101万
展开全部
  我不知道LZ目前有没有学到指针,用指针很好解释的。
&就是取地址,而*(指针运算符)相对的就是取其指向的内容。
  声明一个指针变量,将地址赋给这个变量,再类型转换成读取的数据类型就行了。
type *p=0x08116314 ;
LZ看到这个语句应该能明白了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
xiaoyaodamao
2013-03-19 · TA获得超过131个赞
知道小有建树答主
回答量:164
采纳率:0%
帮助的人:181万
展开全部
宏定义时 #define a (*(volatile unsigned *)0x08116314) 则你在用的时候假如要把内存地址0x08116314中的数值读取给变量b,则直接用:b=a;就可以读出了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(8)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式