首页
社区
课程
招聘
[旧帖] [求助] [C] 关于输入缓冲区的问题 0.00雪花
发表于: 2013-12-19 21:37 1389

[旧帖] [求助] [C] 关于输入缓冲区的问题 0.00雪花

2013-12-19 21:37
1389
int main(){
cout<<"abc";
char c = getchar();
cout<<c<<endl;
}
在vc6.0中,输入qwe,则正常返回abcq,然而在一步一步调试中,执行cout<<"abc";后,实际并没有输出,这是怎么回事呢?

int main()

printf("123");
whiel(1);

vc6.0可以输出,ubuntu却不可以输出。
为什么程序不会输出,而在123后面加上换行就可以输出呢?

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 102
活跃值: (54)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
在linux系统下,默认情况下,printf()在屏幕输出的时候是行缓冲的,当printf遇到\n时,或者缓冲区满时,才会将缓冲区里的内容刷新到标准输出(stdout).
欲知详情,baidu之...
2013-12-20 09:21
0
雪    币: 35
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
楼上说得很清楚了,不过这个和系统无关。

不管是 cout 还是 printf,都有一块缓存,当你输出的时候实际上是向缓存里写数据,等遇到换行之类的时候才真正输出。同样的,输入流也是有缓存的。

如果在程序运行到一定时候希望把缓存里的东西马上输出,可以用 flush 函数。欲知详情,MSDN 之……
2013-12-22 05:41
0
游客
登录 | 注册 方可回帖
返回
//