网页
资讯
视频
图片
知道
文库
贴吧
地图
采购
进入贴吧
全吧搜索
吧内搜索
搜贴
搜人
进吧
搜标签
日
一
二
三
四
五
六
签到排名:今日本吧第
个签到,
本吧因你更精彩,明天继续来努力!
本吧签到人数:0
一键签到
成为超级会员,使用一键签到
一键签到
本月漏签
0
次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行
补签
。
连续签到:
天 累计签到:
天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
03月12日
漏签
0
天
c语言吧
关注:
798,851
贴子:
4,350,070
看贴
图片
吧主推荐
视频
游戏
10
回复贴,共
1
页
<<返回c语言吧
>0< 加载中...
fputs()输出到屏幕
只看楼主
收藏
回复
Jingzhe
团子家族
10
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
windows,缓冲I/O
fputs把第一个参数字符串变量发送给输出缓冲区,并不直接发送给屏幕,直到遇到换行符,缓冲区满,fflush()等行为才把输出缓冲区的内容发送给屏幕。
我遇到的问题: 一个简短的字符串,在没有遇到缓存区里的换行符竟然被输出到屏幕上了,这是为何?
楼下补图
Jingzhe
团子家族
10
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
如图,STLEN 14
Jingzhe1234567^Z后 回车,直接获得屏幕输出Jingzhe123456,输出的结果我没有疑问,但我对fputs直接输出到屏幕这件事不明白。(其中^Z为CTRL Z)
一周休七日
帕秋莉糕
12
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
有行缓冲、全缓冲、无缓冲
GTA小鸡
吧主
14
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
这是unix命令行的表现,因为unix默认行缓冲。而Windows命令行默认无缓冲,所以内容总是立即输出到屏幕上。
Jingzhe
团子家族
10
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
程序不需要等待3秒立即输出,系统的标准输出为无缓冲
Jingzhe
团子家族
10
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
标准输出为无缓冲模式,在每次调用printf这类的输出函数时,编译后的代码会直接将输出数据通过操作系统的底层I/O传递给输出设备,而不经过缓冲区,所以也不会等待'\n'或者其他方法刷新缓冲区后输出,保证了每次调用输出函数都能立即输出到设备。
缺点,每次输出都会立即写入输出设备,意味着程序会频繁的调用系统I/O,可能会带来更大的性能开销(大量的写入小的数据),相对于行缓冲和全缓冲,其效率也更低。
Jingzhe
团子家族
10
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
另外 setvbuf()可以设置标准输入 标准输出 标准错误输出的缓冲模式
登录百度账号
扫二维码下载贴吧客户端
下载贴吧APP
看高清直播、视频!
贴吧页面意见反馈
违规贴吧举报反馈通道
贴吧违规信息处理公示