2. 缓冲文件操作

//规模较大 实时性低的文件
//当数据长度快要超过缓冲区的范围时,或者时间周期达到时,数据才被送往指定位置
//需要使用FILE * 作为文件标识符
//stdin 标准输入
//stdout 标准输出
//stderr 标准错误
//2.1文件流的打开与关闭
#include <stdio.h>
FILE *fopen(const char * restrict path, const char * restrict mode);
int fclose(FILE *stream); //2.2 文件流的读取与写入
size_t fread(void *restrict ptr, size_t size, size_t nitems, FILE *restrict stream);
size_t fwrite(const void *restrict ptr, size_t size, size_t nitems, FILE *restrict stream);
int fflush(FILE *stream); //2.3文件流的格式化输入输出
int fscanf(FILE *restrict stream, const char *restrict format, ...);
int fprintf(FILE * restrict stream, const char * restrict format, ...);

2.1 fopen

FILE *fopen(const char * restrict path, const char * restrict mode);
//fopen 和 open 相似,但是fopen没有创建文件的功能,

/*fopen 常用的描述符有
r rb 只读方式打开
w wb 只写方式打开
a ab 只写打开追加文件末尾
r+ rb+ 读写方式打开
w+ wb+ 读写打开,长度置零
a+ ab+ 读写打开,追加文件末尾
*/

2.2 fread

size_t fread(void *restrict ptr, size_t size, size_t nitems, FILE *restrict stream);
//读取文件内容到缓冲区中
//fread(buff, 每次读取缓冲区的大小, 读取次数, 文件流)
//加入文件 102400 ,而每次读取1024,那么要读取100次。

2.3 fwrite

size_t fwrite(const void *restrict ptr, size_t size, size_t nitems, FILE *restrict stream);
//将缓冲区的内容写入到文件中
//fwrite 和 fread 相同参数,方向相反

2.4 fscanf 和 fprintf

//从文件中读取,并按一定合适读取内容,保存在buff中。
int fscanf(FILE *restrict stream, const char *restrict format, ...);
//把buff中的内容按一定格式保存到文件中
int fprintf(FILE * restrict stream, const char * restrict format, ...);

例子:实现一个文件的拷贝,先打开源文件,将源文件的内容读取到buf中,再打开目标文件,将buf写入到目标文件中,实现文件的拷贝

#include <stdio.h>
#include <string.h>
#include <unistd.h> #define BUFSIZE 65535
#define SIZE 1024 int main(int argc, char const *argv[])
{ FILE *fd;
int ret;
char buf[BUFSIZE] = {}; fd = fopen("./fread_fwrite.c","r"); //打开本文件fread_fwrite.c
if(fd == NULL)
{
puts("cant open file .");
return -;
} ret = fread(buf,SIZE,BUFSIZE/SIZE,fd); //每次读取SIZE大小,总共读取BUFFSIZE/SIZE次,从fd中读取
if(ret < )
{
puts("read fails");
return -;
}
fclose(fd); fd = fopen("./file","w+"); //打开另一个文件,用于写入
if(fd == NULL)
{
puts("open file fails");
return -;
} ret = fwrite(buf, SIZE, BUFSIZE/SIZE, fd); //从buf写入,每次写入SIZE,写 BUFFSIZE/SIZE 次,写到fd中。
if(ret < )
{
puts("buf write fails");
return -;
}
fclose(fd); return ;
}

linux文件IO操作篇 (二) 缓冲文件的更多相关文章

  1. linux文件IO操作篇 (一) 非缓冲文件

    文件IO操作分为 2 种 非缓冲文件IO 和 缓冲文件IO 它们的接口区别是 非缓冲 open() close() read() write() 缓冲 fopen() fclose() fread() ...

  2. Linux系统编程--文件IO操作

    Linux思想即,Linux系统下一切皆文件. 一.对文件操作的几个函数 1.打开文件open函数 int open(const char *path, int oflags); int open(c ...

  3. Linux文件IO操作

    来源:微信公众号「编程学习基地」 目录 文件操作 Linux文件类型 Linux文件权限 修改文件权限 Linux error 获取系统调用时的错误描述 打印错误信息 系统IO函数 open/clos ...

  4. Linux学习记录--文件IO操作相关系统编程

    文件IO操作相关系统编程 这里主要说两套IO操作接口,各自是: POSIX标准 read|write接口.函数定义在#include<unistd.h> ISO C标准 fread|fwr ...

  5. LInux文件基础知识和文件目录操作(二)文件I/O操作

    1.文件I/O操作分为两部分来讲解: 第一部分是非缓冲文件操作,这种操作适合于比较小规模文件的读写和对实时性要求很高的设备的数据通信,这类操作是系统调用提供的: 第二部分是缓冲文件操作,所面向的则是大 ...

  6. 9.2 Go 文件IO操作

    9.2 Go 文件IO操作 1.1.1. bufio包 带有缓冲区的IO读写操作,用于读写文件,以及读取键盘输入 func main() { //NewReader返回一个结构体对象指针 reader ...

  7. 树莓派学习笔记——使用文件IO操作GPIO SysFs方式

    0 前言     本文描写叙述假设通过文件IO sysfs方式控制树莓派 GPIO端口.通过sysfs方式控制GPIO,先訪问/sys/class/gpio文件夹,向export文件写入GPIO编号, ...

  8. imx6用文件io操作gpio

    具体请参考: http://blog.csdn.net/u014213012/article/details/53140781 这里要注意的是: 要让linux支持文件io方式操作gpio,首先驱动必 ...

  9. [转]文件IO详解(二)---文件描述符(fd)和inode号的关系

    原文:https://www.cnblogs.com/frank-yxs/p/5925563.html 文件IO详解(二)---文件描述符(fd)和inode号的关系 ---------------- ...

随机推荐

  1. 在Centos 7上安装Docker

    在Centos 7上安装Docker 1.docker介绍 docker是类似于vmware的虚拟化软件,可以开发.容纳.运行应用程序的平台,在容器中安全的隔离运行应用程序. 2.Docker引擎 D ...

  2. JavaScript 面向对象编程(四)的常用方法、属性总结

    面向对象的属性.方法.操作符总结,都是干货.想深入掌握面向对象的程序设计模式,必须掌握一下知识点.下列知识点注重于实现,原理还请借鉴<javascript高级程序设计> (基于javasc ...

  3. tampermonkey利用@require调用本地脚本的方法

    比如Tampermonkey上的有个用户脚本a,本来的方法是: 1.直接在Tampermonkey上编辑js,适合高手,但是本人不清楚脚本如何同步,况且不熟练js,在Tampermonkey上写太难了 ...

  4. March 25 2017 Week 12 Saturday

    Better master one than engage with ten. 会十事不如精一事. My colleagues think I have known a lot of things, ...

  5. 我的HTML总结之HTML发展史

    HTML是Web统一语言,这些容纳在尖括号里的简单标签,构成了如今的Web. 1991年,Tim Berners-Lee编写了一份叫做“HTML标签”的文档,里面包含了大约20个用来标记网页的HTML ...

  6. git 解决冲突方法

    转载:http://www.cnlvzi.com/index.php/Index/article/id/119 当共享一个项目后提交冲突时 git push -f 强制推送本地的替换服务端 git f ...

  7. OC static 和函数

    #include <stdio.h> // 定义一个one函数 // 完整地定义一个外部函数需要extern关键字 //extern void one() { // printf(&quo ...

  8. LA 4256 商人

    题目链接:https://vjudge.net/contest/160916#problem/B 题意:给一个无向图,和一个序列:要求,在这个序列中,两两相连的两个数相同,或者,在无向图中相邻:(n& ...

  9. 2017.9.12 初入HTML -----学习总结(二)

    接上:..... (4)标记可分为: 4.1单标记:(单标记仅单独使用就可以表达完整的意思) 基本语法:<标记名称/> 例如:<br/>实现换行的功能.<hr/>实 ...

  10. Ajax,Json数据格式

    同步和异步 同步现象:客户端发送请求到服务器端,当服务器返回响应之前,客户端都处于等待     卡死状态 异步现象:客户端发送请求到服务器端,无论服务器是否返回响应,客户端都可以随     意做其他事 ...