Article View: be.comp.programming
Article #7989Re: [c] eigen getline vereist soms een extra enter voordat hij werkt
From: Dominique Devriese
Date: Thu, 11 Jul 2002 11:06
Date: Thu, 11 Jul 2002 11:06
44 lines
2279 bytes
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-mailReferences:
<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