使用printf函数的时候不知道有没有遇到这样一个问题,程序本应该输出的内容并没有输出,当程序执行结束以后那些输出都输出来了,是不是感觉很奇怪.
其实这是缓存搞的鬼!根据缓存的不同,读写函数分为三类:
一,行缓存函数
当缓存中有换行符或者刷新缓存或者缓存满了以后才会调用系统函数进行输出.
行缓存函数有fputs,fputc,puts,putc,putchar,scanf;printf,sprintf,fprintf,fgetc,fgets,gets,getc,getchar
在使用这些函数的时候最好在字符串后面加上 的换行符,或者刷新缓存.
int fflush(FILE *fp); //该函数作用为刷新缓存
二,无缓存函数
因为没有缓存,所以只要调用这个函数数据马上就会被输出.
open,read,write,close,lseek,fcntl,ioctl,mmap等系统函数均为无缓存函数
三,全缓存函数
只有在缓存区满或者刷新缓存区的情况下才会输出
如:fread,fwirte