Share via


ungetc, ungetwc

Inserta una reproducción de caracteres sobre la secuencia.

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

Parámetros

  • c
    Carácter que se va a insertar.

  • stream
    Puntero a la estructura de FILE.

Valor devuelto

Si es correcto, cada una de estas funciones devuelve el argumento c de caracteres . Si c no puede ser echado retroceso o si no se ha leído ningún carácter, el flujo de entrada no cambia y ungetc devuelve EOF; ungetwc devuelve WEOF.Si stream es NULL, se invoca el controlador no válido de parámetro, tal y como se describe en Validación de parámetros.Si la ejecución puede continuar, se devuelve EOF o WEOF y errno se establece en EINVAL.

Para obtener información sobre éstos y otros códigos de error, vea _doserrno, errno, _sys_errlist, y _sys_nerr.

Comentarios

La función de ungetc inserta la reproducción de c de caracteres sobre stream y borra la marca de fin de archivo.La secuencia debe estar abierto para lectura.Una operación de lectura subsiguiente de stream comienza con c*.* Se omite un intenta insertar EOF sobre la secuencia usando ungetc.

Los caracteres incluidos en la secuencia por ungetc pueden ser borrados si se llama fflush, fseek, fsetpos, o rewind antes del carácter se lee de la secuencia.El indicador del archivo (el archivo posición tendrá el valor que tenía antes de que los caracteres fueran echados versiones anteriores.El almacenamiento externo correspondiente a la secuencia no cambia.En una llamada correcta de ungetc en una secuencia de texto, el indicador del archivo (el archivo posición está sin especificar hasta que se lean o se descarten todos los caracteres echados versiones anteriores.En cada llamada correcta de ungetc en una secuencia binaria, se reduce el indicador del archivo (el archivo posición; si el valor fuera 0 antes de que una llamada, el valor es undefined después de la llamada.

Los resultados son imprevisibles si ungetc se llama dos veces sin una lectura u operación del archivo (el archivo posición entre las dos llamadas.Después de una llamada a fscanf, una llamada a ungetc puede generar un error a menos que se haya realizado una operación de lectura (como getc).Esto es porque fscanf propio llama ungetc.

ungetwc es una versión con caracteres anchos de ungetc.Sin embargo, en cada llamada correcta de ungetwc con un texto o una secuencia binaria, el valor del marcador del archivo (el archivo posición está sin especificar hasta que se lean o se descarten todos los caracteres echados versiones anteriores.

Estas funciones son datos confidenciales seguros para subprocesos y de bloqueo durante la ejecución.Para una versión de modificación limitada de interpretación, vea _ungetc_nolock, _ungetwc_nolock.

Asignaciones de la rutina de Genérico- texto

Rutina de TCHAR.H

_UNICODE y _MBCS no definidos

_MBCS definido

_UNICODE definido

_ungettc

ungetc

ungetc

ungetwc

Requisitos

Rutina

Encabezado necesario

ungetc

<stdio.h>

ungetwc

<stdio.h> o <wchar.h>

La consola no se admite en las aplicaciones de Tienda Windows.Los identificadores estándar de la secuencia asociados a la consola, stdin, stdout, y stderr, deben redirigir antes de que las funciones en tiempo de ejecución de C pueden utilizarlos en las aplicaciones de Tienda Windows.Para obtener información adicional de compatibilidad, vea Compatibilidad en la Introducción.

Ejemplo

// 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() );
}
  

Equivalente en .NET Framework

No es aplicable Para llamar a la función estándar de C, utilice PInvoke. Para obtener más información, vea La invocación de plataforma ejemplos.

Vea también

Referencia

E/S de la secuencia

getc, getwc

putc, putwc