Escape sequences
Les séquences d'échappement sont utilisées pour représenter certains caractères spéciaux dans les littéraux de chaîne et les constantes de caractères .
Les séquences d'échappement suivantes sont disponibles. La norme ISO C exige un diagnostic si la barre oblique inverse est suivie d'un caractère non listé ici :
|
Séquence
d'échappement |
Description | Représentation |
|---|---|---|
| Séquences d'échappement simples | ||
\'
|
guillemet simple |
octet
0x27
en codage ASCII
|
\"
|
guillemet double |
octet
0x22
en codage ASCII
|
\?
|
point d'interrogation |
octet
0x3f
en codage ASCII
|
\\
|
barre oblique inverse |
octet
0x5c
en codage ASCII
|
\a
|
sonnerie audible |
octet
0x07
en codage ASCII
|
\b
|
retour arrière |
octet
0x08
en codage ASCII
|
\f
|
saut de page |
octet
0x0c
en codage ASCII
|
\n
|
saut de ligne |
octet
0x0a
en codage ASCII
|
\r
|
retour chariot |
octet
0x0d
en codage ASCII
|
\t
|
tabulation horizontale |
octet
0x09
en codage ASCII
|
\v
|
tabulation verticale |
octet
0x0b
en codage ASCII
|
| Séquences d'échappement numériques | ||
\
nnn
|
valeur octale arbitraire |
unité de code
nnn
|
\x
n...
|
valeur hexadécimale arbitraire |
unité de code
n...
(nombre arbitraire de chiffres hexadécimaux)
|
| Noms de caractères universels | ||
\u
nnnn
(depuis C99)
|
Unicode
valeur dans la plage autorisée ;
peut produire plusieurs unités de code |
point de code
U+
nnnn
|
\U
nnnnnnnn
(depuis C99)
|
Unicode
valeur dans la plage autorisée ;
peut produire plusieurs unités de code |
point de code
U+
nnnnnnnn
|
Plage des noms de caractères universels
Si un nom de caractère universel correspond à un point de code qui n'est pas
|
(depuis C99) |
Notes
\ 0 est la séquence d'échappement octale la plus couramment utilisée, car elle représente le caractère nul de terminaison dans les chaînes de caractères terminées par un nul.
Le caractère de nouvelle ligne \n a une signification particulière lorsqu'il est utilisé dans les entrées/sorties en mode texte : il est converti en séquence d'octets ou octet de nouvelle ligne spécifique au système d'exploitation.
Les séquences d'échappement octales ont une limite de longueur de trois chiffres octaux mais se terminent au premier caractère qui n'est pas un chiffre octal valide si celui-ci est rencontré plus tôt.
Les séquences d'échappement hexadécimales n'ont pas de limite de longueur et se terminent au premier caractère qui n'est pas un chiffre hexadécimal valide. Si la valeur représentée par une seule séquence d'échappement hexadécimale ne correspond pas à la plage de valeurs représentée par le type de caractère utilisé dans ce littéral de chaîne ou cette constante de caractère ( char , char8_t (depuis C23) , char16_t , char32_t (depuis C11) , ou wchar_t ), le résultat n'est pas spécifié.
|
Un nom de caractère universel dans un littéral de chaîne étroite ou un littéral de chaîne 16 bits (depuis C11) peut correspondre à plus d'une unité de code, par exemple \U0001f34c représente 4 char unités de code en UTF-8 ( \xF0\x9F\x8D\x8C ) et 2 char16_t unités de code en UTF-16 ( \xD83C\xDF4C ) (depuis C11) . |
(depuis C99) |
|
Un nom de caractère universel correspondant à un point de code supérieur à
|
(depuis C99)
(jusqu'à C23) |
|
La séquence d'échappement du point d'interrogation \ ? est utilisée pour empêcher l'interprétation des trigraphes dans les littéraux de chaîne : une chaîne telle que "??/" est compilée comme " \" , mais si le second point d'interrogation est échappé, comme dans "? \? /" , elle devient "??/" |
(jusqu'en C23) |
Exemple
#include <stdio.h> int main(void) { printf("This\nis\na\ntest\n\nShe said, \"How are you?\"\n"); }
Sortie :
This is a test She said, "How are you?"
Références
- Norme C17 (ISO/CEI 9899:2018) :
-
- 5.2.2 Sémantique d'affichage des caractères (p: 18-19)
-
- 6.4.3 Noms de caractères universels (p: 44)
-
- 6.4.4.4 Constantes de caractère (p: 48-50)
- Norme C11 (ISO/IEC 9899:2011) :
-
- 5.2.2 Sémantique d'affichage des caractères (p: 24-25)
-
- 6.4.3 Noms de caractères universels (p: 61)
-
- 6.4.4.4 Constantes de caractère (p: 67-70)
- Norme C99 (ISO/CEI 9899:1999) :
-
- 5.2.2 Sémantique d'affichage des caractères (p: 19-20)
-
- 6.4.3 Noms de caractères universels (p: 53)
-
- 6.4.4.4 Constantes de caractères (p: 59-61)
- Norme C89/C90 (ISO/CEI 9899:1990) :
-
- 2.2.2 Sémantique d'affichage des caractères
-
- 3.1.3.4 Constantes de caractères
Voir aussi
|
Documentation C++
pour
Séquences d'échappement
|