🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: be.comp.programming
Article #7989

Re: [c] eigen getline vereist soms een extra enter voordat hij werkt

#7989
From: Dominique Devriese
Date: Thu, 11 Jul 2002 11:06
44 lines
2279 bytes
Sven Vermeulen <svenPUNTJEvermeulen@rug.ac.be> writes:

> Ieps,
> 
> Ik heb een getline-functie gemaakt die als volgt werkt (overgenomen van
> verschillende websites):
> 
> 
> void getline(char s[], int lim)
> {
>         int c = 0, j;
> 
>         while (getchar() != '\n');
> 
>         for (j = 0; j < lim - 1 && (c = getchar()) != EOF && c != '\n'; ++j)
>                 s[j] = c;

voeg hier eens het volgende in:
s[j+1] = 0; /* je wil je strings immers altijd beeindigen met een 0 in C */
if( c == '\n' ) ungetc( '\n', stdin ); /* je code verwacht duidelijk
niet dat je die newline uitleest.  Je doet het immers opnieuw bij het
begin van de functie. */

<snip>

> Het is duidelijk dat hij bij de "while" wacht, maar waarom doet hij dat dan
> niet bij "Name: " (waar hij het dus wel doet)?

omdat scanf blijkbaar de newline niet uitleest aan het einde van de
invoer... 

> 
> Kent er iemand anders een andere (veilige) manier om strings (met spaties) in
> te lezen?

je kan misschien eens kijken naar de GNU readline library, _erg_ cool
! 

sjuus
domi

-- 
Dominique Devriese
http://users.pandora.be/frit/domi.gpg
Technical Details
Message-ID: <87wus2y14x.fsf@living.pandora.be>
Path: arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!sn-xit-02!sn-xit-03!sn-xit-01!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: <5LbX8.2783$QS3.541@afrodite.telenet-ops.be>

Show Full Headers
Complete Article Headers
X-Google-Language: DUTCH,ASCII-7-bit
X-Google-Thread: fcea4,e8f39528eabe5a61
X-Google-Attributes: gidfcea4,public
X-Google-ArrivalTime: 2002-07-11 04:11:32 PST
Path: arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!sn-xit-02!sn-xit-03!sn-xit-01!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] eigen getline vereist soms een extra enter voordat hij werkt
References: <5LbX8.2783$QS3.541@afrodite.telenet-ops.be>
From: Dominique Devriese <fritmebufstek@pandora.be>
Message-ID: <87wus2y14x.fsf@living.pandora.be>
Lines: 44
User-Agent: Gnus/5.09 (Gnus v5.9.0) Emacs/21.2
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Date: Thu, 11 Jul 2002 11:06:39 GMT
NNTP-Posting-Host: 213.118.142.161
X-Complaints-To: abuse@telenet.be
X-Trace: afrodite.telenet-ops.be 1026385599 213.118.142.161 (Thu, 11 Jul 2002 13:06:39 MET DST)
NNTP-Posting-Date: Thu, 11 Jul 2002 13:06:39 MET DST
Organization: Telenet Internet