Ok L3m0n tiene toda la razon, aun asi el uso bajo windows es bastante comun aun cuando lo recomendable sea usar funciones de la API del sistema; no obstante si en el manual de Gaudy sale el ejemplo no esta de mas probarlo no? (eso si, lee la letra pequeña, no sea que ponga que no sirve para linux)
Por si acaso no has encontrado ninguna solucion, esta es la que parece mas fiable:
Código:
//en vez de llamar a fflush lanzas este bucle
while((ch = getchar()) != '\n' && ch != EOF);
(por ahi encontraras también la version para c++ con cin.get() como traduccion del getchar). La razon de este comportamiento puedes encontrarla en cualquier manual de referencia de C (copio y pego, esta en ingles):
Código:
int fflush(FILE *ostream);
ostream points to an output stream or an update stream in which the
most recent operation was not input, the fflush function causes any
unwritten data for that stream to be delivered to the host environment to
be written to the file; otherwise, the behavior is undefined.
La explicacion es clara, solo es fiable para flujos de salida.
"...que la empresa (sea quien sea que haya inventado C)..."
Solo a modo de comentario, parece ser que C fue desarrollado por Dennis M. Ritchie en Bell Labs, y puedes encontrar el manual de referencia por ejemplo aquí [URL="http://www.gnu.org/software/libc/manual/html_mono/libc.html"]http://www.gnu.org/software/libc/manual/html_mono/libc.html[/URL] (que por cierto no comenta lo del fflush)
nota: todo el contenido de este post puedes encontrarlo en altavista :)
Saludos
vosk