Transformer une chaîne en minuscules ou en majuscules

Problème

Vous voulez convertir une chaîne de caractères en majuscules ou en minuscules ou inverser la casse.

Solution

Parcourez la chaîne de caractères en remplaçant chaque caractère si la conversion le nécessite.

Discussion

Si la chaîne ne contient pas de caractère accentué, ou que vous voulez laisser les caractères accentués tels quels, il suffit de détecter les caractères minuscules (ou majuscules) et de leur retrancher (ou ajouter) l’expression ’a’-’A’.


void 
str_case_up (char *str) 
{ 
  int i; 
  for (i = 0; str[i]; i++) 
    { 
      if ((str[i] >= 'a') && (str[i] <= 'z')) 
        str[i] += ('A' - 'a'); 
    } 
}
 

La bibliothèque glib propose des fonctions g_ascii_toupper(), g_string_ascii_up() ou g_string_ascii_down() qui exécutent un code similaire et ne travaillent que sur les caractères ASCII standard. Sont également disponibles g_ascii_strup() ou g_ascii_strdown(), fonctions qui transforment la chaîne en la modifiant. En ce qui concerne les GString, utilisez g_string_ascii_up() et g_string_ascii_down().

Si votre chaîne contient des caractères accentués que vous voulez remplacer par une majuscule (ou une minuscule), les choses sont un peu différentes. Le plus simple est d’utiliser toupper() (ou tolower()) pour chaque caractère :...

Pour consulter la suite, découvrez le livre suivant :
couv_EI3CACT.png
60-signet.svg
En version papier
20-ecran_lettre.svg
En version numérique
41-logo_abonnement.svg
En illimité avec l'abonnement ENI
130-boutique.svg
Sur la boutique officielle ENI
Précédent
Transformer tout séparateur par une espace
Suivant
Introduction