user-0 提问: 用getch()时如何清除输入缓冲

回复:
user: user-0
content: 引用 6 楼 renwotao2009 的回复:[quote=引用 3 楼 zl_123_ads 的回复:] [quote=引用 1 楼 renwotao2009 的回复:] 调用flush强刷 试了，不行[/quote]stdio中的clear();方法[/quote] clear()是清除错误标记的吧。。

user: user-0
content: 引用 7 楼 qq423399099 的回复:在Linux下清空stdin用两种方法： 1.通过读取剩余的字符并丢弃掉； char ch; while((ch=getchar())!='/n'&&ch!=EOF); 2.使用函数setbuf(stdin,NULL); 这两个方法都不行，

user: user-0
content: 引用 8 楼 zhao4zhong1 的回复:int k; while (1) {  if (kbhit()) {   k=getch();   if (0==k || 0xE0==k) k=k<<8|getch();  } else break; }  可以了。谢谢。

user: user-1
content: int k; while (1) {  if (kbhit()) {   k=getch();   if (0==k || 0xE0==k) k=k<<8|getch();  } else break; }

user: user-2
content: 在Linux下清空stdin用两种方法： 1.通过读取剩余的字符并丢弃掉； char ch; while((ch=getchar())!='/n'&&ch!=EOF); 2.使用函数setbuf(stdin,NULL);

user: user-3
content: 引用 3 楼 zl_123_ads 的回复:[quote=引用 1 楼 renwotao2009 的回复:] 调用flush强刷 试了，不行[/quote]stdio中的clear();方法

user: user-4
content: #include <stdio.h>         int fflush(FILE *stream);

user: user-0
content: 引用 1 楼 renwotao2009 的回复:调用flush强刷 试了，不行

user: user-0
content: 引用 2 楼 lgbxyz 的回复:VS 可以用flush(stdin)清除不想要的回车等字符; linux 下不可以。 试了不行

user: user-4
content: VS 可以用flush(stdin)清除不想要的回车等字符; linux 下不可以。

user: user-3
content: 调用flush强刷

user: user-1
content: 查MSDN是Windows程序员必须掌握的技能之一。  _getch, _getche Get a character from the console without echo (_getch) or with echo (_getche).  int _getch( void );  int _getche( void );  Routine Required Header Compatibility  _getch <conio.h> Win 95, Win NT  _getche <conio.h> Win 95, Win NT    For additional compatibility information, see Compatibility in the Introduction.  Libraries  LIBC.LIB Single thread static library, retail version  LIBCMT.LIB Multithread static library, retail version  MSVCRT.LIB Import library for MSVCRT.DLL, retail version    Return Value  Both _getch and _getche return the character read. There is no error return.  Remarks  The _getch function reads a single character from the console without echoing. _getche reads a single character from the console and echoes the character read. Neither function can be used to read CTRL+C. When reading a function key or an arrow key, _getch and _getche must be called twice; the first call returns 0 or 0xE0, and the second call returns the actual key code.  Example   /* GETCH.C: This program reads characters from  * the keyboard until it receives a 'Y' or 'y'.  */  #include <conio.h> #include <ctype.h>  void main( void ) {    int ch;     _cputs( "Type 'Y' when finished typing keys: " );    do    {       ch = _getch();       ch = toupper( ch );    } while( ch != 'Y' );     _putch( ch );    _putch( '\r' );    /* Carriage return */    _putch( '\n' );    /* Line feed       */ }   Output  Type 'Y' when finished typing keys: Y   Console and Port I/O Routines  See Also   _cgets, getc, _ungetch

user: user-3
content: 引用 8 楼 zhao4zhong1 的回复:int k; while (1) {  if (kbhit()) {   k=getch();   if (0==k || 0xE0==k) k=k<<8|getch();  } else break; } 0xE0表示什么，请教赵老师？？？

user: user-3
content: 引用 11 楼 zl_123_ads 的回复:[quote=引用 6 楼 renwotao2009 的回复:] [quote=引用 3 楼 zl_123_ads 的回复:] [quote=引用 1 楼 renwotao2009 的回复:] 调用flush强刷 试了，不行[/quote]stdio中的clear();方法[/quote] clear()是清除错误标记的吧。。[/quote]清除标记，还是C++的