Référence du fichier string.h


Description détaillée

Cet entête déclare principalement des fonctions destinées aux traitements de chaînes de caractères terminées par un caractère nul et des fonctions destinées à la manipulation des objets traités comme étant des tableaux de bytes.


Macros

#define NULL
 pointeur nul

Définition de type

typedef __unsigned size_t
 taille des objets

Fonctions

void * memcpy (void *dst, const void *src, size_t n)
 copie la mémoire
void * memmove (void *dst, const void *src, size_t n)
 copie la mémoire
void * strcpy (char *dst, const char *src)
 copie une chaîne de caractères
char * strncpy (char *dst, const char *src, size_t n)
 copie un nombre limité de caractères
char * strcat (char *dst, const char *src)
 concatènation de chaînes
char * strncat (char *dst, const char *src, size_t n)
 concaténation de chaînes avec vérification
int memcmp (const void *s1, const void *s2, size_t n)
 comparaison de zones de mémoire
int strcmp (const char *s1, const char *s2)
 comparaison de chaînes
int strcoll (const char *s1, const char *s2)
 comparaison de chaînes en tenant compte de la locale
int strncmp (const char *s1, const char *s2, size_t n)
 comparaison de chaînes
size_t strxfrm (char *dst, const char *src, size_t n)
 transformation en forme facilement comparable
void * memchr (const void *s, int c, size_t n)
 cherche un byte en mémoire
char * strchr (const char *s, int c)
 cherche un byte dans une chaîne
size_t strcspn (const char *src, const char *set)
char * strpbrk (const char *src, const char *sep)
char * strrchr (const char *s, int c)
 cherche un byte dans une chaîne
size_t strspn (const char *src, const char *set)
 taille du préfixe
char * strstr (const char *src, const char *what)
 recherche de sous-chaîne
char * strtok (char *src, const char *sep)
 décomposition en symboles
void memset (void *dst, int c, size_t n)
 initialisation de la mémoire
char * strerror (int errnum)
 chaîne décrivant une erreur
size_t strlen (const char *s)
 longueur d'une chaîne


Documentation des macros

#define NULL

Cette macro contient une constante de pointeur nul. Des valeurs populaires sont 0, 0L, (void*)0.

Voir stddef.h pour plus d'informations.


Documentation des définition de type

typedef __unsigned size_t

Ce type entier non signé est capable de contenir la taille des objets.

Voir stddef.h pour plus d'informations.


Documentation des fonctions

void* memchr ( const void *  s,
int  c,
size_t  n 
)

Cherche le premier byte de valeur c (c doit être une valeur représentable dans un unsigned char) dans la zone mémoire de n bytes pointée par s.

Retourne
un pointeur vers le premier byte de valeur c dans la zone mémoire de n bytes pointée par s.

NULL si il n'y a pas de byte de valeur c dans les n bytes de l'objet pointé par s.

Note:
Au contraitre des fonctions de <ctype.h>, EOF n'est pas une valeur valide pour c.

int memcmp ( const void *  s1,
const void *  s2,
size_t  n 
)

Compare les n premiers bytes de l'objet pointé par s1 aux n premiers bytes de l'objet pointé par s2.

Retourne
0 si les n premiers bytes de s1 sont égaux aux n premiers bytes de s2.

un entier inférieur à, ou supérieur à zéro suivant que le premier byte de s1 différent du byte correspondant de s2 est inférieur ou supérieur à celui-ci.

void* memcpy ( void *  dst,
const void *  src,
size_t  n 
)

Copie les n premiers bytes de src dans l'objet pointé par dst.

Retourne
dst
Note:
Le comportement est indéfini si les objets se recouvrent. Voir memmove() qui a un comporement défini dans ce cas.

void* memmove ( void *  dst,
const void *  src,
size_t  n 
)

Copie les n premiers bytes de src dans l'objet pointé par dst.

Retourne
dst

Note:
Le comportement est bien défini même si les objets se recouvrent.

void memset ( void *  dst,
int  c,
size_t  n 
)

Copie le caractère c dans les n premiers bytes de l'objet pointé par dst.

Note:
Il ne faudrait pas supposer que les entiers et les flottants de valeur nulle et les pointeurs nuls ont une représentation composée de tout leurs bytes à 0.

char* strcat ( char *  dst,
const char *  src 
)

Copie la chaîne pointée par src à la fin de la chaîne pointée par dst, la copie du premier caractère de src écrasant le caractère nul terminant la chaîne pointée par dst.

Retourne
dst

Note:
Le comportement est indéfini si les objets se recouvrent.

Cette fonction ne fait aucune vérification de capacité sur la destination.

char* strchr ( const char *  s,
int  c 
)

Cherche le premier byte de valeur c (c doit être une valeur représentable dans un unsigned char) dans la chaîne pointée par s.

Retourne
un pointeur vers le premier byte de valeur c dans s.

NULL si il n'y a pas de byte de valeur c dans s.

Note:
Au contraitre des fonctions de <ctype.h>, EOF n'est pas une valeur valide pour c.

Voir memchr(), strrchr().

int strcmp ( const char *  s1,
const char *  s2 
)

Compare les chaînes pointées par s1 et s2.

Retourne
0 si les chaînes sont égales.

un entier inférieur à, ou supérieur à zéro suivant que le premier byte de s1 différent du byte correspondant de s2 est inférieur ou supérieur à celui-ci.

int strcoll ( const char *  s1,
const char *  s2 
)

Compare les chaînes pointées par s1 et s2.

Retourne
0 si les chaînes sont égales.

un entier inférieur à, ou supérieur à zéro suivant que d'après la locale en cours s1 doit se trouver avant s2 dans l'ordre lexicographique.

Note:
Cette fonction dépend de la locale en cours.

Note:
L'ordre lexicographique est quelque chose de relativement complexe. Par exemple pour le français la comparaison s'effectue en quatre phases. Durant la première, seules sont prises en compte les lettres, en ignorant les accents et la différence entre majuscule et minuscule. La deuxième phase prend en compte les accents, mais commence par la fin. La troisième prend en compte la différence entre majuscule et minuscule. La quatrième prend en compte les autres caractères.

void* strcpy ( char *  dst,
const char *  src 
)

Copie la chaîne pointée par src jusqu'à et y compris un caractère nul final dans le tableau pointé par dst.

Retourne
dst

Note:
Le comportement est indéfini si les objets se recouvrent.

Cette fonction ne fait aucune vérification de capacité sur la destination.

size_t strcspn ( const char *  src,
const char *  set 
)

char* strerror ( int  errnum  ) 

Retourne
Une chaîne décrivant l'erreur errnum.

Note:
La chaîne retournée peut être modifiée par un appel ultérieur à strerror(), il faut donc la copier si on veut la conserver. L'implémentation doit se comporter comme si aucune fonction de la bibliothèque (même pas perror()) n'appellait strerror().

size_t strlen ( const char *  s  ) 

Retourne
La longueur en bytes (non compris le caractère nul final) de la chaîne pointée par s.

char* strncat ( char *  dst,
const char *  src,
size_t  n 
)

Copie la chaîne pointée par src à la fin de la chaîne pointée par dst, la copie de premier caractère de src écrasant le caractère nul terminal la chaîne pointée par dst. Si src fait plus de n caractères, seuls les n premiers caractères sont copiés et un caractère nul est ensuite ajouté.

Retourne
dst

Note:
Le comportement de cette fonction est indéfini si les objets pointés par src et dst se recouvrent.

Le tableau pointé par dst doit donc faire au moins strlen(dst) + n + 1 bytes.

int strncmp ( const char *  s1,
const char *  s2,
size_t  n 
)

Compare les chaînes pointées par s1 et s2 en se limitant à n caractères.

Retourne
0 si les chaînes sont égales.

un entier inférieur à, ou supérieur à zéro suivant que le premier byte de s1 différent du byte correspondant de s2 est inférieur ou supérieur à celui-ci.

char* strncpy ( char *  dst,
const char *  src,
size_t  n 
)

Copie la chaîne pointée par src, jusqu'à avoir copié n caractères ou un caractère nul. Si moins de n caractères ont été copiés, des caractères nuls sont ajoutés pour arriver à avoir écrit n caractères.

Retourne
dst

Note:
Le comportement est indéfini si les objets se recouvrent.

La fonction a son origine dans la manipulation de champs de longueur fixe, dans le noyau de Unix. En tant que fonction de manipulation de chaîne à utiliser pour éviter les dépassements de capacité, le fait qu'elle n'impose pas à la chaîne destination d'avoir un caractère nul final fait qu'elle n'est pas d'un usage aisé, le fait qu'elle va écrire nécessairement n bytes fait qu'elle n'est pas nécessairement un bon choix en matière de performance.

char* strpbrk ( const char *  src,
const char *  sep 
)

char* strrchr ( const char *  s,
int  c 
)

Cherche le dernier byte de valeur c (c doit être une valeur représentable dans un unsigned char) dans la chaîne pointée par s.

Retourne
un pointeur vers le dernier byte de valeur c dans s.

NULL si il n'y a pas de byte de valeur c dans s.

Note:
Au contraitre des fonctions de <ctype.h>, EOF n'est pas une valeur valide pour c.

size_t strspn ( const char *  src,
const char *  set 
)

Retourne
la taille du préfixe de la chaîne src composés de caractères dans sep.

char* strstr ( const char *  src,
const char *  what 
)

Retourne
un pointeur vers la première occurence de la chaîne what (sans le caractère nul final) dans la chaîne src.

un pointeur nul si la chaîne what n'est pas présente dans src.

char* strtok ( char *  src,
const char *  sep 
)

Cherche dans src, ou à partir d'un pointeur sauvegardé si src est un pointeur nul, un symbole composés de caractères non présents dans sep et retourne un pointeur vers celui-ci. Le premier caractère présent dans sep qui suit est écrasé par un caractère nul et un pointeur vers le caractère suivant est mémorisé pour continuer la recherche.

Retourne
un pointeur vers le prochain symboles composés de caractères non présents dans sep.

un pointeur nul si la chaîne est composée uniquement de caractères présents dans sep.

Note
Cette fonction mémorisant la position, il faut faire attention à ne pas chercher à imbriquer des appels. Aucune fonction de la bibliothèque n'appelle strtok().

Exemple
Pour décomposer une chaîne à la position des blancs:
char* tk;
for (tk = strtok(s, " \t"); tk != NULL; tk = strtok(NULL, " \t")) {
   printf("%s\n", tk);
}

size_t strxfrm ( char *  dst,
const char *  src,
size_t  n 
)

Transforme la chaîne src de manière à ce que strcmp() appliquée à deux chaînes qui ont ainsi été transformée a le même résultat que strcoll().

La version transformée est sockée dans le tableau de b bytes pointé par dst. Si la version transformée a besoin de plus de n bytes (y compris le caractère nul final, donc si le résultat de la fonction est supérieur ou égal à n), le contenu de dst est indéfini.

Retourne
la taille nécessaire pour stockée la chaîne transformée, sans compter le caractère nul final.


Copyright © 2008 -- 2009 Jean-Marc Bourguet Accueil Pages sur le C