c_cpp ç一次将整个文件读入内存的.c
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c_cpp ç一次将整个文件读入内存的.c相关的知识,希望对你有一定的参考价值。
#include <stdio.h>
#include <stdlib.h>
//调用后记得释放掉返回值指向的内存
char * read_to_memcry(char * filename )
{
FILE * pFile = NULL;
long lSize = 0;
char * buffer = NULL;
long result = 0;
/* 若要一个byte不漏地读入整个文件,只能采用二进制方式打开 */
pFile = fopen(filename, "rb" );
if (pFile==NULL)
{
printf("Open file:%s error!\n",filename);
// return -1;
return NULL;
}
/* 获取文件大小 */
fseek(pFile , 0 , SEEK_END);
lSize = ftell(pFile);
rewind(pFile);//将文件内部的位置指针重新指向一个流(数据流/文件)的开头
/* 分配内存存储整个文件 */
buffer = (char *)malloc(sizeof(char)*lSize);
if(buffer == NULL)
{
fputs("Memory error",stderr);
// return -2;
return NULL;
}
int read_length = 0;
/* 将文件拷贝到buffer中 */
do
{
result = fread(buffer + read_length,1,lSize,pFile);
if(result < 0)
{
printf("Read file:%s error!", filename);
// return -3;
return NULL;
}
read_length += result;
}while(result);
if(read_length != lSize)
{
fputs("Reading error",stderr);
// return -3;
return NULL;
}
/* 现在整个文件已经在buffer中,可由标准输出打印内容 */
printf("%s", buffer);
/* 结束演示,关闭文件并释放内存 */
fclose(pFile);
// free(buffer);
// return 0;
return NULL;
}
以上是关于c_cpp ç一次将整个文件读入内存的.c的主要内容,如果未能解决你的问题,请参考以下文章
在 python openCV 中一次将许多图像读入内存
AVAudioPlayer 是从磁盘流式传输文件,还是一次将其全部加载到内存中?
c_cpp C ++:将整个文件读入字符串。
每日灵魂一问-对Node 中的 Stream 的理解?应用场景?
如何在 Julia 中逐行读取文件?
如何在 C++ 中将整个文件读入 std::string?