Article View: es.comp.os.linux.programacion
Article #13141Re: scanf
From: Adrian Rossiter
Date: Mon, 19 Mar 2001 11:41
Date: Mon, 19 Mar 2001 11:41
37 lines
2115 bytes
2115 bytes
On Sun, 18 Mar 2001 01:24:04 +0000, �ngel Su�rez Rivero wrote:
>> �ngel> ------------------------------ #include<stdio.h>
>> �ngel> int main(void) { auto int f;
>> �ngel> while(scanf(" %d",&f)!=1) perror("MAL\n"); /*..........*/
>> �ngel> return 0; } -------------------------------
...
>Totalmente de acuerdo pero como estoy utilizando "while" deber�a de
>volver a escanear una nueva cifra hasta que scanf devuelva 1 cosa que no
>hace.
Si scanf espera un numero, dejar� en stdin el primer car�cter que
encuentra que no sea parte de un numero.
En el bucle, si el primer car�cter en stdin es, por ejemplo, una 'a'
scanf la dejar� en stdin. La pr�xima vez por el bucle estar� all� para
scanf otra vez y as� el bucle no terminar�.
Para solucionar esto podr�as intentar con algo como.
#include <stdio.h>
int main() {
int f; char s[100];
while(fgets(s, 100, stdin)) {
if(sscanf(s, "%d", &f) == 1)
break;
else
fprintf(stderr, "MAL\n");
}
}
Saludos
Adrian.
--
Adrian Rossiter - adrian_r@teleline.es
http://teleline.terra.es/personal/adrian_r
Technical Details
Message-ID:
<slrn9bbs2d.u1.adrianr@localhost.adrian_r>Path:
arc1-ca.pugleaf.net!supernews.google.com!sn-xit-03!supernews.com!logbridge.uoregon.edu!news.rediris.es!newsfeed.mad.ttd.net!news.mad.ttd.net!adrianrReferences:
<3AB2A42F.8C677F1A@teleline.es> <87bsr0btai.fsf@relativistic.homeip.net> <3AB40E34.2E6C1244@teleline.es>Show Full Headers
Complete Article Headers
X-Google-Language: SPANISH,ASCII X-Google-Thread: f86c8,fc6083ac2f27fd47 X-Google-Attributes: gidf86c8,public X-Google-ArrivalTime: 2001-03-19 04:00:09 PST Path: arc1-ca.pugleaf.net!supernews.google.com!sn-xit-03!supernews.com!logbridge.uoregon.edu!news.rediris.es!newsfeed.mad.ttd.net!news.mad.ttd.net!adrianr From: adrianr@jazzfree.com (Adrian Rossiter) Newsgroups: es.comp.os.linux.programacion Subject: Re: scanf Date: Mon, 19 Mar 2001 11:41:03 +0000 Organization: Telefonica Transmision de Datos Lines: 39 Message-ID: <slrn9bbs2d.u1.adrianr@localhost.adrian_r> References: <3AB2A42F.8C677F1A@teleline.es> <87bsr0btai.fsf@relativistic.homeip.net> <3AB40E34.2E6C1244@teleline.es> Reply-To: adrian_r@teleline.es NNTP-Posting-Host: 213-99-92-219.uc.nombres.ttd.es Mime-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: 8bit User-Agent: slrn/0.9.6.2 (Linux)