web-dev-qa-db-fra.com

Déterminer si le caractère est un chiffre ou une lettre

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
46
Mona

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

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.

21
Christopher Neylan

<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:

  • Numérique - if (theChar >= '0' && theChar <= '9')
  • Alphabétique -
    if (theChar >= 'A' && theChar <= 'Z' || theChar >= 'a' && theChar <= 'z')

Jetez un coup d'œil à tableau ASCII pour voir par vous-même.

13
AusCBloke

Aucune de ces choses ne sert à rien. Utilisez isalpha() ou isdigit() de la bibliothèque standard. Ils sont dans <ctype.h>.

10

Si (theChar >= '0' && theChar <='9') c'est un chiffre. Vous avez eu l'idée.

5
Mike Dunlavey

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

3
Pankaj Prakash

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.