次の方法で共有


_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 );
}
  

参照

関連項目

コンソール入出力とポート入出力

_cscanf、_cscanf_l、_cwscanf、_cwscanf_l

_getch、_getwch