user
Comment tester si un caractère est une lettre minuscule en C ?
alphonsio

En C, la façon la plus directe de tester si un caractère est une lettre minuscule et de tester si elle est comprise entre a et z :

if (ch>='a' && ch<='z')
{
    // Lettre minuscule
    // ...
}

En langage C, pour tester si un caractère est une lettre minuscule, vous pouvez utiliser la fonction standard islower() de la bibliothèque <ctype.h>. Voici comment faire :

Exemple avec islower() :

#include <stdio.h>
#include <ctype.h>

int main() {
    char c = 'a';

    if (islower(c)) {
        printf("'%c' est une lettre minuscule.\n", c);
    } else {
        printf("'%c' n'est pas une lettre minuscule.\n", c);
    }

    return 0;
}

Explication :

  1. La fonction islower() retourne une valeur non nulle (vrai) si le caractère est une lettre minuscule ('a' à 'z').
  2. Si le caractère ne correspond pas à une lettre minuscule, elle retourne 0 (faux).

Sans ctype.h (manuellement avec des conditions) :

Si vous voulez éviter d'utiliser des bibliothèques, vous pouvez tester directement avec des comparaisons de plages de caractères :

#include <stdio.h>

int main() {
    char c = 'g';

    if (c >= 'a' && c <= 'z') {
        printf("'%c' est une lettre minuscule.\n", c);
    } else {
        printf("'%c' n'est pas une lettre minuscule.\n", c);
    }

    return 0;
}

Comparaison des deux approches :

  • islower() : Plus lisible, moins d'erreurs possibles, portable (gère même les systèmes où les encodages peuvent varier).
  • Comparaison directe : Simple, mais moins idiomatique et dépend des plages ASCII.

Limitations

  • Notons enfin qu'aucune des méthodes ne fonctionne avec les caractères accentués.