[ Foro de C ]

¿Se puede usar getchar() o similar sin borrar el caractér del buffer?

15-Jul-2020 05:18
Invitado (Paolitros)
1 Respuestas

Necesito permitirle al usuario ingresar una matriz una fila a la vez,  y cuando ingrese $ significa que la matriz está lista y desean continuar. Hice este código, pero el getchar() que revisa si el usuario ingresó $ me borra el primer dígito de cada número, ¿hay alguna forma de usar getchar sin que se borre el caractér del buffer?


for (int dato = 0;dato<400;dato++) {
    scanf("%i", &Matriz1[fila][dato]);
if (getchar() == '\n') {
      fila++;
    }
if (getchar() == '$') {
break;
    }
  }


 


17-Jul-2020 00:17
Invitado (Iscariote)

Puedes usar a función ungetc. Su firma es esta:
int ungetc(char c, FILE *stream);

Una forma de usarlo es:


char c;
c = getchar();
// hacer algo con c
ungetc(c, stdin);
// ahora el carácter c volverá a ser el primer en stdin.


Muy a tener en cuenta:
- Sólo se debe regresar el carácter previamente extraído.

La función regresa el caracter c si tiene éxito o EOF si falla.






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)