Определите, является ли символ числом или буквой - PullRequest
45 голосов
/ 23 декабря 2011

Как определить, является ли char в C, например, a или 9 цифрой или буквой?

Лучше ли использовать:

int a = Asc(theChar);

или это?

int a = (int)theChar

Ответы [ 7 ]

87 голосов
/ 23 декабря 2011

Вы захотите использовать стандартные функции isalpha() и isdigit() в <ctype.h>.

char c = 'a'; // or whatever

if (isalpha(c)) {
    puts("it's a letter");
} else if (isdigit(c)) {
    puts("it's a digit");
} else {
    puts("something else?");
}
21 голосов
/ 23 декабря 2011

символы - это просто целые числа, так что вы можете сделать прямое сравнение вашего символа с литералами:

if( c >= '0' && c <= '9' ){

Это относится ко всем персонажам. См. Таблицу ASCII .

ctype.h также предоставляет для этого функции.

13 голосов
/ 23 декабря 2011

<ctype.h> включает в себя ряд функций для определения, представляет ли 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 таблицу , чтобы убедиться в этом.

10 голосов
/ 23 декабря 2011

Ничего из этого не помогает. Используйте isalpha() или isdigit() из стандартной библиотеки. Они в <ctype.h>.

5 голосов
/ 23 декабря 2011

Если (theChar >= '0' && theChar <='9') это цифра. Вы поняли.

3 голосов
/ 23 июля 2015

Обычно вы можете проверять буквы или цифры, используя простые условия

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 для проверки того же.

Как проверить, является ли символ цифрой или буквой

2 голосов

Стандарт C99 на c >= '0' && c <= '9'

c >= '0' && c <= '9' (упомянутый в другом ответе ) работает, потому что C99 N1256 стандартная тяга 5.2.1 «Наборы символов» гласят:

В исходных и исполняющих базовых наборах символов значение каждого символа после 0 в приведенном выше списке десятичных цифр должно быть на единицу больше, чем значение предыдущего.

Однако ASCII не гарантируется.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...