delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp/1998/09/30/13:41:43

Message-Id: <36126D1B.65F8B764@cableol.co.uk>
Date: Wed, 30 Sep 1998 18:40:43 +0100
From: Peter Allen <allen DOT asjp AT cableol DOT co DOT uk>
Reply-To: allen DOT asjp AT cableol DOT co DOT uk
X-Mailer: Mozilla 4.04 [en] (Win95; I)
Mime-Version: 1.0
To: Test User <user AT ts001d38 DOT cin-oh DOT concentric DOT net>
Cc: Test User <user AT ts001d22 DOT cin-oh DOT concentric DOT net>, djgpp AT delorie DOT com
Subject: Re: Strange DJGPP bug
References: <Pine DOT LNX DOT 3 DOT 96 DOT 980930023451 DOT 210C-100000 AT ts001d38 DOT cin-oh DOT concentric DOT net>

Test User wrote:
> 
> On Sun, 27 Sep 1998, Peter Allen wrote:
> 
> >Test User wrote:
> 
> >> Here's a short C program:
> 
> >> #include <stdio.h>
> >>
> >> int main()
> >> {
> >>         char buffer[256];
> >>
> >>         printf("Input: ");
> >>         fgets(buffer, 255, stdin);
> >>         printf("\nYou typed %s\n");
> >> }
> 
> >> When compiled with the Linux version of GCC, this program
> >> prints an Input: prompt. When the user types something and
> >> presses ENTER, it then prints the string the user typed,
> >> in the form of "\nYou typed %s\n", where \n is a newline and
> >> %s is the string the user typed, including the trailing newline.
> >>
> >> When compiled with DJGPP, the program just sits there until
> >> the user types something and presses ENTER. Then, the
> >> program spews out the Input: prompt and the string the
> >> user typed at the same time. For some reason, it executes
> >> fgets() first, and then executes both printf's together. You
> >> can't get it to print the prompt first, then call fgets(),
> >> and then print the results. You can substitute fgets() for
> >> your own elaborate loop system. You'll get the same result.
> 
> >To save time switching between protected mode and dos, djgpp is
> >buffered, so the easiest way to make it print something on the
> >screen is to add \n to the end of printf ("input:") line.
> 
> >               Peter Allen
> 
> That would look pretty strange. Imagine an FTP program that does
> this. The prompt would be on one line, and the command on a different
> line. How did they get BASH to work? It doesn't print "bash-2.01$ "
> and then have the user type the commands on the next line. Both
> the prompt and the user's input are on the same line.

Woops, sorry.  I forgot to say you could put fflush(stdout); at the end
instead.  Sorry

		Peter Allen

- Raw text -


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