De latín nada jejeje. A mi me pasaba lo mismo. Me lo dijeron en el irc creo o en algún foro y me dieron la explicación pero ahora mismo no me acuerdo. Tenía algo que ver con lo que te han dicho sobre hacer el flush y todo eso. Desde luego tiene que ver sobre la forma en que funciona internamente scanf, pero como ya te he dicho ahora mismo ni idea. Siento no poder ayudarte más :(. Saludos.
Gracias, he estado investigando, y al parecer, es la instrución scanf() la que estropea la siguiente getchar(). Si corremos este programa: #include <stdio.h> int N; int a; float dato; char respuesta1,respuesta2,respuesta3; void main(void){ printf("mete un float\n"); scanf("%f",&dato); printf("has metido : %f\n",dato); printf("ahora los getchar\n"); respuesta1=getchar(); respuesta2=getchar(); respuesta3=getchar(); printf("caracter1: %c caracter2: %c caracter3: %c \n",respuesta1,respuesta2,respuesta3); exit(0); } obtenemos el resultado inesperado siguiente. Al parecer, el retorno de carro que se mete al introducir el dato en scanf(), lo toma el primer getchar(): [EMAIL PROTECTED]:~/ARCHIVOS_IMPORTANTES/NEC2linux/makenec$ ./copia.exe mete un float 3.14 has metido : 3.140000 ahora los getchar abc caracter1: caracter2: a caracter3: b se me ocurrió meter un espacio en la instrucción scanf y ahora va correctamente, aunque el mensaje sale despues de meter los datos......sigo sin entender... ?¿?¿?¿? :-\ #include <stdio.h> int N; int a; float dato; char respuesta1,respuesta2,respuesta3; void main(void){ printf("mete un float\n"); scanf("%f",&dato); printf("has metido : %f\n",dato); printf("ahora los getchar\n"); respuesta1=getchar(); respuesta2=getchar(); respuesta3=getchar(); printf("caracter1: %c caracter2: %c caracter3: %c \n",respuesta1,respuesta2,respuesta3); exit(0); } [EMAIL PROTECTED]:~/ARCHIVOS_IMPORTANTES/NEC2linux/makenec$ ./copia.exe mete un float 3.14 abc has metido : 3.140000 ahora los getchar caracter1: a caracter2: b caracter3: c Me han recomendado suscribirme a [EMAIL PROTECTED], a ver si allí alguien me da solución a esto. Gracias.