#include <stdio.h>
#include <ctype.h>
#include <stdlib.h>
#include <errno.h>

#define countof(array) (sizeof(array) / sizeof((array)[0]))

int main(void)
{
    while (1)
    {
        printf("Please input a number (or just press ENTER to exit): ");
        
        char buffer[32];
        if (!fgets(buffer, countof(buffer), stdin) || *buffer == '\n' || *buffer == '\0')
        {
            printf("Exiting...");
            break;
        }

        char *endptr;
        errno = 0;
        long number = strtol(buffer, &endptr, 10);
        if (endptr == buffer)
        {
            printf("This does not look like a number.\n");
        }
        else if (*endptr != '\0' && *endptr != '\n')
        {
            printf("There is some trash after the number %ld.\n", number);
        }
        else
        {
            printf("Got valid number %ld%s.\n",
            	number, (errno == ERANGE) ? ", but it was too big" : "");
        }
    }
}
