Я хочу знать, если есть команда, которая находит, какой тип находится в переменной, если это char или int. Например, чтобы сделать программу, которая, если вводится что-то, кроме числа, показывает пользователю ошибку, потому что я использую переменную int в scanf, но если пользователь вводит char, программа продолжается, я хочу сделать это остановить, когда печатается тип char
Как отличить char от int?
Ответы (1)
Попробуйте использовать isdigit(int c). Возвращает ненулевое значение, если c является цифрой, иначе возвращает 0. Для получения дополнительной информации введите 'man isdigit'
person
ddannel
schedule
07.06.2017
Я искал эту функцию раньше, но когда я тестировал, у меня были ошибки, теперь я искал больше, и, насколько я понял, для этой функции нужно использовать char, а не int, который я использовал
- person Morpheus Curriculum Vitæ; 08.06.2017
Нет, @MorpheusCurriculumVitæ, вы должны использовать
int
, в котором хранится значение unsigned char
или EOF
. Что я писал про мануалы ранее? Вы можете найти isdigit
руководство по стандартам OpenGroup здесь. Он говорит, и я цитирую: Аргумент c представляет собой int, значение которого приложение должно гарантировать, что это символ, представляемый как unsigned char или равно значению макроса EOF. Если аргумент имеет любое другое значение, поведение не определено. Акцент не мой.
- person autistic; 09.06.2017
@ddannel См. Комментарий выше для моего протеста против вашего предложения Он возвращает ненулевое значение, если c в цифре, иначе il возвращает 0.
- person autistic; 09.06.2017
scanf()
, вы просто проверяете значение, которое возвращает функция: это количество успешных преобразований. Итак, если вы попытаетесь прочитатьint x;
из стандартного ввода, вы можете использовать, например.if (scanf("%d", &x) == 1) { /* Thank you for the value of x */ } else { /* Bad user! Not an integer! */ }
- person Nominal Animal   schedule 07.06.2017fscanf
руководстве. В будущем имейте в виду, что программисты C должны читать руководства, чтобы избежать неопределенного поведения. У Open Group есть несколько хороших руководств; они обычно достаточно синхронизированы со стандартными руководствами C благодаря принятию C в качестве системного языка для UNIX-систем, совместимых с Opengroup/POSIX. - person autistic   schedule 07.06.2017