1.IO是什么
首先,IO指的是输入和输出(i->inpute; o->output),如:scanf、printf、puts、gets等输入输出函数
1.输入:从键盘将数据输入到内存中
2.输出:将内存中的数据输出到显示设备,主要指显示屏上
其实也可以理解为:
输入就是从文件将数据输入到内存中
输出就是将内存总的数据输出到文件中
2.标准IO
标准io即基于C语言标准的一系列用来进行输入和输出的函数
可以通过文件流指针 FILF * 来操作,并且拥有缓冲机制
那么,什么是缓冲机制呢
2.1 缓冲
缓冲就是在内存中开辟了一片空间叫做缓冲区,用来暂时存放数据,在缓冲区满或者系统接收到释放缓冲区的命令时系统会读取缓冲区内容,这样就减少了系统的调用,提高了系统的效率。
如上图,缓冲区例如一个超市的小推车,在只买一两件商品时可有可无,但当采购物品较多的时候,它可以一次性放置很多物品,从而省去了之前需要来回跑几趟才能采购完物资的时间,提高了采买的效率。这就是缓冲区的原理
当缓冲区满,程序运行结束,强制刷新缓冲区,遇到换行符时会刷新缓冲区
未刷新缓冲区:
缓冲区满:
程序运行结束:
强制刷新缓冲区:
遇到换行符:
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)
2.2.3——读写
读写有三种方式:1.按字符读写
2.按行读写
3.按块读写
1.按字符读写
int fgetc(FILE *stream);
功能:从指定的流中读取一个字符
参数:fopen的返回值,也就是已经打开的流指针
返回值:成功返回读到的ascll码值,失败返回-1
int fputc(int c, FILE *stream);
功能:向指定的流中输出一个字符
参数1:要输出的字符
参数2:fopen的返回值,已经打开的流指针
返回值:成功返回写入的ASCII码值,失败返回-1