Как определить, является ли char
в C, например a
или 9
числом или буквой?
Лучше ли использовать:
int a = Asc(theChar);
или это?
int a = (int)theChar
Как определить, является ли char
в C, например a
или 9
числом или буквой?
Лучше ли использовать:
int a = Asc(theChar);
или это?
int a = (int)theChar
Вы хотите использовать стандартные функции isalpha()
и isdigit()
в <ctype.h>
.
char c = 'a'; // or whatever
if (isalpha(c)) {
puts("it a letter");
} else if (isdigit(c)) {
puts("it a digit");
} else {
puts("something else?");
}
- это целые числа, поэтому вы можете прямо сравнивать персонажа с литералами:
if( c >= '0' && c <= '9' ){
Это относится ко всем символам. Смотрите таблицу ascii.
ctype.h также предоставляет функции для этого.
<ctype.h>
включает в себя ряд функций для определения, если a char
представляет букву или число, например isalpha
, isdigit
и isalnum
.
Причина, по которой int a = (int)theChar
не будет делать то, что вы хотите, потому что a
просто удерживает целочисленное значение, которое представляет конкретный символ. Например, номер ASCII для '9'
равен 57, а для 'a'
- 97.
Также для ASCII:
if (theChar >= '0' && theChar <= '9')
if (theChar >= 'A' && theChar <= 'Z' || theChar >= 'a' && theChar <= 'z')
Посмотрите таблицу ASCII, чтобы убедиться сами.
Ни один из них не делает ничего полезного. Используйте isalpha()
или isdigit()
из стандартной библиотеки. Они находятся в <ctype.h>
.
Если (theChar >= '0' && theChar <='9')
это цифра. Вы получаете идею.
Обычно вы можете проверить буквы или цифры, используя простые условия
if((ch>='a' && ch<='z') || (ch>='A' && ch<='Z))
{
/*This is an alphabet*/
}
Для цифр вы можете использовать
if(ch>='0' && ch<='9')
{
/*It is a digit*/
}
Но так как символы в C внутренне рассматриваются как значения ASCII, вы также можете использовать значения ASCII для проверки того же.
Стандарт C99 на c >= '0' && c <= '9'
c >= '0' && c <= '9'
(упомянутый в другом ответе) работает, потому что C99 N1256 стандартная черновик 5.2.1 "Наборы символов" говорит:
В обоих базовых наборах символов источника и исполнения значение каждого символа после 0 в приведенном выше списке десятичных цифр должно быть больше, чем значение предыдущего.
ASCII не гарантируется.