, scanf %s fgets, strtol, :
#define MAX_DIGITS 20
int val;
int okay = 0;
do
{
char input[MAX_DIGITS+2];
printf("Gimme a number: ");
fflush(stdout);
if (fgets(input, sizeof input, stdin))
{
char *chk = NULL;
val = (int) strtol(input, &chk, 10);
if (isspace(*chk) || *chk == 0)
{
okay = 1;
}
else
{
printf("\"%s\" is not a valid integer string, try again.\n", input);
}
}
} while (!okay);