标准输入输出的基本操作,包括文件的打开与关闭,缓冲区的操作
非格式化输入输出,包括单个字节、字符串以及数据块的输入输出
格式化输入输出
1.标准输入输出的基本操作
标准输入文件(stdin):一般为键盘
标准输出文件(stout):一般为显示器
标准错误输出文件(stderr):一般为显示器
1.文件的打开
操作文件之前要打开文件,打开文件主要是在系统中分配一些资源用于保存该文件的状态信息,并获取文件的指针,
打开文件的函数为fopen
2.文件的关闭
fclose函数
3.缓冲区的刷新
刷新操作是指将缓冲区中的数据清除
fflush函数将缓冲区中的数据写入到磁盘文件或输出到用户终端,同时清空缓冲区
fpurge函数将缓冲区的数据直接清除,包括尚未读取或写入的数据
4.缓冲区属性的设置
缓冲区的大小和类型等都可以通过函数来设置,缓冲区的类型有下面3种。
全缓冲:缓冲区被填满后才执行输入输出操作,将数据写入到磁盘文件或输出到用户终端。
行缓冲:缓冲区中填入换行符时,执行输入输出操作
无缓冲:不对数据进行缓存,标准错误输出stderr一般就是无缓冲的,这可以使错误信息尽快地显示出来。
打开文件后,用户可以使用下面的函数来设定自己的文件缓冲区,而不使用fopen函数打开文件设定的默认缓冲区。
定义:
int setvbuf(FILE * stream,char * buf,int mode,size_t size);
说明:
在打开文件流后, 读取内容之前, 调用setvbuf()可以用来设置文件流的缓冲区。参数stream为指定的文件流,
参数buf指向自定的缓冲区起始地址, 参数size为缓冲区大小,
参数mode有下列几种
_IONBF 无缓冲IO
_IOLBF 以换行为依据的无缓冲IO
_IOFBF 完全无缓冲IO。如果参数buf为NULL指针, 则为无缓冲IO。
除上面函数外,还有如下3个函数:
setbuf
setbuffer
setlinebuf
2.非格式化输入输出
非格式化输入输出包括单个字节输入输出、字符串输入输出以及数据块输入输出
1.单个字节输入输出
从文件读一个字节
fgetc
getchar函数从标准输入读一个字节,等价于fgetc(stdin)
向指定文件写一个字节
fputc
putchar函数可以向标准输出写一个字节,等价于fputc(c, stdout)
2.字符串输入输出
fgets函数可以从指定的文件中读一行字符到缓冲区中,
fputs函数可以向指定的文件写入一个字符串
feof函数来测试读写位置是否到达文件末尾
3.数据块输入输出
对文件进行输入输出操作,也可以以数据块为单位进行,所谓数据块,是指一串固定长度的字节,从文件中
读取数据块用fread函数
向文件中写入数据块使用fwrite函数
3.格式化输入输出
格式化输出fprintf
printf等价于fprintf(stdout,...)
格式化输入函数为fscanf
scanf等价于fscanf(stdin,...)