Article View: be.comp.programming
Article #8079Re: C-vraag ivm while-lus en scanf-return-value (while (scanf(...) == 0)
From: Dominique Devriese
Date: Tue, 09 Jul 2002 07:59
Date: Tue, 09 Jul 2002 07:59
48 lines
2590 bytes
2590 bytes
Sven Vermeulen <svenPUNTJEvermeulen@rug.ac.be> writes:
> Ieps,
>
> Ik probeer dmv een lus ervoor te zorgen dat verkeerd ingegeven gegevens
> opgevangen worden en de user te dwingen opnieuw zijn gegevens in te geven.
> Het gaat als volgt:
>
> printf("Number %d: ", looper);
> while (scanf("%d", &input) == 0)
> {
> printf("Error: input is no integer\nPlease try again: ");
> }
>
> Jammergenoeg vangt m'n compiler (gcc) dit niet op zoals ik hoopte:
>
> Number 1: a
> Error: input is no integer
> Please try again: Error: input is no integer
> Please try again: Error: input is no integer
> Please try again: Error: input is no integer
> Please try again: Error: input is no integer
> Please try again: Error: input is no integer
> [...]
>
> Ik veronderstel dat die while-lus de "oude" returnvalue gewoon neemt en dus
> niet de expressie 'scanf("%d", &input) == 0' opnieuw uitvoert. Hoe moet ik
> dit anders doen?
>
> Mvg,
> Sven Vermeulen
Hallo, ik heb je code eens getest, en blijkbaar leest scanf()
karakters die hij niet wil niet uit, en laat ze staan in de stdin
FILE. Volgende code werkt correct:
printf("Number %d: ", looper);
while (scanf("%d", &input) == 0)
{
printf("Error: input is no integer\nPlease try again:");
/* lees alle tekens uit tot we een newline zien... */
while( getchar() != '/n' );
}
sjuus
domi
--
Dominique Devriese
http://users.pandora.be/frit/domi.gpg
Technical Details
Message-ID:
<87d6txjpr7.fsf@living.pandora.be>Path:
arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!sn-xit-02!sn-xit-08!supernews.com!priapus.visi.com!news-out.visi.com!hermes.visi.com!skynet.be!skynet.be!ossa.telenet-ops.be!afrodite.telenet-ops.be.POSTED!not-for-mailReferences:
<BAwW8.25690$ix.3604@afrodite.telenet-ops.be>Show Full Headers
Complete Article Headers
X-Google-Language: DUTCH,ASCII-7-bit X-Google-Thread: fcea4,c06f7d2c1c15dc0a X-Google-Attributes: gidfcea4,public X-Google-ArrivalTime: 2002-07-09 01:01:19 PST Path: arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!sn-xit-02!sn-xit-08!supernews.com!priapus.visi.com!news-out.visi.com!hermes.visi.com!skynet.be!skynet.be!ossa.telenet-ops.be!afrodite.telenet-ops.be.POSTED!not-for-mail Sender: domi@living.pandora.be Newsgroups: be.comp.programming Subject: Re: C-vraag ivm while-lus en scanf-return-value (while (scanf(...) == 0) References: <BAwW8.25690$ix.3604@afrodite.telenet-ops.be> From: Dominique Devriese <fritmebufstek@pandora.be> Message-ID: <87d6txjpr7.fsf@living.pandora.be> Lines: 48 User-Agent: Gnus/5.09 (Gnus v5.9.0) Emacs/21.2 MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Date: Tue, 09 Jul 2002 07:59:24 GMT NNTP-Posting-Host: 213.118.172.106 X-Complaints-To: abuse@telenet.be X-Trace: afrodite.telenet-ops.be 1026201564 213.118.172.106 (Tue, 09 Jul 2002 09:59:24 MET DST) NNTP-Posting-Date: Tue, 09 Jul 2002 09:59:24 MET DST Organization: Telenet Internet