Почему isdigit
работает не так, как ожидалось. Я пытаюсь проверить, является ли ввод цифрой или нет. Если ввод является цифрой, напечатайте True
else False
.
#include<stdio.h>
#include<ctype.h>
int main()
{
int h;
printf("Height: ");
scanf("%d", &h);
if (isdigit(h))
printf("True");
else
printf("False");
}
Но он всегда возвращает False
.
Входные данные :
Высота: Foo
Потому что ваши ожидания неверны. isdigit() вызывается для символа, чтобы увидеть, содержит ли он десятичную цифру, '0' - '9'. Вы вызываете его на int, который уже является двоичным значением.
scanf()
и попробуйте нормальную функцию, такую как fgets()
, для получения пользовательского ввода. Затем подтвердите его (например, используя strpbrk()
).
Вы ошибаетесь в понимании функции isdigit
. вход этой функции - char. поэтому вы можете изменить это:
char h;
printf("Height: ");
scanf("%c", &h);