Поскольку это домашнее задание, ваш учитель, вероятно, не хочет, чтобы вы использовали strtol
.
Это классическое упражнение по пониманию того, как символы представлены в компьютере..
Что обычно ожидается в таком назначении, так это то, что вы запускаете массив символов gets
, возвращаемый в цикле, и проверяете, что содержится в каждой ячейке.Если вы найдете ячейку, содержащую символ, который не является цифрой (0 - 9), вы будете знать, что пользователь ввел что-то, что не является цифрой.
В зависимости от того, как сформулировано ваше конкретное назначение, - + и,также может быть действительным (ожидается, что число будет целым?)
Если вы настаиваете на использовании strtol
, вам необходимо знать, как работают указатели и указатели на указатели.Если вы это сделаете, вы можете использовать результат в параметре endptr
, чтобы проверить, где находится первый недопустимый символ, и решить, является ли ввод основанным на этом числом.
Имейте в виду, что это будет работать только для целых чисел (без десятичной точки).