string.h | Chaîne de caractères |
---|---|
Langage C |
Description
Cette bibliothèque renferme les routines de traitement de chaîne de caractères. Il existe deux groupes de fonctions de chaîne définis dans l'entête <string.h>. Les premiers ont des noms commençant par str; les seconds ont des noms commençant par mem. À l'exception de memmove, le comportement n'est pas défini si la copie a lieu entre des objets se chevauchant. Les fonctions de comparaison traitent les paramètres comme des tableaux de caractères non signés.
Liste des fonctions
Nom | Prototype | Description |
---|---|---|
MEMCHR | void *memchr(const void *tampon, int caractere, size_t n) | Cette fonction permet de rechercher un caractère dans le tampon de «n» octets. |
MEMCMP | void *memcmp(const void *tamponrecherche, const void *tampondonnees, size_t n) | Cette fonction permet de rechercher un tampon de recherche dans le tampon de données de «n» octets. |
MEMCPY | void *memcpy(const void *tampondestination, const void *tamponsource, size_t n) | Cette fonction permet de copie un tampon source dans un tampon de destination de «n» octets. |
MEMMOVE | void *memmove(const void *tampondestination, const void *tamponsource, size_t n) | Cette fonction permet de copie un tampon source dans un tampon de destination de «n» octets. |
MEMSET | void *memset(const void *tampon, int caractere, size_t n) | Cette fonction permet de remplir avec un caractère un tampon de «n» octets. |
STRCAT | char *strcat(char *s1,char *s2) | Cette fonction permet la concaténation de chaînes de caractères. |
STRCHR | char *strchr(char *str,int c) | Cette fonction effectue la recherche du premier caractère «c» dans la chaîne de caractères «str». |
STRCMP | int strcmp(const char *str1,const char *str2) | Cette fonction effectue la comparaison de deux chaînes de caractères. |
STRCPY | char *strcpy(const char *str1,const char *str2) | Cette fonction effectue la copie d'une chaîne de caractères dans une autre chaîne de caractères. |
STRCSPN | char *strcspn(const char *str1,const char *str2) | Cette fonction effectue la recherche de la sous-chaîne «str1» ne contenant aucun des caractères contenu dans «str2». |
STRERROR | char *strerror(int noerr) | Cette fonction pointe sur le message d'erreur correspondant à «noerr». |
STRLEN | size_t strlen(const char *str) | Cette fonction permet de calculer la longueur de la chaîne de caractères. |
STRNCAT | char *strncat(const char *str1,const char *str2,size_t n) | Cette fonction permet d'ajouter les «n» premiers caractères de la chaîne de caractères «str1» à la chaîne de caractères «str2». |
STRNCMP | int strncmp(const char *str1,const char *str2,size_t n) | Cette fonction permet de comparer les «n» premiers caractères de la chaîne de caractères «str1» à la chaîne de caractères «str2». |
STRNCPY | char *strncpy(const char *str1,const char *str2,size_t n) | Cette fonction permet de copier les «n» premiers caractères de la chaîne de caractères «str1» à la chaîne de caractères «str2». |
STRPBRK | char *strpbrk(const char *source,const char *accept) | Cette fonction effectue la recherche dans la chaîne de caractères «source» de la chaîne de caractères «accept». |
STRRCHR | char *strrchr(const char *str,int c) | Cette fonction effectue la recherche du dernière caractère «c» dans la chaîne de caractères «str». |
STRSPN | int strspn(const char *str1,const char *str2) | Cette fonction effectue le calcul de la longueur de la chaîne de caractères «str1» dans lequel sont compris des caractères de la chaîne de caractères «str2». |
STRSTR | char *strstr(const char *str1,const char *str2) | Cette fonction permet de rechercher la chaîne de caractères «str2» dans la chaîne de caractères «str1». |
STRTOK | char *strtok(const char *str1,const char *str2) | Cette fonction permet de couper la chaîne de caractères «str1» en symbole élémentaire (Token) en les séparant par les caractères de la chaîne de caractères «str2». |
Remarques
- Les fonctions déclarées dans <string.h> constituent un ajout important au C standard. Elles prennent en charge une longue tradition d'utilisation du C
pour manipuler du texte sous forme de tableaux de caractères. Plusieurs autres langages intègrent mieux la manipulation de chaînes de caractères de texte,
SNOBOL en étant un parfait exemple. Tout ce que le C intègre dans le langage proprement dit est la notation pour les
littéraux de chaîne de caractères terminés par un caractère nul tels que «abc». La bibliothèque C standard fournit toutes les fonctionnalités importantes. Ces fonctions manipulent
trois formes de chaînes de caractères :
- Les fonctions dont le nom commence par mem manipulent des séquences de caractères arbitraires. Un paramètre pointe vers le début de la chaîne de caractères - l'élément le plus bas avec un indice. Un autre (n) compte le nombre d'éléments.
- Les fonctions dont le nom commence par strn manipulent des séquences de caractères non nuls. Les paramètres n sont les mêmes que ci-dessus. La chaîne se termine juste avant l'élément s[n] ou par la valeur la plus basse de i pour laquelle s[i] est zéro ('\0'), selon ce qui définit une séquence plus courte.
- Toutes les autres fonctions dont le nom commence par str manipulent des séquences de caractères terminées par un indice nul. Ces fonctions utilisent uniquement le paramètre s pour déterminer le début de la chaîne de caractères.
Chaque groupe a ses utilisations distinctes, comme vous pouvez vous y attendre.
- Inconvénients : Ce à quoi vous ne vous attendriez pas, ce sont plusieurs erreurs de conception dans ces fonctions. Les fonctions déclarées dans <strinq.h> ne sont pas le résultat d'un effort de conception concerté. Elles représentent plutôt l'accumulation de contributions apportées par divers auteurs sur une période de plusieurs années. Au moment où l'effort de normalisation du C a commencé, il était trop tard pour les «réparer». Trop de programmes avaient des notions précises sur la façon dont les fonctions devaient se comporter. Certains des problèmes sont les suivants :
- De nombreuses fonctions de recherche renvoient un pointeur nul lorsque la recherche échoue. Vous devez capturer la valeur de retour et la tester avant de pouvoir l'utiliser en toute sécurité. Un pointeur vers la fin de la chaîne de caractères est tout aussi bon comme code d'échec et bien plus utilisable dans les expressions.
- Les fonctions de copie renvoient un pointeur vers le début de la zone de destination. Cela est parfois utile dans une expression plus longue, mais l'adresse de la fin de la copie est plus informative. Vous pouvez effectuer plusieurs copies plus efficacement avec la dernière valeur de retour qu'avec la première.
- Les noms de certaines fonctions sont mystérieux. strcspn et strpbrk, par exemple, ne proclament pas haut et fort ce qu'elles font.
- L'ensemble des fonctions est incomplet et incohérent. strnlen et memrchr sont deux ajouts judicieux, par exemple, alors que strncat est surprenant.
Dernière mise à jour : Mercredi, le 2 septembre 2015