Convertir une chaîne de caractères en minuscules en C
-
Utiliser la fonction
tolower
pour convertir une chaîne de caractères en minuscules en C - Utiliser la fonction personnalisée pour convertir la chaîne de caractères en minuscules en C
Cet article présente plusieurs méthodes de conversion des chaînes de caractères en minuscules en C.
Utiliser la fonction tolower
pour convertir une chaîne de caractères en minuscules en C
La fonction tolower
fait partie de la bibliothèque standard C définie dans le fichier d’en-tête <ctype.h>
. La fonction tolower
prend un argument de type int
et retourne la valeur convertie du caractère donné si la représentation minuscule correspondante existe. Notez que le caractère passé doit être soit EOF soit de type unsigned char
représentable. Dans ce cas, nous initialisons le pointeur char
avec une valeur littérale de chaîne de caractères, puis nous itérions sur chaque caractère pour le convertir en valeurs minuscules. Notez cependant que les arguments de type char
passés à la fonction tolower
doivent être transformés en unsigned char
.
#include <ctype.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main() {
char *str = "THIS STRING LITERAL IS ARBITRARY";
printf("%s\n", str);
for (size_t i = 0; i < strlen(str); ++i) {
printf("%c", tolower((unsigned char)str[i]));
}
printf("\n");
exit(EXIT_SUCCESS);
}
Production :
THIS STRING LITERAL IS ARBITRARY
this string literal is arbitrary
L’exemple de code précédent écrase le contenu de la chaîne originale avec les caractères minuscules convertis. Alternativement, nous pouvons allouer un autre pointeur de char
en utilisant calloc
, qui est similaire à malloc
sauf qu’il met à zéro la mémoire allouée et stocke la chaîne convertie séparément. Notez que le pointeur doit être libéré avant que le programme ne se termine, ou si le processus est long, il doit être libéré dès que la variable string n’est plus nécessaire.
#include <ctype.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main() {
char *str = "THIS STRING LITERAL IS ARBITRARY";
printf("%s\n", str);
size_t len = strlen(str);
char *lower = calloc(len + 1, sizeof(char));
for (size_t i = 0; i < len; ++i) {
lower[i] = tolower((unsigned char)str[i]);
}
printf("%s", lower);
free(lower);
exit(EXIT_SUCCESS);
}
Production :
THIS STRING LITERAL IS ARBITRARY
this string literal is arbitrary
Utiliser la fonction personnalisée pour convertir la chaîne de caractères en minuscules en C
Une solution plus souple consisterait à mettre en œuvre une fonction personnalisée qui prendrait la variable chaîne comme argument et renverrait la chaîne minuscule convertie à un emplacement mémoire distinct. Cette méthode est essentiellement le découplage de l’exemple précédent de la fonction main
. Dans ce cas, nous avons créé une fonction toLower
qui prend char*
, où une chaîne à terminaison nulle est stockée et un entier de type size_t
indiquant la longueur de la chaîne. La fonction alloue la mémoire sur le tas en utilisant la fonction calloc
; ainsi l’appelant est responsable de désallouer la mémoire avant que le programme ne se termine.
#include <ctype.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char *toLower(char *str, size_t len) {
char *str_l = calloc(len + 1, sizeof(char));
for (size_t i = 0; i < len; ++i) {
str_l[i] = tolower((unsigned char)str[i]);
}
return str_l;
}
int main() {
char *str = "THIS STRING LITERAL IS ARBITRARY";
printf("%s\n", str);
size_t len = strlen(str);
char *lower = toLower(str, len);
printf("%s", lower);
free(lower);
exit(EXIT_SUCCESS);
}
Production :
THIS STRING LITERAL IS ARBITRARY
this string literal is arbitrary
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn Facebook