From: "John M. Aldrich" Newsgroups: comp.os.msdos.djgpp Subject: Re: wierd problem Date: Thu, 13 Nov 1997 07:11:28 +0000 Organization: Two pounds of chaos and a pinch of salt Lines: 45 Message-ID: <346AA820.48A9@cs.com> References: <01bceff6$b2df4060$63206ccb AT ashod> Reply-To: fighteer AT cs DOT com NNTP-Posting-Host: ppp204.cs.com Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit To: djgpp AT delorie DOT com DJ-Gateway: from newsgroup comp.os.msdos.djgpp Precedence: bulk Ashod wrote: > > I recently wrote this. > > void main (void) > { > printf("\nHello"); > getch(); > } > > // but it did it the wrong way round.... it displayed hello after I hit a > key, > any thoughts on this ?? You've tripped over another reason why it's bad to write books that use nonstandard programming examples. In your case, you are mixing stdio and conio functions, which is guaranteed to have unpredictable results. In DJGPP, standard output (what printf writes to) is line-buffered, meaning that it does not get displayed on the screen unless one of the following occurs: - You write a newline ('\n') to stdout. - You call an input function that reads from stdin (scanf, gets, getchar, etc.). - You manually flush the buffer with fflush(). However, getch(), being a conio function, reads directly from the BIOS keyboard, and does not trip the second clause above. If you examine this, you'll see how to solve your problem. More information can be found in chapter 9.4 of the DJGPP FAQ. P.S.: void main() is illegal under ANSI C/C++. main() must return an integer. I suggest that you burn your C book and get one that teaches the language properly. :) hth -- --------------------------------------------------------------------- | John M. Aldrich | "Always listen to experts. They'll | | aka Fighteer I | tell you what can't be done, and why.| | mailto:fighteer AT cs DOT com | Then do it." | | http://www.cs.com/fighteer | - Lazarus Long | ---------------------------------------------------------------------