_ungetch、_ungetwch、_ungetch_nolock、_ungetwch_nolock
コンソールから読み取った最後の文字を押し戻します。
重要 |
---|
この API は、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を返します。
解説
これらの関数は _getch して _getche キーを押します (または_getwch または_getwche) 読み取り次の文字に c が発生すると、コンソールに文字を c。次の前に対して何度も呼び出されると_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> |
互換性の詳細については、「C ランタイム ライブラリ」の「互換性」を参照してください。
使用例
// 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 );
}