- string.h
-
<string.h> est l'en-tête de la bibliothèque standard de C, du langage C, qui contient les définitions des macros, des constantes et les déclarations de fonctions et de types utilisées non seulement pour la manipulation de chaînes de caractères, mais aussi pour diverses fonctions de manipulations de la mémoire.
Les fonctions déclarées dans string.h sont extrêmement utiles, puisqu'en tant que part de la bibliothèque standard C, il est certain qu'elles fonctionnent sur toute plate-forme qui supporte le langage C. Malgré tout, quelques problèmes de sécurité existent avec ces fonctions, comme des débordements de tampon, ce qui mène les programmeurs à préférer des solutions plus sûres, mais peut-être moins portables. De plus, ces fonctions ne sont compatibles qu'avec l'ASCII ou des codages semblables comme l'ISO-8859-1 ; les codages de caractères multibyte, tels qu'UTF-8, posent le problème que la « longueur » des chaînes est interprétée comme un nombre d'octets, plutôt que comme un nombre de caractère unicode. La manipulation des chaînes de type non-ASCII est généralement réalisé à travers wchar.h.
Sommaire
Constantes et types
Nom Notes NULL
macro exprimant le pointeur nul, cette constante représente la valeur du pointeur pour laquelle on est sûr qu'elle ne désigne ni une adresse valide, ni un objet en mémoire size_t
un entier non signé qui correspond au résultat de l'opérateur sizeof Fonctions
Nom Notes void *memcpy(void *dest, const void *src, size_t n);
copie n octets entre deux zones mémoire, qui ne doivent pas se superposer void *memmove(void *dest, const void *src, size_t n);
copie n octets entre deux zones mémoire ; à la différence de memcpy, les zones mémoire peuvent se superposer void *memchr(const void *s, int c, size_t n);
retourne en pointeur la première occurrence c parmi les n premiers octets de s, ou NULL si c n'est pas trouvé int memcmp(const void *s1, const void *s2, size_t n);
compare les n premiers caractères de deux zones mémoire void *memset(void *, int, size_t);
remplit une zone mémoire de la répétition d'un caractère char *strcat(char *dest, const char *src);
concatène la chaîne src à la suite de dest char *strncat(char * dest, const char * src, size_t n);
concatène au plus n caractères de la chaîne src à la suite de dest char *strchr(const char *, int);
cherche un caractère dans une chaîne et renvoie un pointeur sur le caractère, en cherchant depuis le début char *strrchr(const char *, int);
idem que strchr, recherche à partir de la fin int strcmp(const char *, const char *);
compare deux chaînes numériquement int strncmp(const char *, const char *, size_t n);
compare les n premiers octets au plus de deux chaînes en utilisant l'ordre lexicographique int strcoll(const char *, const char *);
compare deux chaînes en utilisant l'ordre lexicographique char *strcpy(char *toHere, const char *fromHere);
copie une chaîne de caractères d'une zone à une autre char *strncpy(char *toHere, const char *fromHere, size_t n);
copie au plus n caractères d'une chaîne d'une zone à une autre char *strerror(int);
retourne la chaîne de caractères correspondant à un numéro d'erreur size_t strlen(const char *);
retourne la longueur d'une chaîne caractères size_t strspn(const char *s, const char *accept);
détermine la taille de la sous-chaîne initiale maximale de s ne contenant que des caractères présents dans accept size_t strcspn(const char *s, const char *reject);
détermine la taille de la sous-chaîne initiale maximale de s ne contenant pas de caractères de reject char *strpbrk(const char *s, const char *accept);
trouve la première occurrence d'un caractère d'accept dans s char *strstr(const char *haystack, const char *needle);
trouve la première occurrence de la chaîne needle dans la chaîne haystack char *strtok(char *, const char *);
scinde une chaîne en éléments lexicaux. Note: la fonction modifie la chaîne passée en paramètre. size_t strxfrm(char *dest, const char *src, size_t n);
transforme src de façon à ce que le tri par ordre lexicographique de la chaîne transformée soit équivalent au tri par ordre lexicographique de src. Extensions à ISO C
Nom Notes Spécification char *strdup(const char *);
alloue et duplique une chaîne en mémoire POSIX ; une extension de BSD au départ errno_t strcpy_s(char *restrict s1, rsize_t s1max, const char *restrict s2);
variante de strcpy
qui vérifie les tailles en mémoireISO/IEC WDTR 24731 void *mempcpy(void *dest, const void *src, size_t n);
variante de memcpy
donnant un pointeur sur l'octet suivant le dernier écritGNU void *memccpy(void *dest, const void *src, int c, size_t n);
copie au plus n octets entre deux zones mémoire, qui ne doivent pas se superposer, en s'arrêtant quand la caractère c est trouvé UNIX 98? int *strerror_r(int, char *, size_t);
retourne la représentation en chaîne d'un code d'erreur (version compatible avec les threads) GNU, POSIX size_t strlcpy(char *dest, const char *src, size_t n);
variante de strcpy
qui vérifie la taille des zones allouéesà l'origine OpenBSD, également FreeBSD, Solaris, Mac OS X char *strtok_r(char *, const char *, char **);
version de strtok compatible avec les threads POSIX char *strsignal(int sig);
tout comme strerror, renvoie une description textuelles d'un signal (fonctionnement non garanti avec les threads) BSDs, Solaris, Linux Liens internes
Wikimedia Foundation. 2010.