#include<iostream>
using namespace std;
int main(int argc,char* args)
{
int i;
cin>>i;
cout<<i;
//fflush(stdin);
cout<<"input a string 9 member";
char str[10];
// cout<<endl;
gets(str);
cout<<str;
getchar();
}
运行这段程序时,cout>>i;正常,也打印出enter string,但 gets(s);没有反应,直接就结束了。
问题解决方法:
cin的带缓冲,因为在cin>>i时候,末尾以回车结束,输入的内容存在反冲区中包括回车符号。cout<<i时输出反冲区的内容,但遗留下回车。同样gets(s)也是以回车结束。所以在上面程序中它遇到的第一个字符就是刚才的回车符浩,所以就什么都没有读入就结束。解决方法:
在gets(s)前刷新输入缓冲区
在cout>>i后gets(s)前加
fflush(stdin);
或者加一个cout<<endl;清空反冲区 ;