Tema: Do while
Ver Mensaje Individual
  #5 (permalink)  
Antiguo 05/12/2008, 20:09
PCKing
 
Fecha de Ingreso: febrero-2006
Mensajes: 49
Antigüedad: 18 años, 3 meses
Puntos: 1
Respuesta: Do while

Buenasss

Cita:
Iniciado por Alzanea
Segun tengo entendido cuando guardamos caracteres también se guardan los intros que pulsamos por teclado en el buffer, pero la expresion *** BORRA_BUFFER while(getchar() != '\n' *** ,segun como la leo, parece indicar que limpie el buffer mientras los caracteres que tomemos sean distintos de un salto de linea. ¿Me podrías explicar un poco cómo funciona esta macro?.
Para entender como funciona la macro primero hay que entender bien como funciona el scanf. Esta funcion tiene muchas partes importantes, vamos a las que vienen al caso nomás. Cuando vos pedis que tome un entero del teclado, el scanf va a tomar caracteres de la entrada mientras sean numericos para "armar" el entero que dejará en el puntero recibido. Cuando viene algo distinto de un numero, corta la "absorción" de caracteres, o sea que si despues del numero insertaste algo queda en el buffer, y esos caracteres sobrantes van a ser enviados al próximo scanf, getchar(), etc. que aparezca, y como estas en un loop....entendes?

El borra buffer va a tomar todos los caracteres de mas que pusiste y los va a desechar, cuando llegue el enter sale del while, pero el enter lo saca del buffer, porque primero se hace el getchar() (lo saca del buffer) y despues se compara con \n.

Espero que haya quedado claro, sino cualquier cosa preguntá.

Saludos