qc.hlp (Table of Contents; Topic list)
SCANF.C
                                             Up Contents Index Back
────────────────────────────────────────────────────────────────────────────
 
/* SCANF.C illustrates formatted input. Functions illustrated include:
 *          scanf           fflush          flushall
 *
 * For other examples of formatted input, see TABLE.C (fscanf) and
 * SETTIME.C (sscanf).
 */
 
#include <stdio.h>
#include <conio.h>
 
void main()
{
    int result, integer;
    float fp;
    char string[81];
 
    /* Get numbers. */
    printf( "Enter an integer and a floating point number: " );
    scanf( "%d %f", &integer, &fp );
    printf( "%d + %f = %f\n\n", integer, fp, integer + fp );
 
    /* Read each word as a string. */
    printf( "Enter a sentence of four words with scanf: " );
    for( integer = 0; integer < 4; integer++ )
    {
        scanf( "%s", string );
        printf( "%s\n", string );
    }
 
    /* Clear the input buffer and get with gets. */
    fflush( stdin );
    printf( "Enter the same sentence with gets: " );
    gets( string );
    printf( "%s\n", string );
 
    /* Specify delimiters. The ^ inside the brackets says accept any
     * character except the following other characters in brackets (tab
     * and newline in the example).
     */
    printf( "Enter the same sentence with scanf and delimiters: " );
    scanf( "%[^\n\t]s", string );
    printf( "%s\n", string );
 
    /* Loop until input value is 0. */
    printf( "\n\nEnter numbers in C decimal (num), hex (0xnum), " );
    printf( "or octal (0num) format.\nEnter 0 to quit\n\n" );
    do
    {
        printf( "Enter number: " );
        result = scanf( "%i", &integer );
        if( result )
            /* Display valid integers. */
            printf( "Decimal: %i  Octal: 0%o  Hexadecimal: 0x%X\n\n",
                    integer, integer, integer );
        else
        {   /* Read invalid characters. Then flush and continue. */
            scanf( "%s", string );
            printf( "Invalid number: %s\n\n", string );
            flushall();
            integer = 1;
        }
    } while( integer );
}