selftrips
@selftrips

Как следать процерку на ввод целых чисел?

Лидирующие, последующие пробелы, точки и другие знаки препинания, буквы...
В общем, разрешены только цифры и все.
  • Вопрос задан
  • 120 просмотров
Пригласить эксперта
Ответы на вопрос 3
AshBlade
@AshBlade
Просто хочу быть счастливым
Можно использовать strtol
int parse(char* str, long* result) {
    char *end = NULL;
    *result = strtol(str, &end, 10);
    if (str == end || *end != '\0' || errno == ERANGE) {
        return -1;
    }
    return 0;
}


Пример:
int main() {
    long value;
    if (parse("12313", &value)) {
        printf("Ошибка");
    } else {
        printf("Результат: %ld", value);
    }
}
// 123 -> Результат: 123
// 123.0 -> Ошибка
Ответ написан
Комментировать
ZhenyaMak
@ZhenyaMak
Писать качественный софт? Пфф, это не для меня.
try {
  (int)variable
}
catch (...) {
  // выводим ошибку
}
Ответ написан
CityCat4
@CityCat4
Внимание! Изменился адрес почты!
Ну, наверное проверить, что передаваемая строка содержит только цифры. И не забыть, что long integer имеет хоть большую, но конечную длину, соответственно ввод нужно проверять на длину - иначе первый же какер-недоучка попробует вас на зуб переполнением ввода.

long integer

man strtol
man strtoul
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы