This question already has an answer here:
In the example below, if I enter a character in Mac OS X terminal, the program will get stuck in an infinite loop, printing Please enter a number: line after line and never allowing the user to input anything. What's wrong with this code? What is the fix? I want to change the code in a way that if a number is not entered, the user is prompted with an error message and asked to enter a number again.
#include int main(int argc, const char * argv[]) { int number = 0, isnumber; getagin: printf("Please enter a number:\n"); isnumber = scanf("%i", &number); if(isnumber) { printf("You enterd a number and it was %i\n", number); } else { printf("You did not eneter a number.\n"); goto getagin; } return 0; } Edit: I edited the code after reading the suggestions, and fixed the infinite loop problem. This is not a bad fix for the infinite loop problem, and with a simple for loop I tell C to search for any none numeric character. The code below won't allow inputs like 123abc.
#include #include #include int main(int argc, const char * argv[]) { char line[10]; int loop, arrayLength, number, nan; arrayLength = sizeof(line) / sizeof(char); do { nan = 0; printf("Please enter a number:\n"); fgets(line, arrayLength, stdin); for(loop = 0; loop