getchar y enter

Xisec
07 de Abril del 2010
Buenas, la cosa es que estoy confuso con la función getchar():
hice un programa para probar:
#include <stdio.h>

int main()
{
char letra ;

while(letra != 'z'){

letra = getchar();
if(letra == 'z') printf("Letra introducida: z, cerrando programan");
else printf("Letra introducida: %cn", letra);
}

return 0;
}

y al darle enter para introducir una letra en el momento del getchar, me introducia la letra propia letra enter.

La chapucera solución fue esta:

#include <stdio.h>

int main()
{
char letra ;

while(letra != 'z'){

letra = getchar();
getchar();
if(letra == 'z') printf("Letra introducida: z, cerrando programan");
else printf("Letra introducida: %cn", letra);
}

return 0;
}

poner un getchar mas para que el primera me capture la tecleada, y el 2 la tecla enter.

Cual es la solución "bien resuelta", que no con ese apaño xD

trasgu
07 de Abril del 2010
-Prueba a insertar esta línea justo antes del getchar:
fflush(stdin);//Pone a punto la función getchar liberando la memoria

Xisec
07 de Abril del 2010
Mmm no, no me funciona, será porque al estar antes del getchar limpia la memoria antes de "ensuciarla". xD