C语言中如何把一个文件读入内存?

我只会用fgetc()一个一个字符的读取文件,现在老师要求我一次把整个文件读入内存,在内存中再一个一个字符的读取,请问该如何做?... 我只会用fgetc()一个一个字符的读取文件,现在老师要求我一次把整个文件读入内存,在内存中再一个一个字符的读取,请问该如何做? 展开
 我来答
百度网友286522c
2016-01-06 · TA获得超过2251个赞
知道大有可为答主
回答量:1766
采纳率:84%
帮助的人:893万
展开全部
用C语言实现将一个文件读入内存方法:

#include <stdio.h>
#include <stdlib.h>
int filelength(FILE *fp);
char *readfile(char *path);
int main(void)
{
FILE *fp;
char *string;
string=readfile("c:/c.c");
printf("读入完毕\n按任意键释放内存资源\n");
//printf("%s\n",string);
system("pause");
return 0;

}
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;
}
lbdslzx
推荐于2017-09-15 · 超过15用户采纳过TA的回答
知道答主
回答量:73
采纳率:0%
帮助的人:55.6万
展开全部
先获得文件长度
int length;
ifstream fin(pFilename.c_str());
fin.seekg (0, ios::end);
length = fin.tellg();
fin.seekg (0, ios::beg);
再一次性申请内存
char *ch = new char[length];
读入文件
fin.read((char *)&ch ,sizeof(char)*length);
sorry刚才查了一下ifstream 是C++的
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友cd3232f
2009-07-26 · 超过32用户采纳过TA的回答
知道答主
回答量:138
采纳率:0%
帮助的人:87.1万
展开全部
fgetc()是一个一个的字符读取。fscanf()从指定的文件按格式输入数据。fprintf()按指定的格式将数据写道指定的文件。“%s”可以整个字符串进行
。fscanf(fp,"%s",& )
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
therandomworld
2009-07-26 · TA获得超过812个赞
知道小有建树答主
回答量:724
采纳率:0%
帮助的人:557万
展开全部
要知道文件的长度,然后分配文件长度大小的内存,最后用fread读取
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式