一、函数原型

  1、FILE *fopen(const char *path, const char *mode);

    path:要打开文件路径及文件名;

    mode:  r 打开只读文件,该文件必须存在。

        r+ 打开可读写的文件,该文件必须存在。

        rb+ 读写打开一个二进制文件,只允许读写数据。

        rt+ 读写打开一个文本文件,允许读和写。

        w 打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件。

        w+ 打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。

        a 以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。(EOF符保留)

        a+ 以附加方式打开可读写的文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾后,即文件原先的内容会被保留。 (原来的EOF符不保留)

        wb 只写打开或新建一个二进制文件;只允许写数据。

        wb+ 读写打开或建立一个二进制文件,允许读和写。

        wt+ 读写打开或着建立一个文本文件;允许读写。

        at+ 读写打开一个文本文件,允许读或在文本末追加数据。

        ab+ 读写打开一个二进制文件,允许读或在文件末追加数据。

  2、int fclose(FILE *fp);

    *fp: 为使用fopen打开文件的返回指针;

  3、size_t fread(void *ptr, size_t size, size_t nmemb, FILE *stream);

    *ptr:指向文件内容读取到buffer中的地址

    size:每次读取的文件大小

    nmemb:读取的次数

    stream:fopen打开文件的指针

  4、size_t fwrite(const void *ptr, size_t size, size_t nmemb,FILE *stream);

     *ptr:与fread指向同一个地址

    size:每次读取的文件大小

    nmemb:读取的次数

    stream: 写入文件fopen返回的指针

将yuv数据分解成单张图片

  

#include <stdio.h>
#include <stdlib.h> int num=;
char fileName[]={};
void getFileName()
{
sprintf(fileName,"%s%d%s","./image_move/",num,".yuv");
num += ;
} int main()
{
FILE *fp_src,*fp_dst;
long frameSize= ;
char srcBuf[]={};
fp_dst=fopen("./final.yuv","ab");
if(fp_dst == NULL)
{
printf("open dst file failed\n");
exit();
}
while(){
if(num > )
break;
getFileName();
fp_src=fopen(fileName,"r");
if(fp_src == NULL)
{
fclose(fp_dst);
printf("open src file failed\n");
exit();
}
fread(srcBuf,sizeof(char),frameSize,fp_src);
fwrite(srcBuf,sizeof(char),frameSize,fp_dst);
fclose(fp_src);
}
fclose(fp_dst);
return ;
}
原始文件下载地址:https://i.cnblogs.com/Files.aspx
         linux环境使用tar xvf image_move.tar.gz解压

也可以使用shell 脚本进行文件拼接

#! /bin/sh
FILENAME= catFile(){
while [ -eq ]
do
if [ "$FILENAME" -le ]; then
echo "$FILENAME"
FILENAME=`expr $FILENAME + `
cat "$FILENAME".yuv >> .yuv
else
break
fi
done
}
catFile

标准I/O读写文件的更多相关文章

  1. Go标准库之读写文件(File)

    Go标准库之读写文件(File) 创建一个空文件 package main import ( "log" "os" ) func main() { file, ...

  2. 你好,C++(5)如何输出数据到屏幕、从屏幕输入数据与读写文件?

    2.2  基本输入/输出流 听过HelloWorld.exe的自我介绍之后,大家已经知道了一个C++程序的任务就是描述数据和处理数据.这两大任务的对象都是数据,可现在的问题是,数据不可能无中生有地产生 ...

  3. 【转】 Linux内核中读写文件数据的方法--不错

    原文网址:http://blog.csdn.net/tommy_wxie/article/details/8193954 Linux内核中读写文件数据的方法  有时候需要在Linuxkernel--大 ...

  4. Android 读写文件

    Android 读写文件 Android使用一个非常类似与其他平台上的基于磁盘的文件系统. 这节课讲述如何利用File APIs在Android文件系统中读写文件. File 对象非常适合于流式顺序数 ...

  5. java.io几种读写文件的方式

    一.Java把这些不同来源和目标的数据都统一抽象为数据流. Java语言的输入输出功能是十分强大而灵活的. 在Java类库中,IO部分的内容是很庞大的,因为它涉及的领域很广泛:标准输入输出,文件的操作 ...

  6. Java IO如何读写文件

    Java把这些不同来源和目标的数据都统一抽象为数据流:Java语言的输入输出功能是十分强大而灵活的:在Java类库中,IO部分的内容是很庞大的,因为它涉及的领域很广泛:标准输入输出,文件的操作,网络上 ...

  7. LINUX读写文件

    body, table{font-family: 微软雅黑; font-size: 10pt} table{border-collapse: collapse; border: solid gray; ...

  8. VC++读写文件

    目录 第1章读写文件    1 1.1 API    1 1.2 低级IO    1 1.2.1 文件序号    1 1.2.2 文本文件与二进制文件    1 1.3 流IO    2 1.4 Un ...

  9. java几种读写文件的方式

    java.io的几种读写文件的方式 一.java把这些不同来源和目标的数据都统一抽象为数据流. Java语言的输入输出功能是十分强大而灵活的. 在Java类库中,IO部分的内容是很庞大的,因为它涉及的 ...

随机推荐

  1. JQ 实现监测input中值的变化并绑定到另个input

                    $('#input').bind('input propertychange', function () {                     $('#myDiv ...

  2. Leetcode 150

    class Solution { public: int evalRPN(vector<string>& tokens) { stack<int> st; ;i < ...

  3. git拉取远程分支并创建本地分支

    本地分支推送至远程 git checkout local_branch git push origin local_branch:remote_branch 一.查看远程分支 使用如下Git命令查看所 ...

  4. C# 3.0 / C# 3.5 隐式(推断)类型 var

    概述 你可能对隐式类型(或隐式推断类型)这个名称比较陌生,但是 var 这个关键字应该很熟悉. 在 C# 中使用 var 声明一个对象时编译器会自动根据赋值语句推断这个局部变量的类型. 赋值以后,这个 ...

  5. mysql 5.7版本的下载安装

    因为这次开发新的项目,需要用到mysql,因为之前用的都是oracle,所以学习下mysql的下载安装,在此留下一点记录,方便以后的回顾 一:mysql的下载地址:https://dev.mysql. ...

  6. [CodeForces - 197B] B - Limit

    B - Limit You are given two polynomials: P(x) = a0·xn + a1·xn - 1 + ... + an - 1·x + an and Q(x) = b ...

  7. python操作文件(增、删、改、查)

    内容 global log 127.0.0.1 local2 daemon maxconn 256 log 127.0.0.1 local2 info defaults log global mode ...

  8. Vue 使用 vuelidate 实现表单验证

    表单验证的应用场景十分广泛,因为网站对用户输入内容的限制是非常必要的. 在vue中,我们使用vuelidate方便地实现表单验证. 官方文档在这里https://monterail.github.io ...

  9. ActiveMQ broker和客户端之间的确认

    生产者发送消息:producer ---------> broker broker返回确认:broker ---------> producer 生产者发送同步消息,broker会返回Re ...

  10. 如何定位jdk中的native方法源码?

    前提条件:已下载openjdk的源码. 以System类的arraycopy为例: 1. 根据关键字定位文件:grep -rn '"arraycopy"' ./openjdk关键字 ...