Re: [Fwd: Re: fflush(stdin) no limpia por que??]

2002-07-02 Por tema Esteban Garcia Cuesta
On 1 Jul 2002, puskas wrote:

> Yo también encuentro el mismo problema, en entornos dos/win me funciona
> de maravilla pero en linux me suele dar problemas... hay otra función
> que sirve para lo mismo (tienen algunas diferencias pero a nosotros nos
> vale ;-)) Se llama fpurge y el funcionamiento es el mismo... No se la
> versión de gcc que tienes pero en la mía he encontrado ésto haciendo el
> man fpurge...
>  
> NAME
>fpurge, __fpurge - purge a stream
> 
> SYNOPSIS
>/* unsupported */
>#include 
> 
>int fpurge(FILE *stream);
> 
>/* supported */
>#include 
>#include 
>  
>void  __fpurge(FILE *stream);

Muchas gracias, he probado esta segunda opcion y funciona bien, lo del
fflush (stdin) yo lo habia utilizado en windows sin problemas pero aqui
pues no. 

Pues na, muchas gracias de nuevo.
Esteban.

>  
> Como verás la primera no está soportada, pero la segunda la he probado y
> me va de maravilla,...
> 
> SUERTE.(y a hacer muchos __fpurge(stdin) ;-))
>  
> > El lun, 01-07-2002 a las 22:32, Esteban Garcia Cuesta escribió:
> > Hola, 
> >   Estoy usando la funcion de fflush (stdin)para limpiar el buffer de
> > entrada, pero parece que no hace nada. Lo tengo puesto justo antes de un
> > getchar() y este me coge basura, sin quedarse a la espera por teclado que
> > es lo que deberia hacer si el buffer esta vacio (ahi esta la utilidad de
> > fflush).
> >   Sabeis porque puede ser? Hace tiempo que no programo en C pero no
> > recuerdo que esto me pasara.
> >Muchas gracias 
> > Esteban.
> >  
> >  
> >  
> > -- 
> > To UNSUBSCRIBE, email to [EMAIL PROTECTED]
> > with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]
> 
> -- 
> Grandes desastres de la historia: HIROSHIMA 45, CHERNOBIL 86 Y WINDOWS
> 95
> Win'95: Unknown Error: The system was working right.
> 
> 
> -- 
> To UNSUBSCRIBE, email to [EMAIL PROTECTED]
> with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]
> 


--
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]



Re: fflush(stdin) no limpia por que??

2002-07-02 Por tema Carles Pina i Estany

Hola,

fflush más bien es para descriptores de salida si me acuerdo bien, para
descriptores de entrada tiene un comportamiento "inesperado" (en solaris
hace lo que supones que debería hacer)

Una chapuza como una casa "made in my university":

static void fflush() {
   fflush(stdout);
   stdin->_IO_read_ptr = stdin->_IO_read_base;
   stdin->_IO_read_end = stdin->_IO_read_base;
   fflush(stdin);
}

no "sincroniza", sinó que si lo miras bien y sigues las estructuras por la
libc y demás mueve los punteros a saco y se carga lo que pille del stdin

Funcionar funciona... pero mejor usar ncurses :-)


On Mon, 1 Jul 2002, Esteban Garcia Cuesta wrote:

> Hola,
>   Estoy usando la funcion de fflush (stdin)para limpiar el buffer de
> entrada, pero parece que no hace nada. Lo tengo puesto justo antes de un
> getchar() y este me coge basura, sin quedarse a la espera por teclado que
> es lo que deberia hacer si el buffer esta vacio (ahi esta la utilidad de
> fflush).
>   Sabeis porque puede ser? Hace tiempo que no programo en C pero no
> recuerdo que esto me pasara.
>Muchas gracias
>   Esteban.
>
>
>
> --
> To UNSUBSCRIBE, email to [EMAIL PROTECTED]
> with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]
>


Carles Pina i Estany
[EMAIL PROTECTED] || [EMAIL PROTECTED]
http://pinux.info
http://www.salleURL.edu/~is08139/


--
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]



Re: fflush(stdin) no limpia por que??

2002-07-02 Por tema ^OsIrIs^
Hola,

yo cuando uso algun buffer para vaciarlo uso memset no se si te refieres a
eso, por ejemplo:

memset (buffer,0,1024);

pongo el buffer a 0 con un tamaño de 1024 bytes, yo lo uso para vaciar el
buffer que va a recibir los datos en una conexion utilizando sockets.

No se si te valdra pero bueno queda dicho, si lo consigues comunicalo.

Un saludo.
- Original Message -
From: "Esteban Garcia Cuesta" <[EMAIL PROTECTED]>
To: 
Sent: Monday, July 01, 2002 10:32 PM
Subject: fflush(stdin) no limpia por que??


> Hola,
>   Estoy usando la funcion de fflush (stdin)para limpiar el buffer de
> entrada, pero parece que no hace nada. Lo tengo puesto justo antes de un
> getchar() y este me coge basura, sin quedarse a la espera por teclado que
> es lo que deberia hacer si el buffer esta vacio (ahi esta la utilidad de
> fflush).
>   Sabeis porque puede ser? Hace tiempo que no programo en C pero no
> recuerdo que esto me pasara.
>Muchas gracias
> Esteban.
>
>
>
> --
> To UNSUBSCRIBE, email to [EMAIL PROTECTED]
> with a subject of "unsubscribe". Trouble? Contact
[EMAIL PROTECTED]
>
>


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]



[Fwd: Re: fflush(stdin) no limpia por que??]

2002-07-01 Por tema puskas
Yo también encuentro el mismo problema, en entornos dos/win me funciona
de maravilla pero en linux me suele dar problemas... hay otra función
que sirve para lo mismo (tienen algunas diferencias pero a nosotros nos
vale ;-)) Se llama fpurge y el funcionamiento es el mismo... No se la
versión de gcc que tienes pero en la mía he encontrado ésto haciendo el
man fpurge...
 
NAME
   fpurge, __fpurge - purge a stream

SYNOPSIS
   /* unsupported */
   #include 

   int fpurge(FILE *stream);

   /* supported */
   #include 
   #include 
 
   void  __fpurge(FILE *stream);
 
Como verás la primera no está soportada, pero la segunda la he probado y
me va de maravilla,...

SUERTE.(y a hacer muchos __fpurge(stdin) ;-))
 
> El lun, 01-07-2002 a las 22:32, Esteban Garcia Cuesta escribió:
> Hola, 
>   Estoy usando la funcion de fflush (stdin)para limpiar el buffer de
> entrada, pero parece que no hace nada. Lo tengo puesto justo antes de un
> getchar() y este me coge basura, sin quedarse a la espera por teclado que
> es lo que deberia hacer si el buffer esta vacio (ahi esta la utilidad de
> fflush).
>   Sabeis porque puede ser? Hace tiempo que no programo en C pero no
> recuerdo que esto me pasara.
>Muchas gracias 
>   Esteban.
>  
>  
>  
> -- 
> To UNSUBSCRIBE, email to [EMAIL PROTECTED]
> with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

-- 
Grandes desastres de la historia: HIROSHIMA 45, CHERNOBIL 86 Y WINDOWS
95
Win'95: Unknown Error: The system was working right.


--
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]



Re: [OT] Re: fflush(stdin) no limpia por que??

2002-07-01 Por tema Héctor Andrés Rompato Carricart




Miguel Ángel Vilela escribió::

  On Mon, Jul 01, 2002 at 10:32:14PM +0200, Esteban Garcia Cuesta wrote:
  
  
Hola, 
  Estoy usando la funcion de fflush (stdin)para limpiar el buffer de
entrada, pero parece que no hace nada. Lo tengo puesto justo antes de un
getchar() y este me coge basura, sin quedarse a la espera por teclado que
es lo que deberia hacer si el buffer esta vacio (ahi esta la utilidad de
fflush).
  Sabeis porque puede ser? Hace tiempo que no programo en C pero no
recuerdo que esto me pasara.

  
  
He encontrado esto buscando en devhelp:

Function: int fflush (FILE *stream)
This function causes any buffered output  on stream to be delivered to
the file.

No dice nada de que vacíe el buffer. Si lo que quieres es vaciarlo
creo que tendrás que leerlo hasta que no haya nada que leer. En un
menú que leía números hice lo siguiente para asegurarme de que siempre
leía un número ("%d") y no otra cosa:

char trash[100];
	...
printf ("\n Opción: ");
while (scanf ("%d", &op) != 1) {
  scanf ("%99s", trash);
  printf ("\n La opción %s es incorrecta.", trash);
  printf ("\n Opción: ");
} /* while */

Aprovecho que scanf()  devuelve el número de variables  que ha logrado
leer,  y si  ese número  no es  el esperado  leo el  buffer hasta  que
encuentro un número. 

Creo que si lo que quieres es leer el buffer podrías hacer lo siguiente:

trash char[4096];
...
scanf ("%4095s", trash);
getchar ();

Saludos :-)
  

fflush(stdin) debería funcionar sin problemas para borrar el buffer, es lo
que dice el manual y yo lo he utilizao sin problemas.

-- 
  Héctor Andrés Rompato Carricart <[EMAIL PROTECTED]>
  Coordinador técnico
  COVIARES S.A. -- Autopista La Plata - Buenos Aires
  Gerencia de equipos y sistemas

  Av. España y Autopista, Quilmes (1878)
  Buenos Aires, Argentina







-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]



Re: fflush(stdin) no limpia por que??

2002-07-01 Por tema Juan Carlos Guijarro

man fflush

Esteban Garcia Cuesta wrote:

Hola, 
 Estoy usando la funcion de fflush (stdin)para limpiar el buffer de

entrada, pero parece que no hace nada. Lo tengo puesto justo antes de un
getchar() y este me coge basura, sin quedarse a la espera por teclado que
es lo que deberia hacer si el buffer esta vacio (ahi esta la utilidad de
fflush).
 Sabeis porque puede ser? Hace tiempo que no programo en C pero no
recuerdo que esto me pasara.
  Muchas gracias 
	Esteban.








--
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]



[OT] Re: fflush(stdin) no limpia por que??

2002-07-01 Por tema Miguel Ángel Vilela
On Mon, Jul 01, 2002 at 10:32:14PM +0200, Esteban Garcia Cuesta wrote:
> Hola, 
>   Estoy usando la funcion de fflush (stdin)para limpiar el buffer de
> entrada, pero parece que no hace nada. Lo tengo puesto justo antes de un
> getchar() y este me coge basura, sin quedarse a la espera por teclado que
> es lo que deberia hacer si el buffer esta vacio (ahi esta la utilidad de
> fflush).
>   Sabeis porque puede ser? Hace tiempo que no programo en C pero no
> recuerdo que esto me pasara.

He encontrado esto buscando en devhelp:

Function: int fflush (FILE *stream)
This function causes any buffered output  on stream to be delivered to
the file.

No dice nada de que vacíe el buffer. Si lo que quieres es vaciarlo
creo que tendrás que leerlo hasta que no haya nada que leer. En un
menú que leía números hice lo siguiente para asegurarme de que siempre
leía un número ("%d") y no otra cosa:

char trash[100];
...
printf ("\n Opción: ");
while (scanf ("%d", &op) != 1) {
  scanf ("%99s", trash);
  printf ("\n La opción %s es incorrecta.", trash);
  printf ("\n Opción: ");
} /* while */

Aprovecho que scanf()  devuelve el número de variables  que ha logrado
leer,  y si  ese número  no es  el esperado  leo el  buffer hasta  que
encuentro un número. 

Creo que si lo que quieres es leer el buffer podrías hacer lo siguiente:

trash char[4096];
...
scanf ("%4095s", trash);
getchar ();

Saludos :-)
-- 

--==--   --==--   Miguel Ángel Vilela   --==--   --==--   

  a.k.a  miguev  at  fmat.ull.es,  GULiC,  Barrapunto &  IRC-Hispano  
  GULiC - Grupo de Usuarios Linux de Canarias - http://www.gulic.org  
  Facultad de Matemáticas, Universidad La Laguna --- www.fmat.ull.es  
  Public GPG key at http://search.keyserver.net (search for: miguev)  
  Linux Reg. User #184518 - Debian GNU/Linux SID - kernel 2.4.18-xfs 
  Linux Reg. Machines:  #81674,  #81677,  #105478,  #118020, #118022 
  -- Linux Driver Petition #73209 --- No ePatents Petition #80354 --  
 
 Rules for Academic Deans:
(1)  HIDE
(2)  If they find you, LIE
-- Father Damian C. Fandal 


pgpJE0vbcJv1N.pgp
Description: PGP signature


Re: fflush(stdin) no limpia por que??

2002-07-01 Por tema yoros

Hola,

Hasta el momento yo solo he utilizado fflush para sincronizar los
buffers, en ningún momento lo he utilizado para vaciar buffer alguno.
Que yo recuerde había otra forma de vaciar un buffer, pero no se cual
es.

Un saludo,

  Pedro

-- 
Pedro Martinez Juliá
\  [EMAIL PROTECTED]
)|[EMAIL PROTECTED]
/http://yoros.cjb.net
Socio HispaLinux #311
Usuario Linux #275438 - http://counter.li.org
GnuPG publi c information:  pub  1024D/74F1D3AC
Key fingerprint = 8431 7B47 D2B4 5A46 5F8E  534F 588B E285 74F1 D3AC


pgpk9qof6J0rE.pgp
Description: PGP signature


fflush(stdin) no limpia por que??

2002-07-01 Por tema Esteban Garcia Cuesta
Hola, 
  Estoy usando la funcion de fflush (stdin)para limpiar el buffer de
entrada, pero parece que no hace nada. Lo tengo puesto justo antes de un
getchar() y este me coge basura, sin quedarse a la espera por teclado que
es lo que deberia hacer si el buffer esta vacio (ahi esta la utilidad de
fflush).
  Sabeis porque puede ser? Hace tiempo que no programo en C pero no
recuerdo que esto me pasara.
   Muchas gracias 
Esteban.



-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]