Determine si char es un num o letra

¿Cómo determino si un char en C como a o 9 es un número o una letra?

¿Es mejor usar:

 int a = Asc(theChar); 

¿o esto?

 int a = (int)theChar 

Deberá usar las funciones estándar isalpha() e isdigit() en .

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

los caracteres son solo enteros, por lo que puedes hacer una comparación directa de tu personaje con los literales:

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

Esto se aplica a todos los personajes. Vea su tabla ascii .

ctype.h también proporciona funciones para hacer esto por usted.

incluye una serie de funciones para determinar si un char representa una letra o un número, como isalpha , isdigit e isalnum .

El motivo por el cual int a = (int)theChar no hará lo que usted desea es que a simplemente mantendrá el valor entero que representa un carácter específico. Por ejemplo, el número ASCII para '9' es 57, y para 'a' es 97.

También para ASCII:

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

Eche un vistazo a una tabla ASCII para verlo usted mismo.

Ninguno de estos hace algo útil. Use isalpha() o isdigit() de la biblioteca estándar. Están en .

Si (theChar >= '0' && theChar <='9') es un dígito. Entiendes la idea.

C99 estándar en c >= '0' && c <= '9'

c >= '0' && c <= '9' (mencionado en otra respuesta ) funciona porque C99 N1256 borrador estándar 5.2.1 "Conjuntos de caracteres" dice:

Tanto en los conjuntos de caracteres básicos de origen como de ejecución, el valor de cada carácter después de 0 en la lista anterior de dígitos decimales será uno mayor que el valor del anterior.

ASCII no está garantizado sin embargo.

Normalmente puede verificar letras o números usando condiciones simples

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

Para los dígitos que puedes usar

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

Pero como los caracteres en C son tratados internamente como valores ASCII, también puede usar valores ASCII para verificarlos.

Cómo verificar si un personaje es un número o una carta

    Intereting Posts