🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: es.comp.os.linux.programacion
Article #15833

Re: Como ha quedado lo de leer de stdin?

#15833
From: Carles Sadurní Anguita
Date: Fri, 02 Jun 2000 00:00
97 lines
4224 bytes
El Thu, 1 Jun 2000 15:48:02 +0100, Francisco J. Oviedo va escriure:
>Carles Sadurn� Anguita <isard@localhost.localdomain> wrote:
>
>> El otro d�a, Santiago escribi� aqu� con un problemilla al leer de stdin; yo
>> tengo el mismo desde un par de d�as antes y no he le�do la soluci�n
>> (seguramente por alg�n problema en los servidores). Le� lo de fgets pero no
>> me va.
>> 
>> Tengo una funci�n que es 
>> 
>> char RespuestaUsuario()
>> {
>>       char c[2];
>>       fgets(c, 2, stdin); //El 2 es porque lee como m�ximo un car�cter menos...
>>       return c[0];
>> }
>
>realmente me has dejado alucinado de como te has complicado la vida.
>sustituye respuestausuario por getchar

As� empec�, pero siempre me pasa igual: quiero que el programa lea una
pregunta de un archivo, lea las posibles respuestas y me pregunte cu�l es la
correcta; yo respondo y... siguiente pregunta... pero la siguiente vez que
llamo a getchar, getc, fgets o la-madre-que-lo-pari�-get, en vez de esperar
a que pulse una tecla toma el RETURN que ya tiene y, claro... respuesta
incorrecta.

>
>> La primera vez que la invoco va bien,  pero la segunda vez se queda con el
>> ENTER de la primera y me "salta".
>
>es que es logico, el salto de linea tambien esta ahi, por mucho que te
>disguste.

Pero si lo leo, lo coloco en c[1] (v�ase la funci�n anterior) y salgo de la
funci�n, ya no deber�a existir: en stdin porque ya ha sido le�do... y en c[]
porque se "muere" cuando salgo de la funci�n... �no?

>No he seguido la discusion de la que hablas, pero si alguien ha dicho
>que usaras fgets, seguramente no era para que te construyeras con el un
>getchar, sino para que cogieras una linea entera del terminal y luego la
>analizaras a gusto.

Eso es lo que pretendo: leer una l�nea entera, procesar s�lo el primer
car�cter y desechar el resto y que cuando vuelva a leer stdin est�
completamente vac�o. Creo que soy un poco torpe, porque nunca me hab�a
pasado antes (en DOS con C y en DOS o Linux con otros lenguajes).

>De todas formas, si quieres coger caracter a caracter, solo tienes que
>tener en cuenta que al final de cada linea siempre hay un salto de
>linea.
>Un posible ejemplo de como coger una respuesta a una pregunta:
>
>[...]
>printf("Jarlll!!, pierdes aceite?\n");
>fgets(buff, MAXBUFF, stdin);
>[...]

Pero, prueba esto, por ejemplo y dime si te va:

#include <stdio.h>
#define MAXBUFF 1024

main()
{

char *buff;

while (1)
{
	printf("Jarlll!, pierdes aceite?\n");
	fgets(buff, MAXBUFF, stdin);
	if (buff[0] == 'x')
		break;
	else
		printf("%s \n", buff);
}

return 0;
}

>otra posibilidad es que pongas el teclado en modo no canonico.

�Es una posibilidad est�ndar? Pretend�a compilar el programa para DOS y para
Linux y para...


Gracias y saludos

-- 
------------------------------------------------------------------------
Carles Sadurn� Anguita    |   no hab�a que cumplir promesas,
                          |   el cansancio era de placer,
Quita _mira_la_firma para |   las l�grimas eran de risas...
responder.                |   y parece que a�n fue ayer.
                          |           Los Suaves
------------------------------------------------------------------------
Technical Details
Message-ID: <slrn8jdv7k.da0.isard@localhost.localdomain>
Path: arc1-ca.pugleaf.net!unknown!not-for-mail
References: <slrn8jb068.21s.isard@localhost.localdomain> <1ebizqu.w6tte818zqxk4N%foviedoa@teleline.es>

Show Full Headers
Complete Article Headers
X-Google-Language: SPANISH,ASCII
X-Google-Thread: f86c8,f3bc800a984cf1d6
X-Google-Attributes: gidf86c8,public
From: isard@localhost.localdomain (Carles Sadurní Anguita)
Subject: Re: Como ha quedado lo de leer de stdin?
Date: 2000/06/02
Message-ID: <slrn8jdv7k.da0.isard@localhost.localdomain>
X-Deja-AN: 630216032
Content-Transfer-Encoding: 8bit
References: <slrn8jb068.21s.isard@localhost.localdomain> <1ebizqu.w6tte818zqxk4N%foviedoa@teleline.es>
Content-Type: text/plain; charset=iso-8859-1
X-Complaints-To: abuse@news.wanadoo.es
X-Trace: m2newsread.uni2.es 959952383 212.25.144.181 (Fri, 02 Jun 2000 15:26:23 MET DST)
Organization: CTV-JET@Uni2
Mime-Version: 1.0
User-Agent: slrn/0.9.5.7 (UNIX)
Reply-To: sadurni_mira_la_firma@jazzfree.com
NNTP-Posting-Date: Fri, 02 Jun 2000 15:26:23 MET DST
Newsgroups: es.comp.os.linux.programacion