C++中的getchar()或cin

来源:百度知道 编辑:UC知道 时间:2024/05/11 17:32:49
大家帮我看看为什么第一次循环x=getchar();没执行?而后几次却可以执行?把那句改为 cin;也是同样的效果.
#include <iostream>
using namespace std;
int main(){
char s[3][4];
int n;
char x;
cin>>n;
for(;n>0;n--){
cout<<n<<"执行 getchar() 之前"<<endl;
x=getchar();
cout<<"执行完 getchar(),输入字符:"<<endl;
gets(s[0]);
gets(s[1]);
gets(s[2]);
}
}
非常你的帮忙!!!
如果改为cin>>x; 会照常输入,这是为什么呢?

因为你用getchar()只能接收到一个字符,当你输入n值后,你按了回车键,这个值在windows平台下是两个ASCII字符/n/r也就是回车换行,当回车时/n被控制台接收面/r没有,那么第一次进入for时getchar()就已经接收了/r所以就出现你看到情况了。

******************补充****************
对,用cin当然是正确的.因为cin是一个istream的对象这个C++标准库里的类,它是把一切输入都流入这个对象,它每接收一个输入都放在流里,在底层会过滤掉一些没用的输入,它只会用户的有效输入置入变量就是它的工作方式.