---
title: Chaînes de caractères
date: 2019-10-16
---

# Rappel: le type `char`{.C}

- Le type `char`{.C} est utilisé pour représenter un caractère.
- C'est un entier 8 bits signé.
- En particulier:
    - Écrire
        
        ```C
        char c = 'A';
        ```
    - Est équivalent à:

        ```C
        char c = 65;
        ```
- Les fonctions d'affichage interprètent le nombre comme sa valeur ASCII.

# Chaînes de caractères (strings)

- Chaîne de caractère `==` tableau de caractères **terminé par la valeur** `'\0'`{.C} ou `0`{.C}.

## Exemple

```C
char *str = "HELLO !";
```

Est représenté par

| `H`  | `E`  | `L`  | `L`  | `O`  |      | `!`  | `\0`|
|------|------|------|------|------|------|------|-----|
| `72` | `69` | `76` | `76` | `79` | `32` | `33` | `0` |

# Syntaxe

```C
char name[5];
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'};
char name[5] = "Paul";
char name[] = "Paul";
char name[100] = "Paul is not 100 characters long.";
```

# Fonctions

- Il existe une grande quantités de fonction pour la manipulation de chaînes de caractères dans `string.h`.
- 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);
    ```

- Pour avoir la liste complète: `man string`.