77 votes

Est-ce que le retour chariot de Windows \r\n consiste en deux personnages ou en un seul personnage ?

Le retour chariot de Windows est \r\n alors que c'est \n dans Unix, est \r\n traités comme deux caractères ?

118voto

Alexey Ivanov Points 6564

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 .

8voto

TMS Points 17522

En fait, \r is 0x0D (^M) and \n is 0x0A (^J) mais..... sur Windows :

\n will write 0x0D 0x0A

sur unix :

\r will write 0x0D
\n will write 0x0A

6voto

larsmans Points 167484

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 .

5voto

ymett Points 1423

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 .

3voto

Peter Ruderman Points 6151

Oui, c'est deux caractères : retour chariot ' \r ' suivi d'un saut de ligne ' \n '.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X