© Éditions Eyrolles
153
chapitre n° 8
Les chaînes de caractères
4 Généralités sur les fonctions portant sur des chaînes
C dispose de nombreuses fonctions de manipulation de chaînes. Avant d’en voir les principales
(les autres étant, de toute façon, présentées dans l’annexe), voyons quelques principes généraux.
4.1 Ces fonctions travaillent toujours sur des adresses
Tout d’abord, rappelons qu’il n’y a pas de véritable type chaîne en C, mais simplement une
convention de représentation. On ne peut donc jamais transmettre la valeur d’une chaîne, mais
seulement son adresse, ou plus précisément un pointeur sur son premier caractère. Ainsi, pour
comparer deux chaînes, on transmettra à la fonction concernée (ici, strcmp) deux pointeurs
de type char *.
Mieux, pour recopier une chaîne d’un emplacement à un autre, on fournira à la fonction
voulue (ici, strcpy) l’adresse de la chaîne à copier et l’adresse de l’emplacement où devra
se faire la copie. Encore faudra-t-il avoir prévu de disposer de suffisamment de place à cet
endroit ! En effet, rien ne permet à la fonction de reconnaître qu’elle a écrit au-delà de ce que
vous vouliez. En fait, vous disposerez cependant d’une façon de vous prémunir contre de tels
risques ; en effet, toutes les fonctions qui placent ainsi une information (susceptible d’être
d’une longueur quelconque) à un emplacement d’adresse donnée possèdent deux variantes :
l’une travaillant sans contrôle, l’autre possédant un argument supplémentaire permettant de
limiter le nombre de caractères effectivement copiés à l’adresse concernée.
4.2 La fonction strlen
La fonction strlen fournit en résultat la longueur d’une chaîne dont on lui a transmis
l’adresse en argument. Cette longueur correspond tout naturellement au nombre de caractères
trouvés depuis l’adresse indiquée jusqu’au premier caractère de code nul, ce caractère n’étant
pas pris en compte dans la longueur.
Par exemple, l’expression :
strlen ("bonjour")
vaudra 7 ; de même, avec :
char * adr = "salut" ;
l’expression :
strlen (adr)
vaudra 5.
Delannoy Livre.book Page 153 Mercredi, 6. mai 2009 4:26 16
153
chapitre n° 8
Les chaînes de caractères
4 Généralités sur les fonctions portant sur des chaînes
C dispose de nombreuses fonctions de manipulation de chaînes. Avant d’en voir les principales
(les autres étant, de toute façon, présentées dans l’annexe), voyons quelques principes généraux.
4.1 Ces fonctions travaillent toujours sur des adresses
Tout d’abord, rappelons qu’il n’y a pas de véritable type chaîne en C, mais simplement une
convention de représentation. On ne peut donc jamais transmettre la valeur d’une chaîne, mais
seulement son adresse, ou plus précisément un pointeur sur son premier caractère. Ainsi, pour
comparer deux chaînes, on transmettra à la fonction concernée (ici, strcmp) deux pointeurs
de type char *.
Mieux, pour recopier une chaîne d’un emplacement à un autre, on fournira à la fonction
voulue (ici, strcpy) l’adresse de la chaîne à copier et l’adresse de l’emplacement où devra
se faire la copie. Encore faudra-t-il avoir prévu de disposer de suffisamment de place à cet
endroit ! En effet, rien ne permet à la fonction de reconnaître qu’elle a écrit au-delà de ce que
vous vouliez. En fait, vous disposerez cependant d’une façon de vous prémunir contre de tels
risques ; en effet, toutes les fonctions qui placent ainsi une information (susceptible d’être
d’une longueur quelconque) à un emplacement d’adresse donnée possèdent deux variantes :
l’une travaillant sans contrôle, l’autre possédant un argument supplémentaire permettant de
limiter le nombre de caractères effectivement copiés à l’adresse concernée.
4.2 La fonction strlen
La fonction strlen fournit en résultat la longueur d’une chaîne dont on lui a transmis
l’adresse en argument. Cette longueur correspond tout naturellement au nombre de caractères
trouvés depuis l’adresse indiquée jusqu’au premier caractère de code nul, ce caractère n’étant
pas pris en compte dans la longueur.
Par exemple, l’expression :
strlen ("bonjour")
vaudra 7 ; de même, avec :
char * adr = "salut" ;
l’expression :
strlen (adr)
vaudra 5.
Delannoy Livre.book Page 153 Mercredi, 6. mai 2009 4:26 16
