_ungetch、 _ungetwch、 _ungetch_nolock、 _ungetwch_nolock
推回從主控台讀取的最後一個字元。
重要
這個 API 不能用於 Windows 執行階段執行的應用程式。如需詳細資訊,請參閱 CRT 函式不支援使用 /ZW。
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> |
如需其他相容性資訊,請參閱入門介紹中的 相容性 (Compatibility) 。
範例
// 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 );
}