Determine se char é um num ou uma letra

Como faço para determinar se um char em C, como a ou 9 é um número ou uma letra?

É melhor usar:

 int a = Asc(theChar); 

ou isto?

 int a = (int)theChar 

Você desejará usar as funções padrão isalpha() e isdigit() em .

 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?"); } 

chars são apenas inteiros, então você pode fazer uma comparação direta do seu personagem com os literais:

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

Isso se aplica a todos os personagens. Veja sua tabela ascii .

ctype.h também fornece funções para fazer isso por você.

inclui um intervalo de funções para determinar se um char representa uma letra ou um número, como isalpha , isdigit e isdigit .

A razão pela qual int a = (int)theChar não fará o que você quer é porque a vontade simplesmente manterá o valor inteiro que representa um caractere específico. Por exemplo, o número ASCII para '9' é 57, e para 'a' é 97.

Também para ASCII:

  • Numérico – if (theChar >= '0' && theChar <= '9')
  • Alfabético -
    if (theChar >= 'A' && theChar <= 'Z' || theChar >= 'a' && theChar <= 'z')

Dê uma olhada em uma tabela ASCII para ver por si mesmo.

Nenhum destes faz nada de útil. Use isalpha() ou isdigit() da biblioteca padrão. Eles estão em .

Se (theChar >= '0' && theChar <='9') é um dígito. Você entendeu a ideia.

Padrão C99 em c >= '0' && c <= '9'

c >= '0' && c <= '9' (mencionado em outra resposta ) funciona porque C99 N1256 rascunho padrão 5.2.1 "Conjuntos de caracteres" diz:

Nos conjuntos de caracteres básicos de origem e execução, o valor de cada caractere após 0 na lista acima de dígitos decimais deve ser maior que o valor do anterior.

ASCII não é garantido no entanto.

Normalmente, você pode verificar letras ou números usando condições simples

 if((ch>='a' && ch<='z') || (ch>='A' && ch<='Z)) { /*This is an alphabet*/ } 

Para dígitos, você pode usar

 if(ch>='0' && ch<='9') { /*It is a digit*/ } 

Mas como os caracteres em C são tratados internamente como valores ASCII, você também pode usar valores ASCII para verificar o mesmo.

Como verificar se um personagem é número ou letra

    Intereting Posts