#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]
}