Quelle est la différence entre \n
(nouvelle ligne) et \r
(retour chariot) ?
En particulier, y a-t-il pratique les différences entre \n
y \r
? Y a-t-il des endroits où l'un devrait être utilisé au lieu de l'autre ?
Quelle est la différence entre \n
(nouvelle ligne) et \r
(retour chariot) ?
En particulier, y a-t-il pratique les différences entre \n
y \r
? Y a-t-il des endroits où l'un devrait être utilisé au lieu de l'autre ?
En termes de code ascii, c'est 3 -- puisqu'ils ont respectivement 10 et 13 ans ;-).
Mais sérieusement, il y en a beaucoup :
\n
est le code pour la fin de ligne, \r
ne signifie rien de spécial\n
est la séquence d'échappement standard pour la fin de ligne (traduite en/depuis des séquences spécifiques au système d'exploitation si nécessaire).\r
était le code pour la fin de ligne à la place\r\n
dans cet ordre\r\n
est la terminaison de ligne standard pour les formats de texte sur Internet.\r
commande au chariot de reculer vers la gauche jusqu'à ce qu'il atteigne la butée la plus à gauche (une opération lente), \n
commande au rouleau d'enrouler une ligne (une opération beaucoup plus rapide) -- c'est la raison pour laquelle vous avez toujours \r
antes de \n
pour que le rouleau puisse se déplacer alors que le chariot continue à avancer vers la gauche !-) Wikipedia a un explication plus détaillée .\r
y \n
agissent de manière similaire (sauf en ce qui concerne le curseur, car il y a des est pas de chariot ni de rouleau;-)En pratique, dans le contexte moderne de l'écriture dans un fichier texte, vous devriez toujours utiliser \n
(le runtime sous-jacent traduira cela si vous êtes sur un OS bizarre, par exemple Windows;-). La seule raison d'utiliser \r
c'est si vous écrivez dans un terminal de caractères (ou plus probablement dans une "fenêtre console" qui l'émule) et que vous voulez que la prochaine ligne que vous écrivez écrase la dernière que vous venez d'écrire (parfois utilisé pour des effets bizarres d'"animation ascii", par exemple pour des barres de progression) -- cela devient plutôt obsolète dans un monde d'interfaces graphiques, cependant;-).
Pour ajouter à l'historique de cette réponse : lorsque la vitesse de la ligne est passée de 10 caractères par seconde, il fallait plus de 2 caractères pour que la charrette revienne et que des caractères supplémentaires inoffensifs (typiquement NUL, c'est à dire \0
) ont été ajoutés après le \n
pour permettre le temps supplémentaire. Cette opération a été gérée de manière transparente par le système d'exploitation, de sorte que vous n'en trouverez aucune trace dans le code hérité.
@mailmindlin -- vous demandez "En quoi Windows est-il un système d'exploitation "bizarre" ?". Réponse : de plus de façons que je ne peux facilement en compter (tout en portant des chaussettes, donc les orteils ne sont pas autorisés :-). Tous les autres systèmes d'exploitation survivants sont basés sur Unix... Windows est le seul à ne pas être disponible, Loin de là, à bien des égards. Dans le contexte de cette question spécifique, c'est le seul qui pose DEUX octets ( \n\r ) comme fin de ligne canonique... sans aucune raison valable, si ce n'est les raisons historiques expliquées ailleurs dans le fil de discussion... tous les autres systèmes d'exploitation ont une seule fin de ligne char a5 (99%+ d'entre eux `. \n ').
Il ne s'agit peut-être pas d'une réponse très pratique à une question informatique, mais l'anecdote historique obtient tout de même un vote positif de ma part.
Imaginez \r comme lorsque vous poussez la partie dactylographique de votre machine à écrire physique vers la gauche, c'est-à-dire vers le retour.
\n ne fait pas descendre le chariot, elle fait tourner le rouleau pour faire monter le papier.
Deux personnages différents.
\n
est utilisé comme terminateur de fin de ligne dans les fichiers textes Unix
\r
Était historiquement (avant OS X) utilisé comme terminateur de fin de ligne dans les fichiers texte Mac.
\r\n
(c'est-à-dire les deux ensemble) sont utilisés pour terminer les lignes dans les fichiers texte de Windows et DOS.
Notez qu'il y a/avait des ordinateurs qui utilisaient \n\r comme marqueur de fin de ligne lorsque vous appuyez sur la touche ENTER, comme Acorn et RISC OS.
Pour clarifier : \r
n'a pas été la fin de ligne sur un Mac depuis longtemps. Avec la sortie de Mac OS X en 2001 (qui est basé sur Unix), \n
est maintenant utilisé.
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.
4 votes
Toutes les réponses sont assez prévisibles, mais je serais intéressé de savoir s'il existe des différences PRATIQUES entre \n y \r. Y a-t-il des endroits où l'un doit être utilisé plutôt que l'autre ?
9 votes
Eh bien, oui, les fichiers texte comportant uniquement LF (newline) ne seront pas considérés comme terminés dans certaines applications Windows, et les fichiers texte terminés par CRLF sembleront comporter des caractères supplémentaires s'ils sont ouverts dans certaines applications Linus.
2 votes
Oui, \r est utilisé par certaines applications de console linux pour faire des animations de lignes tournantes.
8 votes
Est \r c'est vraiment toujours la fin de vie normale du Mac ? Je suis sûr que c'était pour le Mac "classique", mais j'avais pensé qu'OS X s'était unifié. (Ça montre à quel point je suis familier avec les Macs, hein ?)
17 votes
Historiquement un \n a été utilisée pour déplacer le chariot vers le bas, tandis que la touche \r a été utilisé pour déplacer le chariot vers le côté gauche de la page.