--- title: "Chaînes de caractères" date: "2022-11-01" --- # Rappel: la chaîne de caractères ## Existe-t-il un type `string`{.C} en `C`{.C}? . . . * Non. . . . ## Qu'est-ce qu'une chaîne de caractères en C? . . . * Un tableau de `char`{.C} (entier signé 8 bits, le code ASCII de chaque caractère). . . . ## Comment détecte-t-on la fin d'une chaîne de caractères? . . . * La chaîne est terminée lorsqu'on rencontre le caractère `\0`{.C} ou l'ASCII `0`{.C}. # Exemple ```C char *str = "HELLO !"; // statique ``` Est représenté par | `H` | `E` | `L` | `L` | `O` | | `!` | `\0`| |------|------|------|------|------|------|------|-----| | `72` | `69` | `76` | `76` | `79` | `32` | `33` | `0` | # Syntaxes alternatives ```C char name[10]; name[0] = 'P'; // = 70; name[1] = 'a'; // = 97; name[2] = 'u'; // = 117; name[3] = 'l'; // = 108; name[4] = '\0'; // = 0; char name[] = {'P', 'a', 'u', 'l', '\0'}; ``` # Fonctions - Il existe une grande quantités de fonction pour la manipulation de chaînes de caractères dans `string.h`. - Comment les trouver? . . . ```bash $ man 3 string ``` - Fonctions principales: ```C size_t strlen(char *str); char *strcpy(char *dest, const char *src); char *strncpy(char *dest, const char *src, size_t len); int strncmp(char *str1, char *str2, size_t len); int strcmp(char *str1, char *str2); ```