Algo sencillo....caracteres

angelu55
21 de Mayo del 2004
Mi pregunta siguiente es muy sencilla y tal ves se les haga tonta pero voy empezando en este lenguaje y no he encontrado en ningun manual lo siguiente:
Por que dentro de cualquier ciclo no me es posible leer caracteres y fuera de ellos si??
ejemplo:
printf("n caracter: ");
car=getchar(); /*si me lo permite*/
if(car!=110){
printf("n otro caracter: ");
c=getchar();/*se salta esa sentencia*/
}

y es lo mismo con cualquier formato para leer
ya sea scanf o getchar() con e unico que me permite es con getch(), a que se debe esto???


Alejandro_
21 de Mayo del 2004
Hola;

Este tema ya fue tratado varias veces en el foro, aunque no es fácil encontrarlo, sobre todo si en el Asunto se escribe ¡Ayuda! Socorrrro! , y cosas por el estilo, que aunque resultan muy conmovedoras, no dicen de qué se trata.

Aquí el tema es que la entrada y salida por consola es de tipo *buferada*, lo que significa que el último carácter leido permanece en el buffer de entrada, y se vuelve a leer en la segunda llamada a getchar(); de modo que si el la primera llamada se lee una A, en la segunda también. Para evitar esto es necesario *barrer* el buffer de entrada, y para eso está la función fflush(), que tomo como parámetro un puntero de tipo FILE, que en este caso es stdin (flujo de entrada estándar).

Entonces, antes de leer el nuevo carácter tendrás que poner:

fflush(stdin);


Alejandro