¿Alguien me puede explicar el propósito de ungetch? Esto es de K & R capítulo 4 donde crea una Calculadora polaca inversa.¿Cuál es el propósito de ungetc (o ungetch de K & R)?
He ejecutado el programa sin la llamada para deshacer y en mis pruebas todavía funciona igual.
int getch(void) /* get a (possibly pushed back) character */
{
if (bufp > 0)
{
return buf[--bufp];
}
else
{
return getchar();
}
}
void ungetch(int c) /* push character back on input */
{
if (bufp >= BUFSIZE)
{
printf("ungetch: too many characters\n");
}
else
{
buf[bufp++] = c;
}
}
(He quitado el operador ternario en getch para hacerlo más claro.)
Muchas gracias. Tiene mucho más sentido ahora. – Tyler
Aunque podría ser sólo una semántica, ungetc le permite "empujar hacia atrás" un carácter después de leerlo para volver a leerlo en la siguiente lectura. Eso no es lo mismo que echar un vistazo, lo que implica una lectura sin consumo. –
Sí, peek es equivalente a getc seguido de ungetc. –