嵌入式开发之刷新流
什么样情况下流自动刷新缓冲区?
- 全缓冲:缓冲区满的时候刷新缓冲区;
- 行缓冲:当缓冲区满的时候或者遇到‘\n’行符的时候刷新缓冲区;
- 流关闭的时候,检查如果流的缓冲区还有数据,则刷新。
- fflush函数手动刷新缓冲区;
int fflush(FILE *fp);
- 成功时返回0;出错时返回EOF;
- 将流缓冲区中的数据写入实际的文件;
- Linux下只能刷新输出缓冲区;
代码示例:
#include <stdio.h>int main()
{FILE *fp;if((fp = fopen("test.txt","w")) == "NULL"){perror("fopen");return -1;}fputc('a',fp); //只是写到流的缓冲区fflush(fp); //强制刷新缓冲器while(1);return 0;
}
定位流 ftell/fseek/rewind
读写流时,当前读写位置会自动后移。
1、long ftell(FILE *stream); //返回指定流的当前读取位置,出错时返回EOF。
2、long fseek(FILE *stream,long offset,int whence); //,成功返回0,出错返回EOF。设定当前流的读取位置,whence是一个