首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

缓冲区清空有关问题

2012-02-15 
缓冲区清空问题如下代码#include stdio.h#include iostream.hvoidmain(){inti,j,kinta[4]for(i0i

缓冲区清空问题
如下代码
#include <stdio.h>
#include <iostream.h>
void   main(){
int   i,j,k;
int   a[4];
for(i=0;i <4;i++)
cin> > a[i];
cout < < "输入j,k " < <endl;
cin> > j;
cin> > k;
cout < < "j= " < <j < < "   k= " < <k < <endl;;
}
如果我输入:1   2   3   4   5   6   中间用空格隔开,回车,j,k就已经自动赋值为5,6,但是我想在输出 "输入j,k "后再输入j,k的值,也就是在给数组赋完值后,清空一下后面多余的内容.请问如何做,听说有个函数fflush可以,但试了多次也不管用,希望高手指点一下.

[解决办法]
刚测试了下,C中用这样的方法是可以的,不晓得C++中这个cin> > 输入流是怎么处理的。。。
代码如下:

#include <stdio.h>
void main(){
int i,j,k;
int a[4];
for (i=0; i <4; i++)
scanf( "%d ", &a[i]);
fflush(stdin);
printf( "输入j,k\n ");
scanf( "%d ", &j);
scanf( "%d ", &k);
printf( "j=%d k=%d\n ", j, k);
}
[解决办法]
fflush函数在c++中是未定义的

#include <stdio.h>
#include <iostream.h>

void main()
{
int i,j,k;
int a[4];

j = k = 0;

for(i=0;i <4;i++)
cin> > a[i];

cin.sync(); // 清空

cout < < "输入j,k " < <endl;

cin> > j;
cin> > k;

cout < < "j= " < <j < < " k= " < <k < <endl;;
}

[解决办法]
#include <iostream>
#include <cstdlib>
#include <cstdio>

using namespace std;

int main( void )
{
int i,j,k;
int a[4];
for(i=0;i <4;i++)
cin> > a[i];

char tmp; //辅助空间
cin.get(tmp); //读取内容
while(tmp!= '\n ')cin.get(tmp); //判断,循环读取所有的剩余内容
cin.clear(); //清除一下cin标记,不clear问题也不大

cout < < "输入j,k " < <endl; //OK
cin> > j;
cin> > k;
cout < < "j= " < <j < < " k= " < <k < <endl;

return 0;
}

热点排行