human
Quelle est la différence entre ```\n``` (retour à la ligne) et ```\r``` (retour chariot) ?
En particulier, y a-t-il des différences pratiques entre ```\n``` et ```\r``` ? Y a-t-il des endroits où l'un devrait être utilisé à la place de l'autre
gpt
En termes de code ASCII, c'est 3 -- puisqu'ils sont respectivement 10 et 13.
Mais sérieusement, il y a de nombreuses différences :

* dans Unix et tous les systèmes de type Unix, ```\n``` est le code pour la fin de ligne, ```\r``` ne signifie rien de spécial
* en conséquence, en C et dans la plupart des langages qui le copient d'une manière ou d'une autre (même de manière lointaine), ```\n``` est la séquence d'échappement standard pour la fin de ligne (traduite en/à partir de séquences spécifiques à l'OS si nécessaire)
* dans les anciens systèmes Mac (avant OS X), ```\r``` était le code pour la fin de ligne
* dans Windows (et de nombreux anciens OS), le code pour la fin de ligne est composé de 2 caractères, ```\r\n```, dans cet ordre
* en conséquence surprenante (remontant à des OS bien plus anciens que Windows), ```\r\n``` est la terminaison de ligne standard pour les formats de texte sur Internet
* pour les "terminaux" électromécaniques de type téléimprimeur, ```\r``` commande le chariot pour qu'il retourne à gauche jusqu'à ce qu'il atteigne l'arrêt le plus à gauche (une opération lente), ```\n``` commande le rouleau pour qu'il monte d'une ligne (une opération beaucoup plus rapide) -- c'est la raison pour laquelle vous avez toujours ```\r``` avant ```\n```, afin que le rouleau puisse bouger pendant que le chariot va toujours vers la gauche !-) Wikipedia a une explication plus détaillée.
* pour les terminaux en mode caractère (typiquement émulant des imprimantes encore plus anciennes comme ci-dessus), en mode brut, ```\r``` et ```\n``` agissent de manière similaire (sauf tous les deux en termes de curseur, car il n'y a pas de chariot ou de rouleau).

En pratique, dans le contexte moderne de l'écriture dans un fichier texte, vous devriez toujours utiliser ```\n``` (l'exécution sous-jacente traduira cela si vous êtes sur un OS étrange, par exemple, Windows). La seule raison d'utiliser ```\r``` est si vous écrivez sur un terminal de caractères (ou plus probablement une "fenêtre de console" l'émulant) et que vous voulez que la ligne suivante que vous écrivez écrase celle que vous venez d'écrire (parfois utilisé pour des effets "d'animation ascii" farfelus comme des barres de progression) -- cela devient assez obsolète dans un monde de GUIs, cependant