SoloCodigo

Programación General => C/C++ => Mensaje iniciado por: ichigo15 en Martes 6 de Noviembre de 2007, 13:26

Título: Alternativas Al Fflush Para Linux
Publicado por: ichigo15 en Martes 6 de Noviembre de 2007, 13:26
En windows, para limpiar el buffer (tanto el de salido, como el de entrada y el de errores) tenemos el fflush.

En linux, de momento utilizo el getchar, pero es un poco lio, porque tengo que utilizarlo despues de leer numeros y que lo que venga no sea un numero, o entre cadena y cadena, etc.

¿que es lo mas parecido que hay al fflush para linux?, ¿tengo que bajarme alguna libreria no estandar?
Título: Re: Alternativas Al Fflush Para Linux
Publicado por: Karman en Martes 6 de Noviembre de 2007, 13:40
Es la única forma... pero podés usar algo como esto:

void clrbuf(void){
  while( getch()!='\n' );
}

S2
Título: Re: Alternativas Al Fflush Para Linux
Publicado por: su - en Martes 6 de Noviembre de 2007, 21:28
Falso!!!!

fflush() es ANSI C (http://en.wikipedia.org/wiki/Fflush)
Título: Re: Alternativas Al Fflush Para Linux
Publicado por: Eternal Idol en Martes 6 de Noviembre de 2007, 21:41
Cita de: "su -"
Falso!!!!

fflush() es ANSI C (http://en.wikipedia.org/wiki/Fflush)
Si, PERO si seguis leyendo ese mismo enlace:
It should be use for output streams only; otherwise the behavior is undefined.

Agrego: En Windows funciona con cualquier stream (objetos de archivos al fin de cuentas en Windows NT) al terminar llamando a la funcion FlushFileBuffers de la API de Windows.
Título: Re: Alternativas Al Fflush Para Linux
Publicado por: su - en Martes 6 de Noviembre de 2007, 22:08
Ooops, cierto... que pena  :nosweat:
Aunque para input (STDIN) si hay forma... (ver termios.h) para ser mas exactos tcflush()... creo  :blink:

UPDATE:

Ahora veo algo interesante... sera que setbuf servira?
Código: Text
  1. setbuf(stdout, (char *) 0);
  2.  
Pero para stderr y otros?