Thursday 9 February 2017

valid input number from user


Question: Write a program which asks the user for a number between 1 to 9 and shows the number.
If the user inputs a number out of the specified range, the program should show an error and prompt the user for a valid input.


/*function to accept user input and validate*/
int accept_number_form_user(void)
{
        int num=0;
        do{
        printf("Enter a Number between 1 to 9 : ");
        scanf(" %d", &num);
        if(num<1 || num >9){
                printf("Please Try Again...\n");
        }
        }while(num<1 || num >9);
        return num;
}

Program For Same


#include <stdio.h>
/*function to accept user input and validate*/
int accept_number_form_user(void)
{
        int num=0;
        do{
        printf("Enter a Number between 1 to 9 : ");
        scanf(" %d", &num);
        if(num<1 || num >9){
                printf("Please Try Again...\n");
        }
        }while(num<1 || num >9);
        return num;
}
int main(int argc, char *argv[]){
        printf("You Entered: %d\n", accept_number_form_user());
        return 0;
}

above code is simplest one. but can lead to side effects like
when user input text instead of number, also mix of number and text.
Below code is handling those scenarios also.


#include <stdio.h>
#include <string.h>

void flush_stdin(void)
{
        char ch;
        do{
                ch = getchar();
        }while( ch != EOF && ch != '\n');
}

int accept_number_form_user(void)
{
        int num=0;
        char buffer[256]={0x00};
        do{
                printf("Enter a Number between 1 to 9 : ");
                scanf(" %[^\n]s", buffer);
                if(strlen(buffer) == 1){
                        sscanf(buffer," %d", &num);
                }
                if(num<1 || num >9){
                        printf("Please Try Again...\n");
                }
                flush_stdin();
                memset(buffer, 0x00, sizeof(buffer));
        }while(num<1 || num >9);
        return num;
}
int main(int argc, char *argv[]){
        printf("You Entered: %d\n", accept_number_form_user());
        char buffer[256]={0x00};
        return 0;
}

No comments:

Post a Comment