El teclado tiene un buffer. Si tienes un código igual a ese:
Código C:
Ver originalchar variable;
//hasta que la letra no sea un numero cero no se para
while ( ( variable
= getchar() ) != '0'){ }
Lo que ocurre es que getchar se detiene para pedir una letra pero realmente nada impide que metas ahí 100 letras, todas van a parar al bufer.
Lo que pasa es que cuando pulsas enter, como bien sabes la variable char soloalmacena una variable a la vez, y getchar() no lee desde el teclado, sino desde el buffer del teclado, como le metimos 100 letras en el buffer, pues hasta que no lo vacíe sacando una a una no se queda contento el putchar(). XD
O sea... si me pide en la primera linea del bufer: while ( ( variable = getchar() ) != '0'){ ...una letra y le meto 100, el bucle va funcionar 100+1 veces hasta sacar todas las 100 letras char a char del bufer, mas el enter que también se considera un char.
un código para que lo entiendas puede ser este:
Código C:
Ver original#include <stdio.h>
#include <stdlib.h>
int main (){
char variable;
//hasta que la letra no sea un numero cero no se para
while ( ( variable
= getchar() ) != '0'){ }
getchar(); // no te líes que este getchar es solo para pausar y no tiene nada que ver con el bucle XDD return 0;
}
Si pones abcdf te imprimirá eso:
abcdef
a -Bucle yupiiiii
b -Bucle yupiiiii
c -Bucle yupiiiii
d -Bucle yupiiiii
e -Bucle yupiiiii
f -Bucle yupiiiii
-Bucle yupiiiii
El ultimo yupiiiii que no tiene letra es por que pulsaste enter y también se considera una letra pero no es imprimible sino que hace salto de linea y por eso el ultimo enter no va pegado a las demas lineas sino que tiene una linea en blanco entre los anteriores yupiiis XD. Entonces si entras a, b, c, d, e, f y pulsas enter harás 7 yupis tendras un espacio y luego un yupi ahi to misterioso jaja.
Ese bucle te sirve para vaciar el bufer, y incluso es mejor que fflush si le das unos retoques. XD
Espero que te sirva