文章目录
前言
在嵌入式系统上,经常会涉及到对文件进行读写的操作,本文主要介绍在Linux系统上常见的两种读写文件的方式,使用C语言库函数和系统调用。
一、使用C语言库函数的方式
1. 主要的相关函数接口
- fopen()
打开文件, 第二个参数决定打开文件的mode, 具体的模式可以在Ubuntu上使用man 3 fopen命令查看细节 - fread()
读文件里的内容,具体函数介绍可以在Ubuntu上使用man 3 fread命令查看 - fwrite()
往文件里写数据,具体函数介绍可以在Ubuntu上使用man 3 fwrite命令查看 - fseek()
可以移动文件头指针,具体函数介绍可以在Ubuntu上使用man 3 fseek命令查看 - ftell()
计算文件大小,一般和fseek()组合使用,具体函数介绍可以在Ubuntu上使用man 3 ftell命令查看 - fclose()
关闭文件,具体函数介绍可以在Ubuntu上使用man 3 fclose命令查看
2. 代码实例
以下代码实现的功能是从一张NV12格式的图片文件中读取它的Y分量数据存放到另一个文件中
#include <stdio.h>
#include <stdlib.h>
//src file src.yuv 1280*720*3/2 NV12
//dst file dst.y 1280*720 GREY
#define SRC_FILE "./src.yuv"
#define DST_FILE "./dst.y"
int main()
{
int ret;
FILE *src_fd;
FILE *dst_fd;
//--------------------------------------------------------src file
//fopen src file
src_fd = fopen(SRC_FILE, "r"); //O_RDONLY mode
if (!src_fd) {
printf("fopen %s failed\n", SRC_FILE);
return -1;
}
//get src file size
if (fseek(src_fd, 0, SEEK_END) !=0) {
//将文件指针移动到文件末尾
printf("fseek END error\n");
return -1