delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp/1997/11/11/22:17:33

From: "John M. Aldrich" <fighteer AT cs DOT com>
Newsgroups: comp.os.msdos.djgpp
Subject: Re: problem with gets
Date: Wed, 12 Nov 1997 09:33:40 +0000
Organization: Two pounds of chaos and a pinch of salt
Lines: 32
Message-ID: <346977F4.3EAD@cs.com>
References: <01bcecfb$03800800$964c58d1 AT p133>
Reply-To: fighteer AT cs DOT com
NNTP-Posting-Host: ppp218.cs.com
Mime-Version: 1.0
To: djgpp AT delorie DOT com
DJ-Gateway: from newsgroup comp.os.msdos.djgpp

Hein wrote:
> 
> Problem is:
> in my main function I'm calling on other functions which uses gets to get
> user input.
> it compiles fine but when it is run it skips some of the gets comands,
> although they all use exactly the same commands. Ive used fflush to clear
> the keyboard buffer.

fflush() does NOT clear the input buffer.  That it does so under
Borland, et. al. is an example of these compilers' noncompliance with
the ANSI standard.  There are a number of ways to handle this sort of
problem:

1) Use gets(), or the safer fgets(), for all input, and read the results
from the string instead of directly from stdin.  Replace all calls to
scanf() with gets()/sscanf(); replace all calls to getchar() with
gets(), etc.
2) Clear the input buffer in an ANSI-safe way, such as "while (
getchar() != '\n' ) ;", after each function that leaves characters in
the buffer.
3) Read your input from the console using conio functions.

hth

-- 
---------------------------------------------------------------------
|      John M. Aldrich       | "History does not record anywhere at |
|       aka Fighteer I       | any time a religion that has any     |
|   mailto:fighteer AT cs DOT com   | rational basis."                     |
| http://www.cs.com/fighteer |                - Lazarus Long        |
---------------------------------------------------------------------

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019