Participer au site avec un Tip
Rechercher
 

Améliorations / Corrections

Vous avez des améliorations (ou des corrections) à proposer pour ce document : je vous remerçie par avance de m'en faire part, cela m'aide à améliorer le site.

Emplacement :

Description des améliorations :

Vous êtes un professionnel et vous avez besoin d'une formation ? Programmation avec
Le langage C
Voir le programme détaillé

La librairie <string.h> (<cstring> en C++)

Le type errno_t


Présentation de l'entête <string.h>

La librairie <string.h> (<cstring> en C++) permet deux grandes catégories de traitements : les manipulations de chaînes de caractères et les manipulations de blocs mémoire. En fait, il n'y a pas tant de différences entre les deux types de traitements dans le sens où une chaîne de caractères est un bloc d'octets en mémoire : la seule différence étant qu'une chaîne de caractères possède un marqueur de fin particulier '\0' au contraire d'un bloc de mémoire pour lequel il faut connaître sa taille.

Les fonctions de manipulation de chaînes de caractères sont préfixées par str. Les fonctions de manipulation de blocs mémoire sont, quant à elles, préfixées par mem. Vous trouverez, dans le menu de gauche, la liste des fonctions proposées par ce module.

POSIX ajoute aussi plusieurs fonctions dans <string.h>. Ces éléments sont signalés par le badge (POSIX). Enfin, l'annexe K de C11 propose des variantes avec contrôle de bornes : elles sont standardisées, mais restent optionnelles et ne sont pas disponibles sur toutes les implémentations.

Liste des fonctionnalités offertes par l'entête <string.h>

Nom Type Description Depuis
errno_t (C11) type Le type errno_t est utilisé par les fonctions de contrôle de bornes de l'annexe K. Il représente un code de retour : la valeur 0 indique le succès, tandis qu'une valeur non nulle indique une erreur. C11 annexe K
memccpy (C23 / POSIX) fonction Copie un bloc mémoire jusqu'à rencontrer un octet donné ou jusqu'à atteindre la taille maximale demandée. C23 / POSIX XSI
memchr fonction Recherche la première occurrence d'une valeur dans un bloc mémoire. C89
memcmp fonction Compare deux blocs mémoire octet par octet. C89
memcpy fonction Copie un bloc mémoire dans un autre bloc sans gérer le chevauchement. C89
memcpy_s (C11) fonction La fonction memcpy_s est la variante avec contrôle de bornes de memcpy. Elle vérifie notamment que la zone de destination est assez grande avant d'effectuer la copie. C11 annexe K
memmem (POSIX) fonction La fonction memmem recherche un motif binaire dans un autre bloc mémoire. Elle est à strstr ce que memchr est à strchr : aucune terminaison par '\0' n'est requise. POSIX.1-2024
memmove fonction Copie un bloc mémoire en tolérant le chevauchement des deux zones. C89
memmove_s (C11) fonction La fonction memmove_s ajoute les contrôles de bornes de l'annexe K à la logique de memmove. Elle reste adaptée aux copies entre deux zones qui se chevauchent. C11 annexe K
memset fonction Remplit un bloc mémoire avec une valeur donnée. C89
memset_explicit (C23) fonction La fonction memset_explicit ressemble à memset, mais son appel ne doit pas être supprimé par l'optimiseur. Elle est prévue pour effacer des données sensibles, comme un mot de passe ou une clé temporaire. C23
memset_s (C11) fonction La fonction memset_s remplit une zone mémoire en ajoutant un contrôle de taille. Comme memset_explicit, elle est conçue pour ne pas disparaître lors des optimisations. C11 annexe K
stpcpy (POSIX) fonction La fonction stpcpy copie une chaîne de caractères comme strcpy, mais retourne l'adresse du caractère nul final dans la destination. Ce retour est pratique pour construire une chaîne par ajouts successifs. POSIX
stpncpy (POSIX) fonction La fonction stpncpy reprend l'idée de strncpy, tout en retournant l'adresse de fin utile dans le buffer de destination. POSIX
strcat fonction Ajoute une chaîne de caractères à la fin d'une autre chaîne. C89
strcat_s (C11) fonction La fonction strcat_s concatène deux chaînes de caractères en contrôlant la taille totale du buffer de destination. C11 annexe K
strchr fonction Recherche la première occurrence d'un caractère dans une chaîne. C89
strcmp fonction Compare deux chaînes de caractères en tenant compte de la casse. C89
strcoll fonction Compare deux chaînes en tenant compte de la localisation courante. C89
strcoll_l (POSIX) fonction La fonction strcoll_l compare deux chaînes selon les règles d'une localisation passée explicitement en paramètre. POSIX
strcpy fonction Copie une chaîne de caractères dans un buffer de destination. C89
strcpy_s (C11) fonction La fonction strcpy_s copie une chaîne en vérifiant que le buffer de destination peut contenir le résultat, caractère nul terminal compris. C11 annexe K
strcspn fonction Calcule la longueur du préfixe ne contenant aucun caractère d'une liste de rejet. C89
strdup (C23 / POSIX) fonction Alloue et produit une copie complète d'une chaîne de caractères. C23 / POSIX
strerror fonction Retourne le message associé à un code d'erreur. C89
strerror_l (POSIX) fonction La fonction strerror_l produit le message correspondant à un code d'erreur en utilisant explicitement une localisation. POSIX
strerror_r (POSIX) fonction La fonction strerror_r place le message associé à une erreur dans un buffer fourni par l'appelant. Elle évite donc de dépendre d'un buffer statique interne. POSIX
strerror_s (C11) fonction La fonction strerror_s est la variante de l'annexe K permettant de récupérer un message d'erreur dans un buffer dont la taille est contrôlée. C11 annexe K
strerrorlen_s (C11) fonction La fonction strerrorlen_s indique la taille du message d'erreur associé à un code, sans compter le caractère nul terminal. C11 annexe K
strlcat (POSIX) fonction La fonction strlcat concatène deux chaînes en connaissant la taille totale du buffer de destination. Elle retourne la taille qui aurait été nécessaire pour stocker le résultat complet. POSIX.1-2024
strlcpy (POSIX) fonction La fonction strlcpy copie une chaîne en connaissant la taille totale du buffer de destination. Le résultat est toujours terminé par '\0' si la taille disponible est strictement positive. POSIX.1-2024
strlen fonction Calcule la longueur d'une chaîne AZT, sans compter le caractère nul terminal. C89
strncat fonction Ajoute au plus un certain nombre de caractères à la fin d'une chaîne. C89
strncat_s (C11) fonction La fonction strncat_s ajoute au plus size caractères à une chaîne, tout en contrôlant la taille totale du buffer de destination. C11 annexe K
strncmp fonction Compare deux chaînes dans la limite d'un nombre maximal de caractères. C89
strncpy fonction Copie au plus un certain nombre de caractères d'une chaîne. C89
strncpy_s (C11) fonction La fonction strncpy_s copie au plus size caractères en contrôlant la taille du buffer de destination. C11 annexe K
strndup (C23 / POSIX) fonction Alloue et copie au plus un certain nombre de caractères depuis une chaîne source. C23 / POSIX
strnlen (POSIX) fonction La fonction strnlen calcule la longueur d'une chaîne, mais s'arrête dès que la limite maximale indiquée est atteinte. POSIX
strnlen_s (C11) fonction La fonction strnlen_s calcule une longueur de chaîne bornée. Contrairement à beaucoup d'autres fonctions de l'annexe K, elle retourne simplement 0 si le pointeur reçu est nul. C11 annexe K
strpbrk fonction Recherche le premier caractère appartenant à un ensemble. C89
strrchr fonction Recherche la dernière occurrence d'un caractère dans une chaîne. C89
strsignal (POSIX) fonction La fonction strsignal retourne une description textuelle d'un signal POSIX. POSIX
strspn fonction Calcule la longueur du préfixe ne contenant que des caractères acceptés. C89
strstr fonction Recherche une sous-chaîne dans une chaîne. C89
strtok fonction Découpe une chaîne en jetons successifs en utilisant un état interne. C89
strtok_r (POSIX) fonction La fonction strtok_r est la variante réentrante POSIX de strtok. L'état de parcours est stocké dans un pointeur fourni par l'appelant. POSIX
strtok_s (C11) fonction La fonction strtok_s est la variante de l'annexe K pour découper une chaîne en jetons tout en contrôlant la taille restante. C11 annexe K
strxfrm fonction Transforme une chaîne pour accélérer des comparaisons dépendantes de la localisation. C89
strxfrm_l (POSIX) fonction La fonction strxfrm_l transforme une chaîne selon les règles d'une localisation POSIX passée explicitement. POSIX


Le type errno_t




Compléments documentés pour string.h

Les éléments suivants complètent la documentation de l'entête <string.h>, notamment pour les ajouts ISO récents et les extensions POSIX.

NomTypeDescription
__STDC_VERSION_STRING_H__ (C23) macro Version de l'entête string.h.
Vous êtes un professionnel et vous avez besoin d'une formation ? Programmation avec
Le langage C
Voir le programme détaillé