Простейшим способом, как я могу проверить, является ли целое число, инициализированное функцией scanf
, числом?Проверьте, является ли значение из scanf числом?
ответ
http://www.cplusplus.com/reference/clibrary/cstdio/scanf/
В случае успеха [зсапЕ] возвращает число элементов успешно читать. Счет может соответствовать ожидаемому числу показаний или меньше, даже ноль, если произойдет сбой в . В случае отказа ввода до того, как любые данные могут быть успешно прочитаны, EOF возвращается .
Так что вы могли бы сделать что-то вроде этого:
#include <stdio.h>
int main()
{
int v;
if (scanf("%d", &v) == 1) {
printf("OK\n");
} else {
printf("Not an integer.\n");
}
return 0;
}
Но это предположить, что вы используете fgets и strtol вместо этого.
Спасибо, человек работает, но если я помещаю это в цикл, не работает должным образом, если вход является строкой в начале, цикл бесконечен, я могу решить? – genesisxyz
Я положил getchar(); внутри ... работает сейчас – genesisxyz
'sscanf' и' scanf' - плохая идея. Оба производят неопределенное поведение при переполнении. – AnT
Ваш вопрос странно сформулирован. Инициализированное целое число всегда является числом (кроме экзотических случаев ловушечных представлений), что означает, что нет необходимости ничего проверять.
Я бы предположил, что вам нужно проверить, является ли заданная строка действительным представлением числа. Для этого вам сначала нужно определить, как должно выглядеть действительное представление. Вы разрешаете знак? Является ли избыточным +
разрешено (как знак)? Что относительно 0x
префикс для hexadecimals? И так далее.
Язык C предлагает свой собственный набор правил, которые определяют идею языка правильного строкового представления целого числа. Если это то, что вам нужно, то, чтобы проверить, удовлетворяет ли данная строка этим правилам, наилучшим способом является использование функции преобразования строк в целое число, например strtol
(и другие функции из группы strto...
), а затем проверить условие ошибки.
Остерегайтесь ответов, которые предлагают написать собственную функцию, которая проверила бы эти правила. Это просто не имеет никакого смысла, поскольку стандартная функция уже существует. Кроме того, строго говоря, в реальном программировании редко требуется выполнять проверку без фактического преобразования. strto...
сделаю.
Кроме того, держитесь подальше от функций от scanf
от группы до перфрума преобразования целых чисел. Эти функции вызывают неопределенное поведение при переполнении (т. Е. Если представление входной строки слишком велико). В общем случае единственный правильный способ сделать такое преобразование в C - это функции от strto...
.
- 1. Проверьте, является ли строка числом
- 2. Проверьте введенное значение является действительным числом
- 3. Проверьте, является ли переменная числом или массивом
- 4. Проверьте, является ли значение строкой или только целым числом?
- 5. Проверьте, является ли значение целым числом в Sass
- 6. Проверьте, является ли число целым числом
- 7. Проверьте, является ли ввод положительным целым числом
- 8. Проверьте, является ли varchar числом (TSQL)
- 9. Проверьте, является ли строка целым числом
- 10. Проверьте, что переменная является числом
- 11. C: Проверьте, является ли строка целым числом и сохраните ее.
- 12. Проверьте, является ли значение классом?
- 13. Как проверить, является ли значение числом?
- 14. Проверьте, что ввод является целым числом
- 15. Проверьте, является ли вход двойным с помощью scanf?
- 16. Как проверить, является ли значение числом
- 17. Проверка, является ли строковое значение целым числом
- 18. Как проверить, является ли значение ячейки числом
- 19. C++/cli проверить, является ли значение числом
- 20. Проверьте, является ли строка float выраженной только десятичным числом
- 21. Проверьте, если значение с плавающей точкой является целым числом
- 22. проверить, является ли значение десятичным numbre (не числом как символ)
- 23. Проверьте, является ли ввод числом или нет в bash
- 24. Проверьте, является ли ввод числом в цикле while
- 25. Проверьте, является ли первый символ числом с помощью awk
- 26. Проверьте, является ли поле целым числом в элементе
- 27. Проверьте, является ли ввод числом или строкой в C++
- 28. Проверьте, является ли сумма/произведение цифр в четном положении числом
- 29. Проверьте, является ли поле целым числом в awk
- 30. Проверьте, является ли ввод числом или буквой javascript
Я верю, что этот вопрос отвечает на ваши вопросы. http://stackoverflow.com/questions/456303/how-to-validate-input-using-scanf – hometoast
если целое число является числом? –
Я прочитал вопрос как «если прочитанная строка является допустимым целым числом». – hometoast