标准I/O读写文件
一、函数原型
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读写文件的更多相关文章
- Go标准库之读写文件(File)
Go标准库之读写文件(File) 创建一个空文件 package main import ( "log" "os" ) func main() { file, ...
- 你好,C++(5)如何输出数据到屏幕、从屏幕输入数据与读写文件?
2.2 基本输入/输出流 听过HelloWorld.exe的自我介绍之后,大家已经知道了一个C++程序的任务就是描述数据和处理数据.这两大任务的对象都是数据,可现在的问题是,数据不可能无中生有地产生 ...
- 【转】 Linux内核中读写文件数据的方法--不错
原文网址:http://blog.csdn.net/tommy_wxie/article/details/8193954 Linux内核中读写文件数据的方法 有时候需要在Linuxkernel--大 ...
- Android 读写文件
Android 读写文件 Android使用一个非常类似与其他平台上的基于磁盘的文件系统. 这节课讲述如何利用File APIs在Android文件系统中读写文件. File 对象非常适合于流式顺序数 ...
- java.io几种读写文件的方式
一.Java把这些不同来源和目标的数据都统一抽象为数据流. Java语言的输入输出功能是十分强大而灵活的. 在Java类库中,IO部分的内容是很庞大的,因为它涉及的领域很广泛:标准输入输出,文件的操作 ...
- Java IO如何读写文件
Java把这些不同来源和目标的数据都统一抽象为数据流:Java语言的输入输出功能是十分强大而灵活的:在Java类库中,IO部分的内容是很庞大的,因为它涉及的领域很广泛:标准输入输出,文件的操作,网络上 ...
- LINUX读写文件
body, table{font-family: 微软雅黑; font-size: 10pt} table{border-collapse: collapse; border: solid gray; ...
- 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 ...
- java几种读写文件的方式
java.io的几种读写文件的方式 一.java把这些不同来源和目标的数据都统一抽象为数据流. Java语言的输入输出功能是十分强大而灵活的. 在Java类库中,IO部分的内容是很庞大的,因为它涉及的 ...
随机推荐
- python中sorted和.sorted 、reversed和reverse的注意点
L=[1,2,3,4]l1=[123,123,23]if l1.sort() == L.reverse(): #这个判断式是恒等的,因为两个函数的返回值都是None(其实是无返回值) pri ...
- 【数据库】SQL语句
SQL 分为两个部分:数据操作语言(DML)和 数据定义语言(DDL).增删改查(CRUD)构成了 SQL 的 DML 部分. SELECT - 从数据库表中获取数据 SELECT 列名 FROM 表 ...
- [LightOJ 1287] Where to Run
Where to Run Last night you robbed a bank but couldn't escape and when you just got outside today, t ...
- pyqt实现滑动开关
https://www.cnblogs.com/feiyangqingyun/p/6035633.html 根据Qt的实现,在PyQt上面实现了滑动开关的控件 import sys from PyQt ...
- shiro学习笔记-Subject#login(token)源码实现过程
追踪Subject的login(AuthenticationToken token)方法,其调用的为DelegatingSubject类的login方法,DelegatingSubject实现了Sub ...
- ubuntu 挂载虚拟机vdi文件
sudo apt-get install nbd-server nbd-client qemu-kvm # rmmod nbd # modprobe nbd max_part=8 # qemu- ...
- php 处理ftp常用操作与方法
原文地址:https://www.cnblogs.com/longfeiPHP/p/5420632.html $ftp_conn = ftp_connect("192.168.1.230&q ...
- UVa 11825 - Hackers' Crackdown DP, 枚举子集substa = (substa - 1)&sta 难度: 2
题目 https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&a ...
- 我眼中的Linux系统和红帽RHCE认证
牛顿曾经说过“我不知道在别人看来,我是什么样的人:但在我自己看来,我不过就象是一个在海滨玩耍的小孩,为不时发现比寻常更为光滑的一块卵石或比寻常更为美丽的一片贝壳而沾沾自喜,而对于展现在我面前的浩瀚的真 ...
- 首席科学家马丁•福勒(Martin Fowler)
现任思特沃克公司首席科学家的马丁·福勒先生是当今世界软件开发领域最具影响力的五位大师之一.作为一位敏捷软件开发方法的早期开拓者,福勒先生对IT 业的影响是不可估量的. 思特沃克公司是一家跨国专业IT ...