Вызовите strtol, убедитесь, что значение, сохраненное в endptr, не равно входному значению (успешное преобразование) и является указателем на байт NUL (использовалась вся строка).
http://www.opengroup.org/onlinepubs/000095399/functions/strtol.html
объясняет, что если вы также хотите обнаружить переполнение, уловка состоит в том, чтобы установить errno на 0, затем вызвать strtol, а затем проверить, что errno по-прежнему равно 0.
Если вы хотите быть педантичным, вы также должны проверить с помощью isspace (), что первый символ входной строки не является пробелом. Причина в том, что strtol и друзья пропускают начальные пробелы, но, возможно, вы не считаете «1» действительным числом.
Альтернативные варианты включают strtoll и strtod соответственно, если вы хотите разрешить большие числа или нецелые числа.