scanf
returns the count of items that it has successfully read according to your format. You can set up a loop that exits only when scanf("%d", &number2);
returns 1
. The trick, however, is to ignore invalid data when scanf
returns zero, so the code would look like this:
while (scanf("%d",&number2) != 1) {
// Tell the user that the entry was invalid
printf("You did not enter a valid number\n");
// Asterisk * tells scanf to read and ignore the value
scanf("%*s");
}
Since you read a number more than once in your code, consider making a function to hide this loop, and call this function twice in your main
to avoid duplication.