[ Foro de C ]
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;
}
}
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.)