文件标准I/O基本操作——FX乐曲时代

在Linux王国的和平年代里,优秀的函数们纷纷踏上了成为直播网红的不归路,造就了最为辉煌的FX乐曲时代

在Linux的文件操作中标准I/O操作与底层I/O操作的对比

比起前辈们(底层I/O操作)的认真率直,新一代的FX组合更是有了不少骚操作(加入了缓存机制)

名称 说明
标准文件I/O操作 标准I/O库的所有操作都是围绕流来进行的
标准I/O采用了缓存机制,在内存中开辟缓冲区为程序中的文件使用
针对控制台的打印输出
底层文件I/O操作 没有缓存机制,需要用户自己建立缓存区
每个文件操作动作都调用内核中的相应系统调用
通过文件描述符来访问文件
针对文件操作和读写硬盘
标准I/O里面有着许多各种函数

其中既有读写文件的F6组合,也有

分类方法 标准I/O函数 函数说明
读写文件 每次一定数量的I/O fwrite() 每次I/O操作读或写某种数量的对象,而每个对象具有指定的长度
fread()
每次一个字符的I/O fgetc() 一次读或写一个字符,如果流是带缓存的,则标准I/O函数处理所有缓存
fputc()
每次一行的I/O fgets() 一次读或写一行。每行都以一个新行符终止。当调用fgets()时,应说明能处理的最大行长
fputs()
打开文件 fopen() 它们可以以不同的模式打开,但都返回一个指向FILE的指针
对文件的读写都是通过这个FILE指针来进行
fdopen()
关闭文件 fclose() 该函数将缓冲区内的数据全部写入到文件中,并释放系统所提供的文件资源
定位指针 fseek() 用户设定stream流的文件位置指示,调用成功返回 0,失败返回-1
(fseek()的whence参数:SEEK_SET/ SEEK_CUR/ SEEK_END)
ftell() 用于取得当前的文件位置,调用成功则返回当前文件读写位置,若出错则为-1
rewind() 用于设定流的文件位置指示为文件开始,该函数调用成功无返回值
rewind()等价于fseek(stream, 0, SEEK_SET)
读写F6组合

fwrite函数与fread函数
作为F6组合的双人合唱组,唱过的的歌可数不胜数,但每一首歌都会将感情全力倾注,伴随着乐声翩翩起舞

所需头文件 #include<stdio.h>
函数原型 size_t fwrite(const void* ptr, size_t size, size_t nmemb, FILE * stream)
函数传入值 ptr:存放写入数据的缓冲区
size:写入数据的大小
nmemb:字符串数目
stream:要写入的文件流
函数返回值 成功:返回实际写入的nmemb数目
失败:返回EOF
所需头文件 #include<stdio.h>
函数原型 size_t fread(void* ptr, size_t size, size_t nmemb, FILE * stream)
函数传入值 ptr:存放读取数据的缓冲区
size:读取的数据长度
nmemb:字符串数目
stream:要读取的文件流
函数返回值 成功:返回实际读取的nmemb数目
失败:返回EOF

fgetc函数与fputc函数
随着音乐我们走上了舞台,听众们的耳朵早就竖了起来,一下一下清脆的节拍,跟着我们一起狂欢起来!!!!

所需头文件 #include<stdio.h>
函数原型 int getc(FILE * stream)
int fgetc(FILE * stream)
int getchar(void)
函数传入值 stream:要输入的文件流
函数返回值 成功:返回读取的字符
失败:返回EOF
备注 函数getchar()等同于getc(stdin)
所需头文件 #include<stdio.h>
函数原型 int putc(int c, FILE * stream)
int fputc(int c, FILE * stream)
int putchar(int c)
函数传入值 stream:要输入的文件流
函数返回值 成功:返回字符c
失败:返回EOF
备注 putchar(c)等价于putc(c,stdout)

fgets函数与fputs函数
乐声一起动心弦,百感交织情亦悬,分连顿跳声不断,不尽此曲誓不停。

所需头文件 #include<stdio.h>
函数原型 char* gets(char* s)
char fgets(char* s, int size, FILE * stream)
函数传入值 s:要输入的字符串
size:输入字符串长度
stream:要输入的文件流
函数返回值 成功:返回输入的字符串s
失败:返回NULL
备注 gets()是一个不推荐使用的函数,因为调用者在使用gets()时不能指定缓存的长度,这样就可能造成缓存越界(如若该行长于缓存长度),写到缓存之后的存储空间中,从而产生不可预料的后果
对于fgets()函数,必须指定缓存的长度n
此函数一直读到换行符为止,但是不超过n-1个字符,读入的字符被送入缓存
该缓存以空字符\0结尾
所需头文件 #include<stdio.h>
函数原型 int puts(FILE * stream)
int fputs(FILE * stream)
函数传入值 s:要输出的字符串
stream:对应的文件流
函数返回值 成功:返回字符串s
失败:返回NULL
开天辟地F2组合

fopen函数与fdopen函数
他们作为Linux王国里面的两位混音小王子,fopen注重于把控音轨,fdopen更擅长于把控音源,两者的相互合作造就了一首首激动人心的音乐

所需头文件 #include<stdio.h>
函数原型 FILE* fopen(const char* path, const char* mode)
函数传入值 path:包含要打开的文件夹路径及文件名
mode:文件打开状态
函数返回值 成功:返回指向FILE的指针
失败:返回NULL
所需头文件 #include<stdio.h>
函数原型 FILE* fdopen(int fd, const char* mode)
函数传入值 fd:要打开的文件描述符
mode:文件打开状态
函数返回值 成功:返回指向FILE的指针
失败:返回NULL

传入值mode参照表

参数名 参数说明
r 或 rb 打开只读文件,该文件必须存在
r+ 或 r+b 打开可读写文件,该文件必须存在
w 或 wb 打开只写文件
若文件存在则将数据清空
若文件不存在则创建该文件
w+ 或 w+b 打开可读写文件
若文件存在则将数据清空
若文件不存在则创建该文件
a 或 ab 以附加方式打开只写文件
若文件不存在则创建该文件
若文件存在则将数据追加到文件尾
a+ 或 a+b 以附加方式打开可读写文件
若文件不存在则创建该文件
若文件存在则将数据追加到文件尾
备注 如果使用了带b的mode则会告诉函数打开的文件为二进制文件,并非文本文件
京剧大师FC(关闭文件)

fclose函数
fclose是公认的京剧大师,其中巧妙的收音吸引力无数的观众前来。
有一次她接受了fopen和fdopen的挑战,最后胜在自己气息斗过了他们混音器的电量

所需头文件 #include<stdio.h>
函数原型 int fclose(FILE * stream)
函数传入值 stream:指向 FILE 对象的指针
函数返回值 成功:返回0
失败:返回EOF
移动steam流指针FFR团

fseek、ftell和rewind组成了一个强大的唱、跳、Rap团队,其中fseek擅长从乐章的任何一个地方起唱(通过whence定位),ftell随着fseek唱的位置而跳起相应的舞蹈(定位指针当前的位置),rewind则能通过Rap去指挥其他人回到乐章的开头(设定流的文件位置指示为文件开始),他们的乐曲几乎完全停不下来,一次就能唱好几天。
fseek函数

所需头文件 #include<stdio.h>
函数原型 int fseek(FILE * stream, long offest, int whence)
函数传入值 stream 指向 FILE 对象的指针
offest 偏移量(有正负)
whence(起始点) SEEK_SET:文件开头 + offset(一般为正) 为新读写位置
SEEK_CUR:当前读写位置 + offset 为新读写位置
SEEK_END:文件结尾 + offset(一般为负) 为新读写位置
函数返回值 成功:返回0
失败:返回-1

ftell函数

所需头文件 #include<stdio.h>
函数原型 long int ftell(FILE *stream)
函数传入值 stream:指向 FILE 对象的指针
函数返回值 成功:返回标识的当前位置
失败:返回-1
备注 用于取得当前的文件位置,调用成功则返回当前文件读写位置,若出错则为-1

rewind函数

所需头文件 #include<stdio.h>
函数原型 void rewind(FILE *stream)
函数传入值 stream:指向 FILE 对象的指针
函数返回值
备注 用于设定流的文件位置指示为文件开始,该函数调用成功无返回值
rewind()等价于fseek(stream, 0, SEEK_SET)
麦克风的赞助商(头文件)

本届FX乐曲时代所有参赛选手所使用的麦克风具有以下赞助商提供

 #include<stdio.h> //没有我,你们什么歌都唱不出来

如果觉得这篇文章还不错的话,就点个赞收藏一下,感谢您的观看

看完标准I/O操作,不妨再来看看底层I/O操作吧!

文件底层I/O基本操作——东写西读南开北关中位移_莫韵乐的Linux英雄传
如何科学养一只鸽子为你飞鸽传书——程序间异步通信_莫韵乐的Linux英雄传

文件标准I/O基本操作——FX乐曲时代_莫韵乐的Linux英雄传相关推荐

  1. linux从当前目录打开fx,文件标准I/O基本操作——FX乐曲时代_莫韵乐的Linux英雄传...

    文件标准I/O基本操作--FX乐曲时代 在Linux王国的和平年代里,优秀的函数们纷纷踏上了成为直播网红的不归路,造就了最为辉煌的FX乐曲时代 在Linux的文件操作中标准I/O操作与底层I/O操作的 ...

  2. 文件底层I/O基本操作——东写西读南开北关中位移_莫韵乐的Linux英雄传

    文件I/O基本操作--东写西读南开北关中位移 Linux王国曾经有那么一个风起云涌的年代,而在那一个年代里就有那么五位人中龙凤掀起无数的波澜,人们称他们为东写西读南开北关中位移 在Linux的文件操作 ...

  3. Android Studio的res自动生成的文件出错了_莫韵乐与bug的奇妙冒险

    Android Studio的res自动生成的文件出错了_莫韵乐与bug的奇妙冒险 无论学什么编程语言都要跟奇怪的bug过不去 奇怪的bug出现了 今天满怀欣喜地进行安卓开发学习,创建好一个新的项目之 ...

  4. 夺命雷公狗---linux NO:10 linux的文件与目录的基本操作

    我们往往都是在系统操作文件和目录,那么我们就先来研究下文件和目录的基本操作 这些都是常用的命令,我们都必须要玩明白的... 我们首先用  pwd  来做测试... pwd  主要是显示我们当前在那个目 ...

  5. linux文件服务有哪些,linux有哪些文件系统?_网站服务器运行维护,linux

    linux运维学什么知识?_网站服务器运行维护 linux运维需要学的知识:1.Linux基础知识.linux操作系统:2.bash脚本编程:3.文本处理命令:4.数据库:5.防火墙:6.监控工具:7 ...

  6. qt 文件大图标、列表等样式切换_跬步千里,厚积薄发:深度操作系统v15.9版正式发布...

    深度操作系统是一个致力于为全球用户提供美观易用.安全可靠的Linux发行版. 深度操作系统基于Linux内核,以桌面应用为主的开源GNU/Linux操作系统,支持笔记本.台式机和一体机.深度操作系统( ...

  7. linux怎样自动检查link文件_怎样理解和识别 Linux 中的文件类型 | Linux 中国

    众所周知,在 Linux 中一切皆为文件,包括硬盘和显卡等.在 Linux 中导航时,大部分的文件都是普通文件和目录文件.但是也有其他的类型,对应于 5 类不同的作用.因此,理解 Linux 中的文件 ...

  8. 在python中读取文件时如何去除行末的换行符以及在Windows与Linux中的区别

    [时间]2018.11.14 [题目]在python中读取文件时如何去除行末的换行符以及在Windows与Linux中的区别 一.去除换行符 以使用readline进行读取为例: import red ...

  9. 刘霞:“手艺人鞋吧”圆了创业梦_创业时代_科技时代_新浪网

    刘霞:"手艺人鞋吧"圆了创业梦_创业时代_科技时代_新浪网 刘霞:"手艺人鞋吧"圆了创业梦_创业时代_科技时代_新浪网 刘霞:"手艺人鞋吧" ...

最新文章

  1. 蓝桥杯C++ AB组辅导课 第一讲 递归与递推 Acwing
  2. VTK:几何对象之OpenVROrientedArrow
  3. java进程被kill_定位JAVA进程被kill的原因
  4. MySql字符串函数使用技巧
  5. synchronized的使用方法
  6. springmvc请求返回一个字符_SpringMVC系列之Web利器SpringMVC
  7. 什么是Freedoc?Freedoc是什么?
  8. 嵌套类型的前5个用例
  9. 方格取数(1)(HDU-1565)
  10. linux如何停止死循环脚本,Linux Shell教程(一)
  11. HttpClient 如何正确的释放资源
  12. A trip through the Graphics Pipeline 2011_06_(Triangle) rasterization and setup
  13. eNsp 多区域OSPF配置
  14. 百度Apollo计划跟踪:Apollo 3.0前言
  15. Mac下Chrome 浏览器右键菜单需双击的问题
  16. 计算机病毒与防治说课稿,计算机病毒与防治说课稿.doc
  17. 3D游戏:八、粒子系统与流动效果
  18. 农业物联网发展有哪些问题
  19. java小游戏------Flappy Bird(飞翔的小鸟含源码)
  20. 2022爱分析· 隐私计算厂商全景报告 | 爱分析报告

热门文章

  1. 金九银十,跳槽找工作的几点良心建议
  2. 原码、反码、补码、移码
  3. 什么是Carlink?
  4. 达人评测 i9 13900H和r9 5900hx选哪个
  5. C.武器大师的宝贝 (异或的含义)
  6. html垂直军中,数字报纸HTML版本
  7. bmp24位转bmp16 (888转565)
  8. Java中大文件读取,内存放不下怎么办?
  9. CF中User-Based与Item-Based的区别
  10. yolov3 build_targets函数