首页 > 代码库 > C一次将整个文件读入内存
C一次将整个文件读入内存
最近工作,有个需求需要将YUV的整个文件读入内存,然后处理这些YUV数据,一种比较有效的方法如下:
#include <stdio.h>#include <stdlib.h> int main (){ FILE * pFile; long lSize; char * buffer; size_t result; /* 若要一个byte不漏地读入整个文件,只能采用二进制方式打开 */ pFile = fopen ("test.txt", "rb" ); if (pFile==NULL) { fputs ("File error",stderr); exit (1); } /* 获取文件大小 */ fseek (pFile , 0 , SEEK_END); lSize = ftell (pFile); rewind (pFile); /* 分配内存存储整个文件 */ buffer = (char*) malloc (sizeof(char)*lSize); if (buffer == NULL) { fputs ("Memory error",stderr); exit (2); } /* 将文件拷贝到buffer中 */ result = fread (buffer,1,lSize,pFile); if (result != lSize) { fputs ("Reading error",stderr); exit (3); } /* 现在整个文件已经在buffer中,可由标准输出打印内容 */ printf("%s", buffer); /* 结束演示,关闭文件并释放内存 */ fclose (pFile); free (buffer); return 0;}
在用户态可以很方便的测试这个例子,可以写一个简单的程序,读入YUV422格式含有多帧的文件,然后操作这块内存,获取单独的Y分量数据和C分量数据,也可以按帧操作此文件。
C一次将整个文件读入内存
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。