🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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

Re: duda de c

#6936
From: desorden
Date: Sat, 26 Apr 2003 20:03
49 lines
2735 bytes
En el art�culo <b8dmdf$gio$1@news-reader13.wanadoo.fr>, Ramon Guiu escribi�:
> Acabo de ejecutar tu c�digo a mi me funciona perfectamente. En cualquier 
> caso no veo porque fflush(stdin) deber�a solucionar tu problema, ya que 

La funci�n fflush vac�a los flujos de salida. En el caso del flujo de
entrada stdin, el comportamiento no est� definido en el est�ndar, es
decir, cada compilador se puede comportar de una manera diferente
-algunos vaciar�n stdin, otros dar�n error, otros no har�n nada,
etc.-.

>>>
>>>char resp = 'c';
>>>
>>>if (resp != 's')
>>>{
>>>        do
>>>       {
>>>                printf("Ver siguiente cuenta (c) o visualizar seguidas (s):
>>>");
>>>                scanf("%c",&resp);
>>>                fflush(stdin);
>>>                printf("\n\n");
>>>       }
>>>       while ((resp != 's') && (resp != 'c'));
>>>}

Cuando escoges la opci�n, est�s introduciendo en stdin dos car�cteres: el
que corresponde a la opci�n elegida 'c' o 's' y '\n' por la pulsaci�n de
la tecla ENTER. scanf almacena *el primer car�cter* en la variable resp, 
y el puntero asociado a stdin pasa a apuntar al siguiente car�cter, que es 
'\n'. La siguiente vez, todav�a queda un car�cter sin leer -'\n'-, as� 
que scanf lo almacena en la variable resp.

Si tengo que usar scanf en mis programas, siempre a�ado a continuaci�n
una llamada a getchar para capturar el car�cter '\n'.

<comienzo de c�digo>

do
{
	printf("Ver siguiente cuenta (c) o visualizar seguidas (s): ");
	scanf("%c", &resp);
	getchar(); /* Para ser puristas: (void) getchar(); */
	printf("\n\n");
} while ((resp != 's') && (resp != 'c'));

<final de c�digo>

Un saludo...
Technical Details
Message-ID: <slrnbalpgi.r6.nedrosed@debianedrosed.org>
Path: arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!newsfeed.stanford.edu!headwall.stanford.edu!fu-berlin.de!uni-berlin.de!62-37-21-172.dialup.uni2.ES!not-for-mail
References: <b3lb2g$i4i$1@nsnmrro2-gest.nuria.telefonica-data.net> <3EA81DB0.5B9C7285@yale.cl> <b8dmdf$gio$1@news-reader13.wanadoo.fr>

Show Full Headers
Complete Article Headers
X-Google-Language: SPANISH,ASCII
X-Google-Thread: f86c8,bddd3c3ff897347
X-Google-Attributes: gidf86c8,public
X-Google-ArrivalTime: 2003-04-26 13:03:51 PST
Path: arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!newsfeed.stanford.edu!headwall.stanford.edu!fu-berlin.de!uni-berlin.de!62-37-21-172.dialup.uni2.ES!not-for-mail
From: desorden <nedrosed@yahoo.es>
Newsgroups: es.comp.os.linux.programacion
Subject: Re: duda de c
Date: Sat, 26 Apr 2003 22:03:31 +0200
Lines: 49
Message-ID: <slrnbalpgi.r6.nedrosed@debianedrosed.org>
References: <b3lb2g$i4i$1@nsnmrro2-gest.nuria.telefonica-data.net> <3EA81DB0.5B9C7285@yale.cl> <b8dmdf$gio$1@news-reader13.wanadoo.fr>
Reply-To: nedrosed@yahoo.es
NNTP-Posting-Host: 62-37-21-172.dialup.uni2.es (62.37.21.172)
Mime-Version: 1.0
Content-Type: text/plain; charset=iso-8859-15
Content-Transfer-Encoding: 8bit
X-Trace: fu-berlin.de 1051387430 9226838 62.37.21.172 (16 [156744])
X-Orig-Path: 127.0.0.1!nobody
User-Agent: slrn/0.9.7.4 (Linux)