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.