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.
| 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 |
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.
| Nom | Type | Description |
|---|---|---|
__STDC_VERSION_STRING_H__ (C23) |
macro | Version de l'entête string.h. |
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 :