Подтвердить что ты не робот

Определите, является ли char число или буква

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

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

int a = Asc(theChar);

или это?

int a = (int)theChar
4b9b3361

Ответ 1

Вы хотите использовать стандартные функции 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?");
}

Ответ 2

Шаблоны

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

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

Это относится ко всем символам. Смотрите таблицу ascii.

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

Ответ 3

<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, чтобы убедиться сами.

Ответ 4

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

Ответ 5

Если (theChar >= '0' && theChar <='9') это цифра. Вы получаете идею.

Ответ 6

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

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

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

Ответ 7

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

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

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

ASCII не гарантируется.