---
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);
    ```