TIP: Click on subject to list as thread! ANSI
echo: os2prog
to: John Poltorak
from: Peter Fitzsimmons
date: 1995-03-26 01:31:10
subject: scanf

JP> main()
 JP> {
 JP>         int len, width;

 JP>         printf("Enter length: ");
 JP>         scanf("%d", &len);
 JP>         printf("Enter width: ");
 JP>         scanf("%d", &width);

 JP>         printf("area is %d", len * width);
 JP> }

Cset (and many other compilers,  on any platform),  for performance
reasons,  buffers stdout (the stream that printf() uses).  This is NOT an
ISO/ANSI violation.  It only flushes the buffer when:

   - "\n" is encountered.
   - the buffer fills up (a few K)
   - fflush(stdout) or flushall() is called.
   - the program terminates normally.


Your solution is any one of:

    - add a \n to the end of the prompts
    - add a fflush(stdout) before each scanf()
    - turn buffering off:  setvbuf(stdout, NULL, _IONBF, 0);

 JP> using an OS/2 compiler, or is Mr. Schildt in error 
 JP> here?

He should have known better (I've never liked any of this books;  how are
you finding it?)


--- Maximus/2 2.02p1
* Origin: Sol 3/Toronto (905)858-8488 (1:259/414)
SEEN-BY: 105/42 620/243 711/401 409 410 413 430 807 808 809 934 955 712/407
SEEN-BY: 712/515 628 704 713/888 800/1 7877/2809
@PATH: 259/414 400 99 250/702 3615/50 396/1 270/101 105/103 42 712/515
@PATH: 711/808 809 934

SOURCE: echomail via fidonet.ozzmosis.com

Email questions or comments to sysop@ipingthereforeiam.com
All parts of this website painstakingly hand-crafted in the U.S.A.!
IPTIA BBS/MUD/Terminal/Game Server List, © 2025 IPTIA Consulting™.