标准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部分的内容是很庞大的,因为它涉及的 ...
随机推荐
- Echarts 简单报表系列一:柱状图
见代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF- ...
- Connection parameters are correct , SSL not enabled
这个仅仅是个消息提示,告诉你SSL not enabled.无须理会,直接点击ok
- 一、集合框架(Collection和Collections的区别)
一.Collection和Map 是一个接口 Collection是Set,List,Queue,Deque的接口 Set:无序集合,List:链表,Queue:先进先出队列,Deque:双向链表 C ...
- python 解析与生成xml
xml.etree.ElementTree模块为xml文件的提取和建立提供了简单有效的API.下文中使用ET来代表xml.etree.ElementTree模块. XML是一种内在的分层的数据形式,展 ...
- dynamic load jar and init spring
public class SpringLoader { private Map<String, Class<?>> classMap = new HashMap<> ...
- C# 中web如何定时同步数据
之前做定时器同步方法试过很多方法, 不过都有些问题 1)quartz + IIS 方式(web项目发布到IIS上,出现IIS应用池回收问题) 2)用线程Timer方式 (出现多个线程同步同个任务问题) ...
- POJ 1006 生理周期(中国剩余定理)
POJ 1006 生理周期 分析:中国剩余定理(注意结果要大于d即可) 代码: #include<iostream> #include<cstdio> using namesp ...
- 比较不错的几款开源的WPF Charts报表控件
UWP Community Toolkit 1. ModernUIChart Code: http://modernuicharts.codeplex.com/ Available Charts Co ...
- Unity中物体碰撞后去掉相互之间的反弹力
最近自制了一个的角色控制器(没有重力的角色)时发现,角色碰撞到墙壁之后会有一个小小的反弹力导致角色有一个微弱的反弹位移,这样给人一种不好的感觉.研究了一下,除了限制坐标轴( Rigidbody---C ...
- bzoj2946
题解: 和poj1226差不多 把翻转去掉 然后不要忘记开大数组和二分的上限答案 代码: #include<bits/stdc++.h> using namespace std; type ...