C ++ ungetc () - Biblioteca estándar de C ++

La función ungetc () en C ++ empuja el carácter leído previamente a la secuencia para que pueda leerse nuevamente.

La función ungetc () se define en el archivo de encabezado.

ungetc () prototipo

 int ungetc (int ch, FILE * stream);

La función ungetc () empuja el carácter ch de regreso al búfer asociado con el flujo de archivos a menos que ch sea igual a EOF. Si ch es igual a EOF, la operación falla y no hay cambios en la secuencia.

Las llamadas a ungetc () pueden fallar si se llama más de una vez sin ninguna operación de lectura o reposicionamiento en el medio.

Si una llamada a ungetc () tiene éxito, se borra el indicador de fin de estado de archivo feof.

Para transmisiones binarias, una llamada exitosa a ungetc reduce el indicador de posición de transmisión en uno. Si el indicador de posición de la corriente es cero, el comportamiento es indeterminado.

Para el flujo de texto, una llamada exitosa a ungetc modifica el indicador de posición del flujo de una manera no especificada. Pero está garantizado que después de recuperar todos los caracteres rechazados con una operación de lectura, el indicador de posición de la secuencia es igual a su valor antes de llamar a ungetc ().

Parámetros ungetc ()

  • ch: El personaje que se va a rechazar.
  • stream: Flujo de archivo donde el personaje es rechazado.

ungetc () Valor de retorno

  • Si tiene éxito, la función ungetc () devuelve el carácter ch.
  • En caso de falla, EOF se devuelve sin cambiar la secuencia.

Ejemplo: ¿Cómo funciona la función ungetc ()?

 #include #include #include using namespace std; int main() ( int c; long value = 0; char str() = "101axc"; FILE *fp = fopen("file.txt", "r+"); fputs(str,fp); rewind(fp); while(1) ( c = fgetc(fp); if (isdigit(c)) value = value*10 + c - '0'; else break; ) ungetc(c, fp); cout << "Value = " << value << endl; fclose(fp); return 0; )

Cuando ejecute el programa, una posible salida será:

 Valor = 101

Articulos interesantes...