1.IO是什么
首先,IO指的是输入和输出(i->inpute; o->output),如:scanf、printf、puts、gets等输入输出函数
1.输入:从键盘将数据输入到内存中
2.输出:将内存中的数据输出到显示设备,主要指显示屏上
其实也可以理解为:
输入就是从文件将数据输入到内存中
输出就是将内存总的数据输出到文件中
2.标准IO
标准io即基于C语言标准的一系列用来进行输入和输出的函数
可以通过文件流指针 FILF * 来操作,并且拥有缓冲机制
那么,什么是缓冲机制呢
2.1 缓冲
缓冲就是在内存中开辟了一片空间叫做缓冲区,用来暂时存放数据,在缓冲区满或者系统接收到释放缓冲区的命令时系统会读取缓冲区内容,这样就减少了系统的调用,提高了系统的效率。
缓冲区的作用:减少系统调用的次数
- 全缓存
当缓冲区满、程序运行结束,强制刷新缓冲区是会刷新缓冲区
(2)行缓存
当缓冲区满,程序运行结束、强制刷新缓冲区,遇到换行符时会刷新缓冲区
未刷新缓冲区:
程序运行结束:
强制刷新缓冲区:
遇到换行符时:
(3)不缓存
当程序运行起来时,有三个文件默认已经打开,标准输入、标准输出、标出出错,对应的流指针分别为stdin、stdout、stderr
2.2 标准io的函数
2.2.1——fopen
FILE *fopen(const char *pathname,const char *mode);
功能:打开一个文件
参数一:要打开文件的路径
参数二:打开文件的方式
返回值:成功返回已经打开的文件流指针,失败返回NULL
r:以只读方式打开文件,文件不存在出错
r+:以可读可写的方式打开文件,文件不存在则出错
w:以只写的方式打开文件,如果文件不存在,则新建,如果文件存在,则清空文件中的内容
w+:以可读可写的方式打开文件,如果文件不存在,则新建,如果文件存在,则清空文件中的内容
a:以只写的方式打开文件,如果文件不存在,则新建,如果文件存在,则追加在文件的末尾
a+:以可读可写的方式打开文件,如果文件不存在,则新建,如果文件存在,则追加在文件的末尾
返回值:成功返回已经打开的文件流指针,失败返回NULL
2.2.2——fclose
int fclose(FILE *stream);
功能:关闭流
参数:fopen的返回值,已经打开的文件流指针
返回值:成功返回0,失败返回-1(EOF)