文件标准I/O基本操作——FX乐曲时代_莫韵乐的Linux英雄传
文件标准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英雄传相关推荐
- linux从当前目录打开fx,文件标准I/O基本操作——FX乐曲时代_莫韵乐的Linux英雄传...
文件标准I/O基本操作--FX乐曲时代 在Linux王国的和平年代里,优秀的函数们纷纷踏上了成为直播网红的不归路,造就了最为辉煌的FX乐曲时代 在Linux的文件操作中标准I/O操作与底层I/O操作的 ...
- 文件底层I/O基本操作——东写西读南开北关中位移_莫韵乐的Linux英雄传
文件I/O基本操作--东写西读南开北关中位移 Linux王国曾经有那么一个风起云涌的年代,而在那一个年代里就有那么五位人中龙凤掀起无数的波澜,人们称他们为东写西读南开北关中位移 在Linux的文件操作 ...
- Android Studio的res自动生成的文件出错了_莫韵乐与bug的奇妙冒险
Android Studio的res自动生成的文件出错了_莫韵乐与bug的奇妙冒险 无论学什么编程语言都要跟奇怪的bug过不去 奇怪的bug出现了 今天满怀欣喜地进行安卓开发学习,创建好一个新的项目之 ...
- 夺命雷公狗---linux NO:10 linux的文件与目录的基本操作
我们往往都是在系统操作文件和目录,那么我们就先来研究下文件和目录的基本操作 这些都是常用的命令,我们都必须要玩明白的... 我们首先用 pwd 来做测试... pwd 主要是显示我们当前在那个目 ...
- linux文件服务有哪些,linux有哪些文件系统?_网站服务器运行维护,linux
linux运维学什么知识?_网站服务器运行维护 linux运维需要学的知识:1.Linux基础知识.linux操作系统:2.bash脚本编程:3.文本处理命令:4.数据库:5.防火墙:6.监控工具:7 ...
- qt 文件大图标、列表等样式切换_跬步千里,厚积薄发:深度操作系统v15.9版正式发布...
深度操作系统是一个致力于为全球用户提供美观易用.安全可靠的Linux发行版. 深度操作系统基于Linux内核,以桌面应用为主的开源GNU/Linux操作系统,支持笔记本.台式机和一体机.深度操作系统( ...
- linux怎样自动检查link文件_怎样理解和识别 Linux 中的文件类型 | Linux 中国
众所周知,在 Linux 中一切皆为文件,包括硬盘和显卡等.在 Linux 中导航时,大部分的文件都是普通文件和目录文件.但是也有其他的类型,对应于 5 类不同的作用.因此,理解 Linux 中的文件 ...
- 在python中读取文件时如何去除行末的换行符以及在Windows与Linux中的区别
[时间]2018.11.14 [题目]在python中读取文件时如何去除行末的换行符以及在Windows与Linux中的区别 一.去除换行符 以使用readline进行读取为例: import red ...
- 刘霞:“手艺人鞋吧”圆了创业梦_创业时代_科技时代_新浪网
刘霞:"手艺人鞋吧"圆了创业梦_创业时代_科技时代_新浪网 刘霞:"手艺人鞋吧"圆了创业梦_创业时代_科技时代_新浪网 刘霞:"手艺人鞋吧" ...
最新文章
- 蓝桥杯C++ AB组辅导课 第一讲 递归与递推 Acwing
- VTK:几何对象之OpenVROrientedArrow
- java进程被kill_定位JAVA进程被kill的原因
- MySql字符串函数使用技巧
- synchronized的使用方法
- springmvc请求返回一个字符_SpringMVC系列之Web利器SpringMVC
- 什么是Freedoc?Freedoc是什么?
- 嵌套类型的前5个用例
- 方格取数(1)(HDU-1565)
- linux如何停止死循环脚本,Linux Shell教程(一)
- HttpClient 如何正确的释放资源
- A trip through the Graphics Pipeline 2011_06_(Triangle) rasterization and setup
- eNsp 多区域OSPF配置
- 百度Apollo计划跟踪:Apollo 3.0前言
- Mac下Chrome 浏览器右键菜单需双击的问题
- 计算机病毒与防治说课稿,计算机病毒与防治说课稿.doc
- 3D游戏:八、粒子系统与流动效果
- 农业物联网发展有哪些问题
- java小游戏------Flappy Bird(飞翔的小鸟含源码)
- 2022爱分析· 隐私计算厂商全景报告 | 爱分析报告