C Input Validation
Input Validation
When users enter data into a C program, they might type something unexpected. Input validation makes sure the input is correct before the program continues.
Without validation, your program might crash or give the wrong result!
The examples below show simple ways to check if the user's input is valid in C.
Validate Number Range
Check if the number is within an allowed range (for example, 1 to 5):
Example
#include <stdio.h>
int main() {
int number; // Variable to store the user's number
do {
printf("Choose a number between 1 and 5: ");
scanf("%d", &number); // Read number input
while (getchar() != '\n'); // Clear leftover characters from input buffer
} while (number < 1 || number > 5); // Keep asking until number is between 1 and 5
printf("You chose: %d\n", number); // Print the valid number
return 0;
}
Example Result:
Choose a number between 1 and 5: 8
Choose a number between 1 and 5: -2
Choose a number between 1 and 5: 4
You chose: 4
Validate Text Input
Check that a name is not empty. Use fgets()
and check the first character:
Example
#include <stdio.h>
#include <string.h>
int main() {
char name[100]; // Buffer to store the user's name
do {
printf("Enter your name: ");
fgets(name, sizeof(name), stdin); // Read input as a string
name[strcspn(name, "\n")] = 0; // Remove the newline character if present
} while (strlen(name) == 0); // Repeat if the input is empty
printf("Hello, %s\n", name); // Greet the user
return 0;
}
Example Result:
Enter your name:
Enter your name:
Enter your name: John
Hello, John
Validate Integer Input
Make sure the user enters a number. If they enter something else (like a letter), ask again using fgets()
and sscanf()
:
Example
#include <stdio.h>
int main() {
int number; // Variable to store the user's number
char input[100]; // Buffer to hold user input as a string
printf("Enter a number: ");
// Keep reading input until the user enters a valid integer
while (fgets(input, sizeof(input), stdin)) {
// Try to read an integer from the input string
if (sscanf(input, "%d", &number) == 1) {
break; // Success: break out of the loop
} else {
printf("Invalid input. Try again: "); //
If not an integer, ask again
}
}
// Print the valid number entered by
the user
printf("You entered: %d\n", number);
return 0;
}
Example Result:
Enter a number: AB
Invalid input. Try again: 3.5
Invalid input. Try again: 35
You entered: 35
Tip: You can read more about fgets()
and sscanf()
in our
<stdio.h> library reference.