<string.h> est l'en-tête de la bibliothèque standard du langage C qui contient les définitions des macros, des constantes et les déclarations de fonctions et de types utilisés 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ères Unicode. La manipulation des chaînes de type non-ASCII est généralement réalisée à travers wchar.h.
Constantes et types
Nom NotesNULL 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émoiresize_t un entier non signé qui correspond au résultat de l'opérateur sizeof
Fonctions
Nom Notesvoid *memcpy(void *dest, const void *src, size_t n); copie n octets entre deux zones mémoire, qui ne doivent pas se superposervoid *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 superposervoid *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émoirevoid *memset(void *, int, size_t); remplit une zone mémoire de la répétition d'un caractèrechar *strcat(char *dest, const char *src); concatène la chaîne src à la suite de destchar *strncat(char * dest, const char * src, size_t n); concatène au plus n caractères de la chaîne src à la suite de destchar *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ébutchar *strrchr(const char *, int); idem que strchr, recherche à partir de la finint strcmp(const char *, const char *); compare deux chaînes par ordre lexicographiqueint strncmp(const char *, const char *, size_t n); compare les n premiers octets au plus de deux chaînes en utilisant l'ordre lexicographiqueint strcoll(const char *, const char *); compare deux chaînes en utilisant l'ordre lexicographique, en prenant en compte les paramètres régionauxchar *strcpy(char *toHere, const char *fromHere); copie une chaîne de caractères d'une zone à une autrechar *strncpy(char *toHere, const char *fromHere, size_t n); copie au plus n caractères d'une chaîne d'une zone à une autrechar *strerror(int); retourne la chaîne de caractères correspondant à un numéro d'erreursize_t strlen(const char *); retourne la longueur d'une chaîne caractèressize_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 acceptsize_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 rejectchar *strpbrk(const char *s, const char *accept); trouve la première occurrence d'un caractère d'accept dans schar *strstr(const char *haystack, const char *needle); trouve la première occurrence de la chaîne needle dans la chaîne haystackchar *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 que le tri par ordre lexicographique sur des chaînes ainsi transformées soit équivalent au tri par ordre lexicographique sur les chaînes originales en prenant en compte les paramètres régionaux
Extensions à ISO C Nom Notes Spécificationchar *strdup(const char *); alloue et duplique une chaîne en mémoirePOSIX ; une extension de BSD au départerrno_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 24731void *mempcpy(void *dest, const void *src, size_t n);variante de memcpy donnant un pointeur sur l'octet suivant le dernier écritGNUvoid *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 le 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 dans un tampon spécifié par l'utilisateur (version de strerror() compatible avec les threads). La version GNU retourne un pointeur vers la chaîne représentant l'erreur.XSI, POSIXsize_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 Xchar *strtok_r(char *, const char *, char **); version de strtok compatible avec les threadsPOSIXchar *strsignal(int sig); tout comme strerror, renvoie une description textuelles d'un signal (fonctionnement non garanti avec les threads)BSDs, Solaris, Linux
Liens internes Langage C Bibliothèque standard du C
Catégorie:Bibliothèque standard du C
th:การจัดการสายอักขระในภาษาซี