社区
C语言
帖子详情
请教printf缓冲区。
SilentHunter460
2017-05-25 11:11:40
书上说C标准明确规定了何时把缓冲区的内容发送的屏幕:当缓冲区满、遇到换行字符或需要输入的时候。
但这个为什么还会被打印出来?这么短缓冲区应该不满,也没有\n换行字符,也没有scanf。
int main(void)
{
printf("test");
return 0;
}
...全文
208
5
打赏
收藏
请教printf缓冲区。
书上说C标准明确规定了何时把缓冲区的内容发送的屏幕:当缓冲区满、遇到换行字符或需要输入的时候。 但这个为什么还会被打印出来?这么短缓冲区应该不满,也没有\n换行字符,也没有scanf。 int main(void) { printf("test"); return 0; }
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
幻夢之葉
2017-05-26
打赏
举报
回复
你说的这种情况只是指逗留在缓冲区的数据 它不保证数据能立即输出,也不能保证全部的数据都能立即输出。 但是到遇到那几种情况下,缓冲区会被清空 C追求性能,所以输出时机由更系统自由地控制,遇到某些情形之下才进行干涉。 类似于医院的门诊和急症?
赵4老师
2017-05-26
打赏
举报
回复
在每个最后不带\n的printf后面加fflush(stdout);
paschen
2017-05-26
打赏
举报
回复
只是说 当缓冲区满、遇到换行字符或需要输入的时候 会清空缓冲区 但没说其他时候一定不会清空 编译器和系统可以进行优化 控制台的输出一般都会直接看得到,但对文件的输出可能就不会立即写入了,可能就会等到缓冲区满才写入
自信男孩
2017-05-26
打赏
举报
回复
该程序只是打印test就执行结束了。既然程序执行结束了,那么系统就要回收它占用的内存。回收的过程中,将停留在内存的数据刷到文件中(标准输出也是文件),将输出缓冲区里的数据也一并清除,所以它肯定会输出的。
JXES智能生态系统
2017-05-26
打赏
举报
回复
int main(void) { printf("test"); sleep(5); } 这样要等5秒后才能看到test,5秒之前test一直是在系统的buffer里的,之于你的问题,这些都是由操作系统帮你处理的。因为return 0,这时你的main程序都结束了,这时操作系统自然会对Main程序占用的buffer要做flush处理。具体的可以看看linux系统编程相关的书。
嵌入式软件调试专题2:
printf
函数打印高阶技巧
分享使用
printf
打印的技巧:包括控制打印开关、打印等级控制、以及打印函数
printf
缓冲机制带来的打印延迟问题,让你在工作、学习、软件debug中提高工作效率!
C语言实现
缓冲区
溢出实例
C语言简单实现
缓冲区
溢出,安全相关。
缓冲区
溢出实验
缓冲区
溢出实验 一、实验要求 实验目标:利用“探测法”、“调试法”确定存在漏洞的程序溢出点位置。 目标程序:stackoverflow.exe、CCproxy.rar 1.请对给定的程序进行溢出点定位(即输入数据长度为多少时,程序会...
Linux实验——
缓冲区
溢出漏洞实验
缓冲区
溢出是指程序试图向
缓冲区
写入超出预分配固定长度数据的情况。这一漏洞可以被恶意用户利用来改变程序的流控制,甚至执行代码的任意片段。这一漏洞的出现是由于数据缓冲器和返回地址的暂时关闭,溢出会引起返回...
linux清除read
缓冲区
,read IO操作详解 之 fflush清空输入
缓冲区
(转)
C/C++ 误区:fflush(stdin)1.为什么 fflush(stdin) 是错的首先请看以下程序:#include int main( void ){int i;for (;;) {fputs("Please input an integer: ...
printf
("%d\n", i);}return 0;}这个程序首先会提示用户...
C语言
69,371
社区成员
243,080
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章