🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: be.comp.programming
Article #8079

Re: C-vraag ivm while-lus en scanf-return-value (while (scanf(...) == 0)

#8079
From: Dominique Devriese
Date: Tue, 09 Jul 2002 07:59
48 lines
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-mail
References: <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