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).