I had one of my buddies ask me how to validate input in C today... Turns out the task is kind of daunting. I thought I could get away with the following below:
int status, input; status = scanf("%d", &input); while(status!=1){ printf("Incorrect number... please try again: "); status = scanf("%d", &input); }
but the problem is you receive an infinite loop. The reason behind this is when you hit return\enter on your keyboard, a newline character is passed in as input. These extra hidden characters are what is messing with your input and spawning the infinite while loop. Luckily, I was able to parse through the extra characters one-by-one and get something working.
Hopefully this helps someone else!
#include<stdio.h> int main(void){ // input user input -- hopefully a number // temp used to collect garbage characters // status did the user enter a number? int input, temp, status; printf("Please enter a number: "); status = scanf("%d", &input); while(status!=1){ while((temp=getchar()) != EOF && temp != '\n'); printf("Invalid input... please enter a number: "); status = scanf("%d", &input); } printf("Your number is %d\n",input); return 0; }