sirve - Determine si char es un num o letra
saber si es numero o letra c# (7)
¿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 <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?");
}
Ninguno de estos hace algo útil. Use isalpha()
o isdigit()
de la biblioteca estándar. Están en <ctype.h>
.
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.
Si (theChar >= ''0'' && theChar <=''9'')
es un dígito. Entiendes la idea.
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.
<ctype.h>
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.
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.