How to clear the scanf input buffer in C

1 Answer

0 votes
#include <stdio.h>

int main()
{
    int number;

    while (1) {
        printf("Choose 1, 2, 3 or 4: ");

        if (scanf("%d", &number) != 1) {
            // clear the scanf input buffer
            while ((number = getchar()) != '\n' && number != EOF) {} // fflush(stdin);
        }

        if (number == 1 || number == 2 || number == 3 || number == 4) {
            break;
        }

        puts("Invalid selection, choose again.");
    }

    printf("You choose: %d\n", number);
}



/*
run:

Choose 1, 2, 3 or 4: w
Invalid selection, choose again.
Choose 1, 2, 3 or 4: x
Invalid selection, choose again.
Choose 1, 2, 3 or 4: 7
Invalid selection, choose again.
Choose 1, 2, 3 or 4: 3
You choose: 3

*/

 



answered Aug 8, 2024 by avibootz

Related questions

2 answers 345 views
345 views asked Feb 9, 2021 by avibootz
1 answer 377 views
377 views asked Sep 14, 2014 by avibootz
1 answer 209 views
209 views asked Jul 12, 2023 by avibootz
1 answer 234 views
234 views asked Jul 12, 2023 by avibootz
1 answer 247 views
1 answer 216 views
...