共用方式為


_ungetch、_ungetwch、_ungetch_nolock、_ungetwch_nolock

推回從主控台讀取的最後一個字元。

重要

這個應用程式開發介面不能用於 Windows 執行階段執行的應用程式。如需詳細資訊,請參閱 /ZW 不支援 CRT 函式

int _ungetch(
   int c 
);
wint_t _ungetwch(
   wint_t c 
);
int _ungetch_nolock(
   int c 
);
wint_t _ungetwch_nolock(
   wint_t c 
);

參數

  • c
    待推回的字元。

傳回值

如果成功,則兩個函式傳回字元 c 。 如果有錯誤, _ungetch 傳回 EOF 的值,並且 _ungetwch會傳回WEOF。

備註

這些函式會將字元 c 推回主控台,讓 c 成為 _getch 或 _getche 下一個要讀取的字元 (或_getwch,或_getwche)。 如果在下一個讀取前呼叫超過一次,則 _ungetch 和 _ungetwch 會失敗。 c 引數不可以是 EOF (或 WEOF)。

有 _nolock 結尾的版本是相同的,除非它們受到其他執行緒干擾。 因為它們不會造成鎖定其他執行緒的額外負荷,所以會比較快。 這些函式只能用在安全執行緒內容 (例如單一執行緒應用程式) 或呼叫範圍已經處理執行緒隔離的地方。

一般文字常式對應

TCHAR.H 常式

未定義 _UNICODE & _MBCS

已定義 _MBCS

已定義 _UNICODE

_ungettch

_ungetch

_ungetch

_ungetwch

_ungettch_nolock

_ungetch_nolock

_ungetch_nolock

_ungetwch_nolock

需求

常式

必要的標頭

_ungetch, _ungetch_nolock

<conio.h>

_ungetwch, _ungetwch_nolock

<conio.h> 或 <wchar.h>

如需其他相容性資訊,請參閱相容性

範例

// crt_ungetch.c
// compile with: /c
// In this program, a white-space delimited 
// token is read from the keyboard. When the program 
// encounters a delimiter, it uses _ungetch to replace 
// the character in the keyboard buffer.
//

#include <conio.h>
#include <ctype.h>
#include <stdio.h>

int main( void )
{
   char buffer[100];
   int count = 0;
   int ch;

   ch = _getche();
   while( isspace( ch ) )      // Skip preceding white space.
      ch = _getche();
   while( count < 99 )         // Gather token.
   {
      if( isspace( ch ) )      // End of token.
         break;
      buffer[count++] = (char)ch;
      ch = _getche();
   }
   _ungetch( ch );            // Put back delimiter.
   buffer[count] = '\0';      // Null terminate the token.
   printf( "\ntoken = %s\n", buffer );
}
  

請參閱

參考

主控台和連接埠 I/O

_cscanf、_cscanf_l、_cwscanf、_cwscanf_l

_getch、_getwch