Bibliothèque <string.h>
Cette bibliothèque fournit un ensemble de fonctions qui permettent de manipuler des chaînes de caractères. En voici la liste :
strcat, strchr, strcmp, strcpy, strcspn, strlen, strncat, strncmp, strncpy, strpbrk, strrchr, strspn, strtok.
Vous remarquerez que leurs noms commencent toujours par "str" pour string (chaîne en anglais).
Nous détaillons le fonctionnement de :
-
char * strcpy (chaîne1, chaîne2) : copie le contenu de « chaîne2 » dans « chaîne1 ». L'ancienne valeur de chaîne1 est perdue. Retourne un « pointeur sur » chaîne1.
-
int strlen (chaîne) : renvoie le nombre de caractères de la chaîne. Cette fonction compte les caractères jusqu'à trouver le ‘\0'. La valeur renvoyée est le nombre de caractères avant le ‘\0'
-
char * strcat (chaîne1, chaîne2) : copie le contenu de chaîne2 à la fin de chaîne1. Retourne un « pointeur sur » chaîne1.
-
int strcmp ( chaîne1 , chaîne2 ) : compare les deux chaînes, retourne 0 en cas d'égalité, une valeur négative si « chaîne1 » est "avant" « chaîne2 » dans l'ordre lexicographique, une valeur strictement positive sinon.
-
char * strncat ( chaine1 , chaine2 , n ) : concatène au plus les « n » premiers caractères de « chaine2 » à « chaine1 ». Retourne un pointeur sur « chaine1 ». Si n est plus grand que la longueur de « chaine2 », la longueur de « chaine2 » est utilisée à la place de n. Retourne un « pointeur sur » chaîne1.
-
char * strncpy ( chaine1 , chaine2 , n) : copie « n » caractères de « chaine2 » sur « chaine1 ». Retourne « un pointeur sur chaine1 ». Si « n » est inférieur à longueur de « chaine2 » « \0 » n'est pas ajouté en fin de « chaine1 ». Si « n » est supérieur à longueur de « chaine2 », « chaine1 » est complétée par des « \0 ». Retourne un « pointeur sur » chaîne1.
Pour les opérations de copies, si la chaîne de caractères cible « chaîne1 » ne contient pas assez de place pour contenir « chaîne2 » alors seuls les caractères que l'on peut copier le sont. On dit que « chaîne2 » est tronquée.
Nous ne les décrirons pas toutes dans le cadre de ce cours introductif. Connaissant leur nom, il vous sera facile de retrouver ce qu'elles effectuent comme traitement en consultant les documentations adhoc.
Si vous ne leur fournissez pas de tableaux de caractères qui comportent quelque part le caractère de marquage '\0', vous pouvez avoir des problèmes en les utilisant.
« chaine1 » et « chaine2 » sont des chaînes de caractères c'est-à-dire qu'il faut transmettre aux fonctions des « pointeurs sur char »
En C, on ne peut pas comparer deux chaînes de caractères avec les opérateurs >, >=, <, <=, ==. Il faut utiliser la fonction « strcmp ».