文件标准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/Ofwrite()每次I/O操作读或写某种数量的对象,而每个对象具有指定的长度
fread()
每次一个字符的I/Ofgetc()一次读或写一个字符,如果流是带缓存的,则标准I/O函数处理所有缓存
fputc()
每次一行的I/Ofgets()一次读或写一行。每行都以一个新行符终止。当调用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英雄传

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值