关于stdio.h和iostream.h同时include的问题

dxssx 2002-07-07 12:04:03
如果二者都有的话
对于cout,printf的先后有什么规定
比如
#include "string.h"
#include "iostream.h"
#include "stdio.h"
void main()
{
cout<<"ok1";
printf("%s","nook");
cout<<"ok2";
}
结果打印为nookok1ok2
这是为什么
对于scanf和cin呢
...全文
1567 18 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
shornmao 2002-07-08
  • 打赏
  • 举报
回复
混用stdio和iostream是可能的,但是好像要将iostream和stdio的缓冲区绑定才行,书不在手边,一时想不起来,有C++ Primer的人可以查一查,好像有的。
dxssx 2002-07-08
  • 打赏
  • 举报
回复
#include "iostream.h"
#include "stdio.h"
void main()
{
cout<<"ok1";
printf("%s","ok");
cout<<"ok2";for (int i=1;i=1;){;}
}
还有就是上面这个程序printf不是刷新了吗?那应该在他前面的cout<<"ok1";也应该刷新了,但是输出结果只有ok
这又是怎么回事呢?(我用的是vc)
dxssx 2002-07-08
  • 打赏
  • 举报
回复
那么我不加无限循环
后面添加其他语句
当遇到哪些语句时?cout会刷新呢?他不会一定等到程序退出时才刷新吧
dxssx 2002-07-08
  • 打赏
  • 举报
回复
能不能详细点?
dxssx 2002-07-07
  • 打赏
  • 举报
回复
up
dxssx 2002-07-07
  • 打赏
  • 举报
回复
恩我的是vc
是不是不同的编译器不一样?
vc有什么区别
awinder 2002-07-07
  • 打赏
  • 举报
回复
我用gcc也试了和bcc的结果一样,vc真是…………
zhdleo 2002-07-07
  • 打赏
  • 举报
回复
主人的大概是VC!
awinder 2002-07-07
  • 打赏
  • 举报
回复
你是什么编译器?
在我这里显示ok1nookok2(bcc55)
codingcoding 2002-07-07
  • 打赏
  • 举报
回复
#include "iostream.h"
#include "stdio.h"
void main()
{
cout<<"ok1";
printf("%s","ok");
cout<<"ok2";for (int i=1;i=1;){;}
}
因为你最后有个无限循环。所以cout没有机会被刷新。一般程序退出的时候cout会被刷新缓冲的
zheng_can 2002-07-07
  • 打赏
  • 举报
回复
这是缓冲区的问题
建议这两个最好不要一起用

其实这在多线程里也挺明显的
如果我用 printf 的话,其中的内容往往能在一个时间片内输出
如果我用 cout 的话,就不能够保证是否能在一个时间片内输出,即使加了 flush 或 endl 都一样
dxssx 2002-07-07
  • 打赏
  • 举报
回复
#include "iostream.h"
#include "stdio.h"
void main()
{
cout<<"ok1";
printf("%s","ok");
cout<<"ok2";for (int i=1;i=1;){;}
}
比如这个程序输出为ok
如果//printf("%s","ok");的话
就没有输出了,说明是没有刷新
但是什么时候cout的缓冲才结束呢
dxssx 2002-07-07
  • 打赏
  • 举报
回复
关于缓冲
什么时候才会刷新?
如果没有printf和<<endl的话
那要什么时候才会刷新呢
dxssx 2002-07-07
  • 打赏
  • 举报
回复
那c++build呢?
langhaixin 2002-07-07
  • 打赏
  • 举报
回复 1
头文件这样包含再试试
#include<iostream>
#include<cstdio>
wenliang_d 2002-07-07
  • 打赏
  • 举报
回复
cout 会缓冲。
同意 codingcoding(codingcoding
codingcoding 2002-07-07
  • 打赏
  • 举报
回复
因为你第一次cout<<"ok1";的时候,默认的是并没有刷新缓冲区。而printf输出后就刷新了。当你cout<<"ok2";的时候,缓冲仍然没有被刷新。直到你退出程序的时候,iostream才刷新他的缓冲。所以cout的输出在printf后面。如果你要顺序输出的话,cout<<"ok1"<< endl; endl会刷新缓冲的。
panyf_2k 2002-07-07
  • 打赏
  • 举报
回复
没有像你所说的那样,一切很正确显示

70,027

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧