注:文章内容来源于网络,真实性有待确认,请自行甄别。
C++中的getchar()或cin大家帮我看看为什么第一次循环
发表于:2024-10-24 00:00:00浏览:14次
问题描述:大家帮我看看为什么第一次循环x=getchar();没执行?而后几次却可以执行?把那句改为 cin;也是同样的效果.
#include <tream>
using namespace std;
int main(){
char s[3][4];
int n;
char x;
cin>>n;
for(;n>0;n--){
cout<<n<<"执行 getchar() 之前"<<endl;
x=大家帮我看看为什么第一次循环x=getchar();没执行?而后几次却可以执行?把那句改为 cin;也是同样的效果.
#include <tream>
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的缓冲区
因为你
cin>>n的时候,你从输入流提取走的只是数字,而没有把'\n'提取走,所以你的
第一个
x = getchar()实际是执行了的,得到了'\n'
你可以在
cin>>n;
之后
cin.clear()清一下缓冲区
我的网站,关于C/C++,C#等编程的,欢迎看看。
栏目分类全部>