I am working on program where a list of options is displayed to the user and he would then enter an integer to specify which option he wants to select.Now I have pre-empted the situation where the user might enter an integer value apart from the valid ones. But if he enters any other value, say a character or a string, the program goes into an infinite loop with the list of options being printed infinitely. How can i rectify this? I mean, I should be able to give my user an error when for a predefined integer variable he enters a value that is not an integer.
Any help appreciated. Here is a sample code.
do{
    printf("Select appropriate option.\n");
    printf("Press 1 to do this");
    printf("Press 2 to do that.\n");
    printf("Press 3 to exit the program.\n");
    scanf("%d",&choice);
    if(choice!=1 && choice!=2 && choice!=3)
        printf("You entered an invalid choice. Please enter again.\n");
    switch(choice){
        case 1:
            //do this
             break
        case 2:
            //do that
            break;
        case 3:
            exit(1);
           }}
while(choice!=3);
So basically when a user enters a non-integer value for choice I want the program to notify the user and ask him for another input.