简体   繁体   中英

c language - Validating User Input via function

I need to validate user input using a separate function. For example, programming is asking for input in functionA and validation code should be in FunctionB ... I know all the ifs and while statement for validation but I cant figure out how to use two separate function for this... Here is the sample run..

#include <stdio.h>

void get_input (int * inp);
double valid_input (void);

main ()
{
    get_input (&inp);
    valid_input ();
}

void get_input (int *inp)
{
    printf("enter something");
    scanf("%d", &inp);
}

double valid_input ()
{
    // what to put here ?
}

In this case, you would want to keep it in one function, since the value returned by scanf determines whether the user input was valid or not.

Also, you should not be passing the address of the parameter to scanf, it's already a pointer to an int.

Consider rewriting your function like this:

int get_input (int *inp);

// main function is here

// returns 1 if input was valid
// see documentation for scanf for possible return values
// http://www.cplusplus.com/reference/clibrary/cstdio/scanf/
int get_input (int *inp)
{
    printf("enter something: ");
    return scanf("%d", inp); 
}

You can then use the return value of the function to determine whether or not it succeeded, Like this:

int value;
if (get_input(&value) == 1)
{
    // input was valid
}
else
{
    // function returned an error state
}

I'm not entirely sure exactly what validation that you're looking for. If you're looking simply for validation that the character types you were looking for were entered, Wug's answer is close.

If you're looking for another function that does some validation, this could provide a starting point for you:

#include <stdio.h>

int get_input (int *integerINput, char *characterInput);
void valid_input (int inp);

main()
{
    int integerInput;
    char charInput[2];

    // man scanf reports that scanf returns the # of items
    //      successfully mapped and assigned.
    //      gcc 4.1.2 treats it this way.
    if (get_input (&integerInput) < 2)
    {
        printf ("Not enough characters entered.\n");
        return;
    }

    valid_input (integerInput);
}

int get_input (int *integerInput, char *characterInput)
{
    int inputCharsFound = 0;

    printf ("Enter an integer: ");

    inputCharsFound += scanf ("%d", inp);


    printf ("Enter a character: ");

    // The first scanf leaves the newline in the input buffer
    //    and it has to be accounted for here.
    inputCharsFound += scanf ("\n%c", characterInput);

    printf ("Number of characters found = %d\n", inputCharsFound);

    return inputCharsFound;
}

void valid_input (int inp)
{
    if (inp > 5)
        printf ("You entered a value greater than 5\n");
    else
        printf ("You entered a value less than 5\n");
}

EDIT HasanZ asked for more details on how to handle more than one variable in the comments below. I've updated the code to read in another input character.

I'll leave it to you to determine how to best accept the appropriate input and validate that input since you've asked in generic terms how to validate in a separate function.

I would also take a look here for more information on C programming.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM