Как следать процерку на ввод целых чисел?
Лидирующие, последующие пробелы, точки и другие знаки препинания, буквы...
В общем, разрешены только цифры и все.
Дополнительно:
Ответы:
Можно использовать strtol
int parse(char* str, long* result) { char *end = NULL; *result = strtol(str, &end, 10); if (str == end || *end != '' || errno == ERANGE) { return -1; } return 0; } |
int parse(char* str, long* result) { char *end = NULL; *result = strtol(str, &end, 10); if (str == end || *end != '' || errno == ERANGE) { return -1; } return 0; }
Пример:
int main() { long value; if (parse("12313", &value)) { printf("Ошибка"); } else { printf("Результат: %ld", value); } } // 123 -> Результат: 123 // 123.0 -> Ошибка |
int main() { long value; if (parse("12313", &value)) { printf("Ошибка"); } else { printf("Результат: %ld", value); } } // 123 -> Результат: 123 // 123.0 -> Ошибка
try { (int)variable } catch (...) { // выводим ошибку } |
try { (int)variable } catch (...) { // выводим ошибку }
- изначально variable какого типа?
- Алексей, аааа) там в сишке же есть "cstring" Всякие)) если есть std::string - то этот, можно ещё привести массив чаров(для этого метода отдельный создать)
- Евгений Мартынов,
int nm = 0; if (scanf("%d", &nm)) { // значит что число валидное }
int nm = 0; if (scanf("%d", &nm)) { // значит что число валидное }
- Евгений Мартынов, тут прям на сишке, всё по правилам))
- Евгений Мартынов, нет в этом случае 1.0 будет пониматься как 1
- Алексей,
1.0
Разрешены только цифры же? Точки не разрешены, как и запятые.
Нужны дробные числа, используй double nm и %f - Это С, а не С++. Тут нет никаких исключений.
- Александр Ананьев, ну тогда 2 вариант)
Ну, наверное проверить, что передаваемая строка содержит только цифры. И не забыть, что long integer имеет хоть большую, но конечную длину, соответственно ввод нужно проверять на длину - иначе первый же какер-недоучка попробует вас на зуб переполнением ввода.
long integer
man strtol
man strtoul
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
Для проверки ввода целых чисел в PHP можно воспользоваться функцией is_int(). Однако, стоит учитывать, что данная функция не подходит для проверки значений, полученных из формы веб-страницы, так как они будут передаваться как строки. В таком случае, необходимо использовать функцию filter_var() с фильтром FILTER_VALIDATE_INT.
Пример кода для проверки ввода целых чисел:
$input = $_POST['number']; // Получаем значение из формы // Проверяем, что введенное значение является целым числом if (filter_var($input, FILTER_VALIDATE_INT)) { echo "Введенное значение - целое число"; } else { echo "Введенное значение не является целым числом"; }
Если вы хотите проверить, что введенное значение целое число и не превышает определенного диапазона, то можно воспользоваться дополнительными условиями:
$input = $_POST['number']; // Получаем значение из формы // Проверяем, что введенное значение является целым числом и находится в диапазоне от 1 до 100 if (filter_var($input, FILTER_VALIDATE_INT) && $input >= 1 && $input <= 100) { echo "Введенное значение - целое число в диапазоне от 1 до 100"; } else { echo "Введенное значение не является целым числом или не находится в указанном диапазоне"; }
Таким образом, вы можете использовать функции filter_var() и is_int() для проверки ввода целых чисел и установки дополнительных условий, если это необходимо.