c语言 怎么读内存数据

Python017

c语言 怎么读内存数据,第1张

分配内存空间然后读取

#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

}

}

你好,代码如下:

char *readfile(char *path)

{

FILE *fp

int length

char *ch

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

{

printf("open file %s error.\n",path)

exit(0)

}

length=filelength(fp)

ch=(char *)malloc(length)

fread(ch,length,1,fp)

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

return ch

}

int filelength(FILE *fp)

{

int num

fseek(fp,0,SEEK_END)

num=ftell(fp)

fseek(fp,0,SEEK_SET)

return num

}

希望可以帮到你。

1.文件的大小。

文件大小:该文件所占的存储空间的大小,基本单位为字节B,字节向上分别为KB、MB、GB、TB,每级为前一级的1024倍,比如1KB=1024B,1M=1024KB。

2.是否可以不预先分配内存。

可以不预先分配跟文件大小一致的内存,但是从文件中读出的每一行都要分配一个内存,可以为每一行设定一个固定的内存大小,比如A字节,然后用C语言的malloc函数为该行数据分配内存,读出数据后,判断分配的内存是否够用,如果不够用,可以用C语言的realloc函数对该块内存进行再分配。

malloc函数

malloc的全称是memory

allocation,中文叫动态内存分配,用于申请一块连续的指定大小的内存块区域以void*类型返回分配的内存区域地址,当无法知道内存具体位置的时候,想要绑定真正的内存空间,就需要用到动态的分配内存。

void*

类型表示未确定类型的指针。C,C++规定,void*

类型可以通过类型转换强制转换为任何其它类型的指针。

realloc函数

realloc的全程是reset

allocation,中文名叫动态内存调整,用于调整一块连续的已分配的内存块区域。

3.数组和struct结构体的建立。

double数组:double

a[100]

字符数组:char

a[100]

struct结构体:

struct st {

double

a[100]

char

b[100]

}