ungetc, ungetwc

Символ отправляет обратно в поток.

int ungetc(
   int c,
   FILE *stream 
);
wint_t ungetwc(
   wint_t c,
   FILE *stream 
);

Параметры

  • c
    Символ, который требуется отправлять.

  • stream
    [in] Указатель на структуру FILE.

Возвращаемое значение

В случае успеха каждая из этих функций возвращает аргумент c символов . Если c не может отправлять обратно или если символ не указанной входной поток, возвращаемых и ungetc возвращает EOF; ungetwc возвращает WEOF.Если stream имеет значение NULL, то обработчик вызывается недопустимого параметра, как описано в разделе Проверка параметров.Если среда выполнения может продолжить, EOF или WEOF возвращаются и для параметра errno установлено значение EINVAL.

Дополнительные сведения об этих и других кодах ошибок см. в разделе _doserrno, errno, _sys_errlist и _sys_nerr.

Заметки

Функция ungetc помещает символ c обратно в stream и удаляет индикатор элемент - файла.Поток должен быть открыт для чтения.Последующая операция чтения на запускает stream с c*.* Попытка пропускается при принудительной отправке EOF на потока с помощью ungetc.

Символы, помещенные в потоке ungetc могут быть стерты при вызове, fflush, fseek, fsetpos или rewind, прежде чем символ прочитан из потока.Индикатор позиции файла будет иметь значение он имел до символы, переданных обратно.Внешнее запоминающее устройство, соответствующая поток остается неизменным.При успешном вызове метода ungetc для текстового потока, индикатор позиции файла не указано, пока не считываются или отменены все символы, переданные клиенту.При каждом успешном вызове метода ungetc для двоичного потока, уменьшается индикатор позиции файла; если его значение равно 0, то, прежде чем вызов, значение не определен после вызова.

Результаты непредсказуемы, если метод ungetc вызывается дважды без операции прочитанной или файлов размещения 2 между вызовами.После того, как вызов метода fscanf, вызов ungetc может завершиться неудачей, если другая операция чтения (например, getc) не будет выполняться.Это происходит потому, что fscanf - вызывает ungetc.

версия ungetwc является ungetc.Однако при каждом успешном вызове метода ungetwc для текста или двоичного потока, значение индикатора позиции файла неспецифицированно до тех пор, пока не считываются или отменены все символы, переданные клиенту.

Эти функции конфиденциальные данные потокобезопасного и блокировки во время выполнения.Для не блокирован версии см. в разделе _ungetc_nolock, _ungetwc_nolock.

Универсальное текстовое сопоставление функций

Функция TCHAR.H

неопределенные _UNICODE & _MBCS

определенные _MBCS

Определение _UNICODE

_ungettc

ungetc

ungetc

ungetwc

Требования

Функция

Требуемый заголовок

ungetc

<stdio.h>

ungetwc

<stdio.h> или <wchar.h>

Консоль не поддерживается в приложениях Магазина Windows.Стандартные дескрипторы потока, связанные с консолью, stdin, stdout и stderr, необходимо перенаправить до функции C времени выполнения могут использовать их в приложениях Магазина Windows.Дополнительные сведения о совместимости см. в разделе Совместимость во введении.

Пример

// crt_ungetc.c
// This program first converts a character
// representation of an unsigned integer to an integer. If
// the program encounters a character that is not a digit,
// the program uses ungetc to replace it in the  stream.
//

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

int main( void )
{
   int ch;
   int result = 0;

   // Read in and convert number:
   while( ((ch = getchar()) != EOF) && isdigit( ch ) )
      result = result * 10 + ch - '0';    // Use digit.
   if( ch != EOF )
      ungetc( ch, stdin );                // Put nondigit back.
   printf( "Number = %d\nNext character in stream = '%c'", 
            result, getchar() );
}
  

Эквивалент в .NET Framework

Неприменимо. Для вызова стандартной функции C используйте PInvoke. Дополнительные сведения см. в разделе Примеры вызовов неуправляемого кода.

См. также

Ссылки

Поток ВВОДА-ВЫВОДА

getc, getwc

putc, putwc