\chapter{Bibliothèque standard du C}
C'est un ensemble de bibliothèques standard de C, le code de ces fonctions est indépendant du type de PIC 

\section{String}\label{ID_STRING}
Définit la bibliothèque standard de C : Chaîne de caractères String.h.

\verb! #include    <string.h> !

\subsection{Memchr} \label{ID_MEMCHR}
Localise la première détection du caractère c (converti en caractère non signé unsigned char) dans les n premiers caractères (chacun interprété comme un caractère non signé unsigned char) de l'objet pointé par s.

La fonction retourne un pointeur sur le caractère localisé, ou un pointeur nulle si le caractère n'apparait pas dans l'objet.

void *memchr (const void* s, int c, size\_t n);

\subsection{Memcmp} \label{ID_MEMCMP}
Compare les n premiers caractères de l'objet pointé par s1 (interprété comme un caractère non signé ~unsigned char) avec les n premiers caractères de l'objet pointé par s2 (interprété comme unsigned char).

La fonction retourne un nombre entier supérieur, égal, ou inférieur à zéro, approprié selon que l'objet pointé par s1 est supérieur, égal, ou inférieur à l'objet pointé par s2.

    int    memcmp (const void* s1, const void* s2, size\_t n);

\subsection{Memcpy} \label{ID_MEMCPY}
Copie les n premiers caractères de l'objet pointé par s2 dans l'objet pointé par s1.

La fonction retourne la valeur de s1. Si en copiant un objet vers l'autre ils se superposent, alors le comportement n'est pas défini.

    void* ~ memcpy (void* s1, const void* s2, size\_t n);

\subsection{Memmove} \label{ID_MEMMOVE}
Copie les n premiers caractères de l'objet pointé par s2 dans l'objet pointé par s1.

La fonction retourne la valeur de s1. Si en copiant un objet dans l'autre ils se superposent, alors le comportement n'est pas défini. 

~ ~ ~void* ~ memmove (void ~*s1, const void *s2, size\_t n);

\subsection{Memset} \label{ID_MEMSET}
Copie la valeur de c (convertie en unsigned char) dans chacun des n premiers caractères de l'objet pointé par s.

La fonction retourne la valeur de s. 

~void* ~ memset (void* s, int c, size\_t n);

\subsection{Strcat} \label{ID_STRCAT}
Ajoute une copie de la chaîne pointé par s2 (incluant le caractère nul) à la fin de la chaîne pointée par s1. Le caractère initial de s2 récrit le caractère nul à la fin de s1. 

La fonction retourne la valeur de s1. Si la copie fait en sorte que les objets se superposent, alors le comportement n'est pas défini 

~ ~ ~ char* strcat (char *s1, const char *s2);

\subsection{Strchr} \label{ID_STRCHR}
Localise la première apparition de c (converti en unsigned char) dans la chaîne pointée par s (incluant ~le caractère nul). 

La fonction retourne un pointeur à partir du caractère trouvé. Si il n'a pas trouvé le caractère, c, alors retourne un pointeur nul. 

~ ~ ~char* ~ strchr (const char* s, int c) ;

\subsection{Strcmp} \label{ID_STRCMP}
Compare la chaîne pointée par s1 avec la chaîne pointée par s2. 

La fonction retourne un nombre entier supérieur, égal, ou inférieur à zéro, approprié selon que l'objet pointé par s1 est supérieur, égal, ou inférieur à l'objet pointé par s2.

~ ~ ~int strcmp (const char* s1, const char* s2);

\subsection{Strcpy} \label{ID_STRCPY}

Copia la chaîne pointée par s2 (incluant le caractère nul) à la chaîne pointée par s1. 

La fonction retourne la valeur de s1. Si en copiant une chaîne sur l'autre elles se superposent, alors le comportement n'est pas défini. 

~ ~ ~char* ~ strcpy (char *s1, const char *s2);

\subsection{Strcspn} \label{ID_STRCSPN}
Compte le nombre de caractères d'une sous-{}chaîne initiale pointée par s1 qui ne contient aucun des caractères de la chaîne pointée par s2. 

La fonction retourne le nombre de caractères lus de la sous-{}chaîne jusqu'à ce qu'il ~trouve quelques un des caractères de s2. Le caractère nul n'est pas compté. 

~ ~ ~size\_t ~strcspn (const char *s1, const char *s2);

\subsection{Strerror} \label{ID_STRERROR}
Convertit le ~nombre d'erreur en errnum dans un message d'erreur (une chaîne de caractères). 

La fonction retourne la chaîne de caractères contenant le message associé avec le nombre d'erreur. Cette conversion y le contenu du message dépendent de l'implémentation. La chaîne ne sera pas modifiée par le programme, mais si elle peut être récrite avec un autre appel à la même fonction. 

~ ~ ~ ~char* ~ strerror (int errnum);

\subsection{Strlen} \label{ID_STRLEN}
Calcule le nombre de caractères de la chaîne pointée par s. 

La fonction retourne le nombre de caractères jusqu'au caractère nul, qui n'est pas inclus. 

~ ~ ~size\_t ~strlen (const char *s);

\subsection{Strncat} \label{ID_STRNCAT}
Ajoute pas plus de n caractères (un caractère nul et les caractères suivants ne sont pas ajoutés) de la chaîne pointée par s2 à la fin de la chaîne pointée par s1. Le caractère initial de s2 récrit le caractère nul à la fin de s1. Le caractère nul est toujours ajouté au résultat. 

La fonction retourne le nombre de caractères jusqu'au caractère nul, qui n'est pas inclus. 

~ ~ ~ ~char *strncat(char *s1, const char *s2, size\_t n);

\subsection{Strncmp} \label{ID_STRNCMP}
Compare pas plus de n caractères ~(les caractères postérieurs au caractère nul ne sont pas pris en compte) de la chaîne pointée par s1 avec la chaîne pointée par s2. 

La fonction retourne un nombre entier supérieur, égal, ou inférieur à zéro, approprié selon que l'objet pointé par s1 est supérieur, égal, ou inférieur à l'objet pointé par s2. 

~ ~ ~ ~ int strncmp(const char *s1, const char *s2, size\_t n);

\subsection{Strncpy} \label{ID_STRNCPY}
Copie pas plus de n caractères (caractères postérieurs au caractère nul ne sont pas copiés) de la chaîne pointée par s2 à la chaîne pointée par s1 

La fonction retourne la valeur de s1. Si en copiant une chaîne dans l'autre ils se superposent, alors le ~comportement n'est pas défini. Si le tableau pointé par s2 est une chaîne qui est plus courte que n caractères, alors des caractères nuls son ajoutés à la copie dans le tableau pointé par s1. 

~char *strncpy(char *s1, const char *s2, size\_t n);

\subsection{Strpbrk} \label{ID_STRPBRK}
Localise la première apparition de la chaîne pointée par s1 de n'importe quel caractère de la chaîne pointée par s2 . 

La fonction retourne un pointeur sur le caractère, o un pointeur nul si aucun caractère de s2 n'apparaît dans s1. 

~ char *strpbrk(const char *s1, const char *s2);

\subsection{Strrchr} \label{ID_STRRCHR}
Localise la dernière apparition de c (converti en unsigned char) dans la chaîne pointée par s (incluant ~le caractère nul). 

La fonction retourne un pointeur à partir du caractère trouvé. Si on n'a pas trouvé ~le caractère, c, alors on retourne un pointeur nul. 

~ ~ char *strrchr(const char *s, int c);

\subsection{Strspn} \label{ID_STRSPN}
renvoie la position du premier caractère d' une chaîne que ne coïncide ~avec aucun des caractères de l'autre chaîne donnée

La fonction renvoie la position du premier caractère d'une chaîne que ne coïncide avec aucun des caractères de l'autre chaîne donnée. 

~ size\_t strspn(const char *s1, const char *s2);

\subsection{Strstr} \label{ID_STRSTR}
Recherche une chaîne à l'intérieur de l'autre. 

La fonction retourne un pointeur sur la chaîne trouvée, ou un pointeur nul si la chaîne n'est pas trouvée. Si s2 pointe sur une chaîne de longueur zéro, la fonction retourne s1. 

~ ~ ~ ~char *strstr(const char *s1, const char *s2);
