[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: gets() en Lenguaje C.



Hola,

> > > if (fgets(buffer,sizeof(buffer),stdin) ) {
> > > 	if ( buffer[strlen(buffer)-1] == '\n' )
> > >  		buffer[strlen(buffer)-1]='\0';
> > > 	fflush(stdin);
> >
> > 	estás seguro del fflush(stdin) ?
>
> No hay diferencia entre entrada y salida, porque eso es
> subjetivo. Juan Antonio decía que vacía el buffer, lo que puede sonar

entiendo

> diferente de lo que es, como si se descartara el buffer. Pero el
> fflush() sólo causa que se mande al destino ordinário lo que está
> aguardando. En el caso especial del stdin, no hay nada aguardando
> hasta que no hay nadie leyendo. Por eso el fflush() aqui simplemente
> no hace nada. El problema del programa (no ya sus errores) está en que

a eso me refiero, que si no hace nada no se pone y listos...

> el TTY interfiere en el buffering. Incluso si haces
>
> 	setvbuf (stdin, NULL, _IONBF , 0);
>
> no funcionará porque la terminal implementa el line buffer. Como
> respondí al princípio, la única solución práctica es usar una librería
> como (n)curses. El problema es, que el cómo hacerlo manualmente
> depende de la terminal, porque en un princípio podrías mandar las
> sequencias de escape a la terminal, pero ésta es diferente de
> emulación a emulación.

gracias por la otra información

----
Carles Pina i Estany | Nick: Pinux / Pine / Teufeus
E-Mail: carles.pina@salleURL.edu / is08139@salleURL.edu / cpina@cat-linux.com
http://www.salleURL.edu/~is08139/

   10 IF "LAS RANAS"="TIENEN PELO" THEN PRINT "Windows is good"



Reply to: