Le retour chariot de Windows est \r\n
alors que c'est \n
dans Unix, est \r\n
traités comme deux caractères ?
Réponses
Trop de publicités?Ce sont deux personnages :
-
\r
est un retour chariot ; -
\n
est un saut de ligne.
Deux caractères combinés représentent une nouvelle ligne sous Windows. Alors que sur Linux, \n
représente une nouvelle ligne. Il déplace le curseur au début de la nouvelle ligne sous Linux. Sous Windows, le curseur reste dans la même colonne de la console mais sur la ligne suivante.
\r
sous Linux a le même effet que sous Windows : déplace le curseur au début de la ligne. Il est possible d'imprimer différentes informations sur la même ligne lorsque \r
est utilisé à la place de \n
.
Cela dépend du cadre. \r\n
a une largeur de deux octets (en ASCII, UTF-8, etc.), mais les bibliothèques d'E/S telles que celle de C stdio
et d'autres, lorsqu'ils fonctionnent en mode texte, peuvent traduire entre les langues suivantes \n
y \r\n
de manière quasi-transparente.
C'est-à-dire que sur une plate-forme Windows, un programme C lisant un flux en mode texte txt_in
avec
while ((c = getc(txt_in)) != EOF)
printf("%02x\n", c);
ne signalera pas le code ASCII pour \r
. Inversement, putc('\n', txt_out)
écrira réellement \r\n
au flux en mode texte txt_out
.
Windows ne fait pas de distinction entre \r\n
et deux autres caractères quelconques. Cependant, il existe une situation où il est traité comme un seul caractère : si vous utilisez le moteur d'exécution C et ouvrez un fichier en tant que texte, \r\n
dans le fichier sera lu comme \n
et \n
sera écrit dans le fichier en tant que \r\n
.
- Réponses précédentes
- Plus de réponses