C语言 读取文件到内存

关于读取文件到内存,我有几个地方不太明白,希望大家能帮我一下。文件的大小是指文件的行数么?如果是的话,怎么得到文件的行数?如果不是的话,那文件大小是指什么?在不知道文件大... 关于读取文件到内存,我有几个地方不太明白,希望大家能帮我一下。
文件的大小是指文件的行数么?如果是的话,怎么得到文件的行数?如果不是的话,那文件大小是指什么?
在不知道文件大小的时候,一般来说都是先得到文件大小,然后分配内存,能不能边读取边放到内存,就是说,在文件中读取一行,就把这一行放到内存中去,这样就不用先得到文件大小了
文件中有数字三列,第一列和第二列都是double类型的数字,第三列是单词,那我读取到内存中之后,是建三个数组好呢,还是建一个struct好呢,我比较倾向于数组→_→因为struct不太会用。。。麻烦说下数组和struct怎么建立
展开
 我来答
EastQiaoyy
2018-04-11 · TA获得超过7924个赞
知道小有建树答主
回答量:42
采纳率:100%
帮助的人:3万
展开全部

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];

};



秀气的张爷爷
推荐于2018-02-28 · 知道合伙人数码行家
秀气的张爷爷
知道合伙人数码行家
采纳数:16759 获赞数:62517
毕业于河南科技大学,学士学位。 现从事银行信息科技工作。

向TA提问 私信TA
展开全部
用C语言实现将一个文件读入内存中
/**
* 用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;
}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
觉得还可行e7
推荐于2017-11-27 · TA获得超过223个赞
知道答主
回答量:138
采纳率:0%
帮助的人:121万
展开全部
任何文件都可以读取,最多就是打开和读取方式不一样。\r\n普通的文本文件就直接按照默认方式打开。\r\n如果是其他基于流的文件就按照二进制方式打开。\r\n读取到内存中之后随便你怎么处理读取出来的数据~
追问
谢谢回复,但是我不太明白你在说什么。。。能详细一点么,希望能给代码
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式