标准I/O中的缓冲区
来源:互联网 发布:linux head -1 编辑:程序博客网 时间:2024/06/06 20:53
对于标准的I/O函数在使用时会经常面对缓冲区的问题。缓冲区是在内存中开辟了一块空间,用来暂时的存放数据,可分为三种:全缓存、行缓存、不缓存。
全缓存:是大多数情况下遇到的一种缓存,大小是4096字节。当遇到缓冲区满的时候、强制刷新的时候(int fflush(FILE* fp))、程序执行过程中正常结束的时候
可进行刷新。
行缓存:标准输入、输出流(stdin、stdout)对应行缓存大小为1024字节,可进行刷新的情况除了全缓存的三种情况外,还包括遇到‘\n’的情况。
不缓存:对应于标准出错流
一.全缓存:
在进行循环记录系统时间操作时,使用fprintf函数进行格式化输出:
void fun(FILE* fp,struct tm* tmp)
{
time_t t;
int i;
while(1)
{
time(&t);
tmp = localtime(&t);
i = count(fp);
fprintf(fp,"%-2d:%d-%d-%d %d:%d:%d\n",i,1900+tmp->tm_year,1+tmp->tm_mon,tmp->tm_mday,tmp->tm_hour,tmp->tm_min, tmp->tm_sec);
sleep(1);
fflush(fp);
}
}
该函数实现每隔一秒向文件中输入一次时间。因为要求实时写入,所以添加fflush(fp)进行强制刷新,不满4096字节便进行输出。
二、行缓存
#include<stdio.h>
int main(int argc, const char *argv[])
{
int i;
for(i = 0;i < 300;i++)
{
printf("%-3d ",i);
}
while(1);
return 0;
}
在上述程序中,只能输出0~255。因为行缓存区大小为1024字节。
全缓存:是大多数情况下遇到的一种缓存,大小是4096字节。当遇到缓冲区满的时候、强制刷新的时候(int fflush(FILE* fp))、程序执行过程中正常结束的时候
可进行刷新。
行缓存:标准输入、输出流(stdin、stdout)对应行缓存大小为1024字节,可进行刷新的情况除了全缓存的三种情况外,还包括遇到‘\n’的情况。
不缓存:对应于标准出错流
一.全缓存:
在进行循环记录系统时间操作时,使用fprintf函数进行格式化输出:
void fun(FILE* fp,struct tm* tmp)
{
time_t t;
int i;
while(1)
{
time(&t);
tmp = localtime(&t);
i = count(fp);
fprintf(fp,"%-2d:%d-%d-%d %d:%d:%d\n",i,1900+tmp->tm_year,1+tmp->tm_mon,tmp->tm_mday,tmp->tm_hour,tmp->tm_min, tmp->tm_sec);
sleep(1);
fflush(fp);
}
}
该函数实现每隔一秒向文件中输入一次时间。因为要求实时写入,所以添加fflush(fp)进行强制刷新,不满4096字节便进行输出。
二、行缓存
#include<stdio.h>
int main(int argc, const char *argv[])
{
int i;
for(i = 0;i < 300;i++)
{
printf("%-3d ",i);
}
while(1);
return 0;
}
在上述程序中,只能输出0~255。因为行缓存区大小为1024字节。
0 0
- 标准I/O中的缓冲区
- 浅析标准I/O缓冲区
- 关于标准I/O缓冲区
- 浅析标准I/O缓冲区
- 浅析标准I/O缓冲区
- 标准I/O缓冲区详解
- 浅谈标准I/O缓冲区
- 浅谈标准I/O缓冲区
- 浅谈标准I/O缓冲区
- 浅谈标准I/O缓冲区
- 标准i/o缓冲区类型详解
- Linux系统--浅谈标准I/O缓冲区
- c标准库I/O缓冲区和内核缓冲区
- C标准I/O缓冲区:全缓冲和行缓冲
- 标准I/O缓冲 与 用户程序的行缓冲区
- C标准I/O缓冲区:全缓冲和行缓冲
- 【Linux系统编程】 浅谈标准I/O缓冲区
- 关于I/O缓冲区
- Spring mvc为何不能直接传递集合参数
- 盘点最流行的Java工具(转)
- SuperMap iDesktop常见问题解答集锦(五)
- knockoutjs visible $index 用index标签判断是不是显示
- Android官方文档之Location and Sensors APIs(下)
- 标准I/O中的缓冲区
- ros::NodeHandle成员介绍
- static_final_static final 用法
- sql关联查询一个例子
- Two Sum
- Beyond Compare缺少BCplung.dll文件,怎么办?
- unity3D学习【功能实现】之十一:通过Json读取地图01
- 初学者-php处理表单上传文件
- git学习笔记