Search This Blog

Friday, September 3, 2010

C getchar vs scanf

Programmer Question

I am confused by a piece of code found in a function I am studying:



    char    GetCommand( void )
{
char command;

do {
printf( "Enter command (q=quit, n=new, l=list): " );
scanf( "%c", &command );
Flush();
}
while ( (command != 'q') && (command != 'n')
&& (command != 'l') );

printf( "\n----------\n" );
return( command );
}

void Flush( void ) {
while ( getchar() != '\n' )
;
}


What I don't quite understand here is the usage of the Flush() function. I mean, the book I am reading explains the Flush function by saying that it prevents the user from inputting more than a single character and then having that character read when they are prompted for input the 2nd time. What I don't understand is how is Flush() preventing this from happening? It doesn't DO anything. All it is, is a 'while' command. (While this is true......what?????) Doesn't make sense.



Find the answer here

No comments:

Post a Comment

Related Posts with Thumbnails