Traiter les blancs au début et à la fin d’une chaîne

Problème

Vous voulez supprimer les blancs (espaces, tabulations) inutiles au début et/ou à la fin d’une chaîne de caractères.

Solution

Pour les blancs de début de chaîne, il faut détecter le premier caractère non blanc, puis recopier la chaîne à partir de celui-ci sur le début de la chaîne. Pour les blancs de fin de chaîne, il suffit de remplacer le premier de ces blancs par un caractère nul.

Discussion

L’opération de suppression des blancs de début de chaîne se fait facilement à condition de ne pas tomber dans le piège consistant à utiliser memcpy() car la chaîne initiale et celle de destination risquent de se chevaucher. Il faut utiliser impérativement memmove().


void 
str_chug (char *string) 
{ 
  char *p; 
  for (p = string; (*p == '\t' || *p == ' '); p++); 
  memmove (string, p, strlen (p) + 1); 
}
 

Cette fonction existe dans glib et s’appelle g_strchug().

Par ailleurs, lors de la recopie, si vous voulez également supprimer les caractères blancs de fin de chaîne, vous pouvez anticiper en ne recopiant pas ces caractères blancs. Il faut, dans ce cas, calculer la taille de la chaîne sans les caractères blancs afin de fournir cette valeur à memmove() en argument.


void 
str_chug_chomp (char *string) 
{ 
  char...
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
Trouver le nombre d'occurrences d'une chaîne de caractères dans une autre
Suivant
Transformer tout séparateur par une espace