c语言 怎么读内存数据 50
分配内存空间然后读取
#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;
}
}
C语言访问内存可借助指针实现。方法:
1、声明一种特定类型的指针,根据以何种方式访问内存来确定。比如从内存中读取整形数据,则声明为int *类型。
2、用内存地址为指针赋值,注意进行类型转换。
3、对指针进行取值,得到数据。
例子:
int *a;
a = (int *)0x34587;
printf("%d", *a);
注意,要确定访问地址的合法性。
假定存储的是int类型,那么读取时,必须强制类型转换,即
int *p = 0x08116314;
那么 *p 就是数据了。
假定是字符串,那么则有
char *p = 0x08116314;
char str[20]; // 假定串长在20之内,则有
strcpy(str,p);
&就是取地址,而*(指针运算符)相对的就是取其指向的内容。
声明一个指针变量,将地址赋给这个变量,再类型转换成读取的数据类型就行了。
type *p=0x08116314 ;
LZ看到这个语句应该能明白了