Article View: es.comp.os.linux.programacion
Article #6936Re: duda de c
From: desorden
Date: Sat, 26 Apr 2003 20:03
Date: Sat, 26 Apr 2003 20:03
49 lines
2735 bytes
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-mailReferences:
<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)