c++问题(cout输出不显示)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c++问题(cout输出不显示)相关的知识,希望对你有一定的参考价值。
#include <iostream.h>
#include <stdio.h>
struct person // 结构定义
char name[10];
;
person allone[6];
void main()
int i;
for(i = 0;i < 6;i++) // 输入数据
cout<<i<<":name: "; //(1)
gets(allone[i].name); //(2)
cout<<endl;
运行的时候,语句(1)和(2)是颠倒执行的,先要求输入,再显示"0:name:".
为什么会这样?
具体可拖入vc++6.0看.
如:
//#include <iostream.h>
#include <stdio.h>
struct person // 结构定义
char name[10];
;
person allone[6];
void main()
int i;
for(i = 0;i < 6;i++) // 输入数据
printf("%d name:",i); //(1)
gets(allone[i].name); //(2)
printf("\n");
本回答被提问者采纳 参考技术B #include <iostream.h>
#include <stdio.h>
struct person // 结构定义
char name[10];
;
person allone[6];
void main()
int i;
for(i = 0;i < 6;i++) // 输入数据
// cout<<i<<":name: "; //(1)
cout<<i<<":name: "<<endl; //要输出endl将缓冲里的内容输出
gets(allone[i].name); //(2)
// cout<<endl;
参考技术C 你在(1)语句后面加上一个<<endl换行就好了
最新xcode中有关cout不输出的问题
上两张图,图一可以看出,在cout结尾有endl的时候,cout输出正常,cin也能接收,图二删掉cout结尾的endl,cout就无法输出了,简直醉了前两天刚更新的xcode,难道又有什么新的c++标准了?不用endl清除缓冲区就没法输出了?求解怎么解决,不想用print系列,输入输出流省事
参考技术A 这个不是最新的问题而是C语言和C++一直都是这样的。
输出不会直接输出到屏幕
而是先存在缓冲中
遇到三种情况会刷新到屏幕
1 遇到换行符。 这个是最常见的。 加一个\n或者endl就好
2 调用刷新缓冲区函数 比如fflush等。
3 缓冲区满。 这个遇到的概率最低。 不过 如果你死循环打印一个字符, 没有endl情况下, 过一段时间会出来一大段。追问
一直都这样?以前用cout的时候从来不会这样啊。而且根据标准c的规范,
在1、缓冲区满 2、遇到换行符 3、遇到输入这三种情况时,从缓冲区输出到屏幕,根据图2,我已经满足了第三种情况,有了输入,但依旧没有输出到屏幕
遇到输入还不刷,那可能就有问题了。你试试加flush看看行不行
以上是关于c++问题(cout输出不显示)的主要内容,如果未能解决你的问题,请参考以下文章
C++ cout利用控制符dechex和oct,分别输出十进制十六进制和八进制显示整数