Documentation (c) 2002 Pascal Martin (squale92) pour la bibliothèque Azur
string
Les fonctions de string permettent de manipuler des
chaînes de caractères.
Notons que, en Azur comme en C, les chaînes de caractères
correspondent à un tableau d'octets, qui est terminé par un
caractère valant zéro (à ne pas confondre avec le caractère '0')
: ce format de chaînes est dit "à zéro terminal".
Vous devez donc penser à réserver une place pour le zéro de
fin de chaîne au moment de la déclaration de celle-ci. (la
majeure partie des fonctions ici présentées auront un
comportement imprévisible si vous les faites travailler sur des
chaînes sans le zéro indicateur de fin).
Le terme anglais permettant de désigner ce que nous nommons de
ce côté de la Manche "chaînes de caractères" étant
"string", nous constaterons que toutes les fonctions de
manipulations de chaînes de caractères commencent par les
lettres "str" (string).
Voici les fonctions actuellement présentes dans cette bibliothèque :
strcmp strncpy strcpy strchr strlen
strcmp permet de comparer deux chaînes de caractères.
Cette fonction commence au premier caractère de chaque chaîne,
et les analyse de gauche à droite jusqu'à ce que :
- soit l'un des caractères d'une chaîne soit différent du
caractère de même indice dans la seconde,
- soit la fin d'une des chaînes soit atteinte.
Paramètres
char *Chaine1 |
pointeur sur la première chaîne de caractères. |
char *Chaine2 |
pointeur sur la seconde chaîne de caractères. |
Retour
short |
valeur entière codée sur deux octets
qui correspond au résultat de la soustraction entre le
caractère de Chaine1 différent du caractère
correspondant de Chaine2. Donc : - si la valeur est inférieure à zéro : Chaine1 est "inférieure" à Chaine2. - si la valeur est égale à zéro : Chaine1 est "égale" à Chaine2. - si la valeur est supérieure à zéro : Chaine1 est "supérieure" à Chaine2. |
Exemples :
strcmp("Salut", "Salut") renvoie
0 car aucun caractère ne diffère entre les deux chaînes.
strcmp("Hello", "World") renvoie -15
car le 'H' est situé 15 lettres avant le 'W' dans la table ASCII.
strcmp("Vive", "AZUR") renvoie 21
car le 'V' est situé 21 lettres après le 'A' dans la table
ASCII.
strncpy copie un certain nombre de caractères d'une chaîne vers une autre.
Paramètres
char *Dest |
chaîne de destination. |
char *Scr |
chaîne d'origine pour la copie. |
long+ Nombre |
nombre maximal de caractères à copier de Scr vers Dest. |
Retour
char * |
adresse de la chaîne de destination. |
Remarque :
La chaîne de destination doit être suffisamment grande pour
pouvoir contenir Nombre+1 caractères (en comptant le zéro
de fin de chaîne).
strcpy permet de copier une chaîne vers une autre, comme strncpy. Par contre, ici, tout le contenu de la chaîne source est copié.
Paramètres
char *Dest |
chaîne de destination. |
char *Scr |
chaîne d'origine pour la copie. |
Retour
char * |
adresse de la chaîne de destination. |
Remarque :
La chaîne de destination doit être suffisament grande pour
pouvoir contenir la chaîne d'origine !
strchr permet de déterminer la position dans une chaîne de la première occurence d'un caractère souhaité.
Paramètres
char *Chaine |
pointeur sur la chaîne de caractères dans laquelle la recherche doit se faire. |
short Car |
caractère dont vous souhaitez connaître
la position. Vous avez deux façons de passer ce paramètre
: en écrivant en chiffres le code ASCII du caractère,
ou en écrivant le caractère entre apostrophes. Bien sûr, si le caractère à afficher est dans une variable, la question ne se pose pas... |
Retour
char * |
pointeur sur la première occurence du caractère recherché (en lisant la chaîne de gauche à droite). Si le caractère n'est pas trouvé dans la chaîne, la fonction renverra NULL. |
Remarque :
Avec cette fonction, le zéro de fin de chaîne est considéré
comme appartenant à celle-ci.
strlen permet de déterminer le nombre de caractères d'une chaîne de caractères.
Paramètres
char *Chaine |
chaîne de caractères dont on souhaite connaître la longueur (le nombre de caractères). |
Retour
long |
nombre de caractères de la chaîne (sans compter le zéro terminal). |