www.delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp/1998/07/10/23:30:38

From: "David P. Hack" <hack AT sky DOT net>
Newsgroups: comp.os.msdos.djgpp
Subject: Buffered input
Lines: 36
Message-ID: <6_Ap1.22$s7.1149262@alpha.sky.net>
Date: Sat, 11 Jul 1998 03:29:06 GMT
NNTP-Posting-Host: 209.90.5.3
NNTP-Posting-Date: Fri, 10 Jul 1998 22:29:06 CDT
Organization: SkyNET Corporation
To: djgpp AT delorie DOT com
DJ-Gateway: from newsgroup comp.os.msdos.djgpp

I am a green C programmer and have a question about djgpp's handling of
input and the scanf() function.

The following program goes into a loop if a correct input is not received.
What I expected it to do was to reprompt if a correct input is not received.
When I compile this source and run it under Turbo C, it reprompts but under
djgpp it loops.  I assume this has something to do with djgpp's use of
buffered input and I have read some of the bug descriptions that seem to be
related to this but I am confused.  Can anyone help me understand why this
loops and why it runs differently from Turbo C?

Thanks
Dave Hack

/* shel06.c */
/* Validate a single character input with scanf */
#include <stdio.h>
#include <conio.h>
main()
{
  char c;               /* input character */
  int intScanres;       /* scanf function return value */
  clrscr();
  do
  {
    fflush(stdin);
    printf("Please input (Y)es or (N)o: ");
    intScanres = scanf("%[YyNn]", &c);
    printf("intScanres is %d\n",intScanres);
  } while(intScanres != 1);
  printf("The character entered is: %c",c);
  return 0;     /* end of main() function */
}



- Raw text -


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