Comment déterminer si un char
en C tel que a
ou 9
est un chiffre ou une lettre?
Est-il préférable d'utiliser:
int a = Asc(theChar);
ou ca?
int a = (int)theChar
Vous voudrez utiliser les isalpha()
et isdigit()
fonctions standard dans <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?");
}
les caractères ne sont que des entiers, vous pouvez donc faire une comparaison directe de votre personnage avec les littéraux:
if( c >= '0' && c <= '9' ){
Ceci s'applique à tous les personnages. Voir votre table ascii .
ctype.h fournit également des fonctions pour le faire pour vous.
<ctype.h>
Inclut une gamme de fonctions permettant de déterminer si un char
représente une lettre ou un nombre, tel que isalpha
, isdigit
et isalnum
. .
La raison pour laquelle int a = (int)theChar
ne fera pas ce que vous voulez, c'est parce que a
détiendra simplement la valeur entière représentant un caractère spécifique. Par exemple, le nombre ASCII pour '9'
Est égal à 57, et pour 'a'
, Il s'agit de 97.
Aussi pour ASCII:
if (theChar >= '0' && theChar <= '9')
if (theChar >= 'A' && theChar <= 'Z' || theChar >= 'a' && theChar <= 'z')
Jetez un coup d'œil à tableau ASCII pour voir par vous-même.
Aucune de ces choses ne sert à rien. Utilisez isalpha()
ou isdigit()
de la bibliothèque standard. Ils sont dans <ctype.h>
.
Si (theChar >= '0' && theChar <='9')
c'est un chiffre. Vous avez eu l'idée.
Vous pouvez normalement vérifier les lettres ou les chiffres en utilisant des conditions simples
if((ch>='a' && ch<='z') || (ch>='A' && ch<='Z))
{
/*This is an alphabet*/
}
Pour les chiffres, vous pouvez utiliser
if(ch>='0' && ch<='9')
{
/*It is a digit*/
}
Mais comme les caractères en C sont traités en interne comme valeurs ASCII , vous pouvez également utiliser ASCII pour les vérifier).
Comment vérifier si un caractère est un chiffre ou une lettre
C99 standard sur c >= '0' && c <= '9'
c >= '0' && c <= '9'
_ (mentionné dans une autre réponse ) fonctionne car brouillon standard C99 N1256 5.2.1 "Jeux de caractères" dit:
Dans les jeux de caractères source et d'exécution de base, la valeur de chaque caractère après 0 dans la liste de chiffres décimaux ci-dessus doit être supérieure de un à la valeur du précédent.
ASCII n'est pas garanti cependant.