Différence entre N et r?

Quelle est la différence entre n (newline) et r (retour chariot)?

en particulier, y a-t-il des pratiques différences entre n et r ? Existe-il des endroits où l'on doit être utilisé à la place de l'autre?

460
demandé sur TRiG 2009-11-19 08:20:24

8 réponses

en termes de code ascii, c'est 3 -- puisqu'ils sont 10 et 13 respectivement;-).

mais sérieusement, il y en a beaucoup:

  • d'Unix et de tous les systèmes de type Unix, \n est le code de fin de ligne, \r ne signifie rien de spécial
  • en conséquence, en C et dans la plupart des langues qui, d'une manière ou d'une autre, le copient (même à distance), \n est la séquence d'échappement standard pour la fin de ligne (traduit vers / depuis OS séquences spécifiques en fonction des besoins)
  • dans les vieux systèmes Mac (pré-OS X), \r était le code de fin de ligne à la place
  • dans Windows (et de nombreux Vieux OSs), le code de fin de ligne est de 2 caractères, \r\n , dans cet ordre
  • comme une (surprise;-) conséquence (retour à OSs beaucoup plus ancien que Windows), \r\n est la ligne standard-terminaison pour les formats de texte sur L'Internet
  • pour le \r commande au chariot de revenir vers la gauche jusqu'à ce qu'il atteigne l'arrêt le plus à gauche (une opération lente), le \n commande au rouleau de rouler une ligne (une opération beaucoup plus rapide) -- c'est la raison pour laquelle vous avez toujours \r avant \n , de sorte que le rouleau peut se déplacer alors que le chariot va toujours vers la gauche!-) Wikipédia a un explication plus détaillée .
  • pour les terminaux en mode caractère (émulant typiquement les terminaux d'impression encore plus anciens comme ci-dessus), en mode brut, \r et \n agissent de la même manière (sauf les deux en termes de curseur, car il est pas de chariot ni de rouleau; -)

dans la pratique, dans le contexte moderne de l'écriture à un fichier texte, vous devez toujours utiliser \n (l'exécution sous-jacente se traduira que si vous êtes sur un os bizarre, par exemple, Windows; -). La seule raison d'utiliser \r est si vous écrivez à un terminal de caractères (ou plus probablement une" fenêtre de console "l'émuler) et que vous voulez la ligne suivante que vous écrivez pour écraser la dernière que vous venez d'écrire (parfois utilisé pour les effets" ASCII animation " d ' Par exemple barres de progression) -- cela devient assez obsolète dans un monde D'interfaces graphiques, cependant;-).

653
répondu Alex Martelli 2018-08-26 10:44:19

historiquement, un \n a été utilisé pour déplacer le chariot vers le bas, tandis que le \r a été utilisé pour déplacer le chariot vers le côté gauche de la page.

104
répondu tster 2015-05-06 21:23:01

deux caractères différents.

\n est utilisé comme terminateur de fin de ligne dans les fichiers texte Unix

\r est utilisé comme terminateur de fin de ligne dans les fichiers texte Mac

\r\n (c'est-à-dire les deux) sont utilisés pour terminer les lignes dans les fichiers texte de Windows et de DOS.

27
répondu pavium 2014-10-19 04:56:07

puisque personne d'autre ne l'a mentionné spécifiquement (sont-ils trop jeunes pour le savoir/se souvenir?)- Je soupçonne l'utilisation de \r\n origine pour machines à écrire et appareils similaires.

lorsque vous vouliez une nouvelle ligne en utilisant une machine à écrire multi-lignes, il y avait deux actions physiques qu'il devait effectuer: faire glisser le chariot au début (à gauche, en nous) de la page, et alimenter le papier vers le haut d'un cran.

de retour à l'époque des imprimantes en ligne la seule façon de faire du texte en gras, par exemple, était de faire un retour de chariot sans newline et d'imprimer les mêmes caractères sur les anciens, ajoutant ainsi plus d'encre, ce qui le rend plus sombre (en caractères gras). Lorsque la fonction mécanique "newline" a échoué dans une machine à écrire, c'était le résultat gênant: vous pouviez taper sur la ligne de texte précédente si vous ne prêtiez pas attention.

17
répondu nothingisnecessary 2016-01-20 20:29:56

deux caractères différents pour des systèmes D'exploitation différents. joue également un rôle dans les données transmises sur TCP/IP qui nécessite l'utilisation de \r\n .

\n Unix

\r Mac

\r\n de Windows et de DOS.

11
répondu a432511 2016-04-16 18:51:48

à compléter,

dans un script shell (bash), vous pouvez utiliser \r pour envoyer le curseur, en première ligne et, bien sûr \n pour mettre le curseur sur une nouvelle ligne.

par exemple, essayer:

echo -en "AA--AA" ; echo -en "BB" ; echo -en "\rBB"
  • Le premier "echo" affichage AA--AA
  • la seconde : AA--AABB
  • Le dernier : BB--AABB

mais n'oubliez pas d'utiliser -en comme paramètres.

7
répondu Akarun 2015-01-30 10:31:29

Dans windows, le \n se déplace au début de la ligne suivante. Le \r déplace au début de la ligne courante, sans passer à la ligne suivante. J'ai utilisé \r dans mes propres applications de console où je teste du code et je ne veux pas voir du texte défiler sur mon écran, donc plutôt que d'utiliser \n Après avoir imprimé du texte, par exemple, un frame rate (FPS), je vais imprimer("%-10d\r", fps); cela ramènera le curseur au début de la ligne sans passer à la ligne suivante et permettez-moi d'avoir d'autres informations sur l'écran qui ne sont pas effacées pendant que le framerate est constamment mis à jour sur la même ligne (le %-10 s'assure que la sortie est d'au moins 10 caractères, justifié à gauche donc il se termine rembourré par des espaces, écrasant toutes les anciennes valeurs pour cette ligne). C'est assez pratique pour ce genre de choses, généralement quand j'ai des sorties débogage sur mon écran de console.

une petite histoire

Le /r signifie "retour" ou "retour chariot", qui doit son histoire à la machine à écrire. Un retour de chariot a déplacé votre chariot tout le chemin vers la droite donc vous tapiez au début de la ligne.

The / n signifie "nouvelle ligne", encore une fois, de l'époque de la machine à écrire, vous avez déménagé à une nouvelle ligne. Pas nécessairement au début de celui-ci cependant, qui est pourquoi certains os ont adopté la nécessité de A /R retour suivi par A /N newline, car c'était l'ordre d'une machine à écrire fait. Il a également explique les vieux ordinateurs 8 bits qui avaient L'habitude de "retourner "plutôt que" Entrer", de" retour chariot", qui était familier.

3
répondu Neil Roy 2017-05-29 18:24:55
#include <stdio.h>

void main()
{
  int countch=0;
  int countwd=1;

  printf("Enter your sentence in lowercase: ");
  char ch='a';
  while(ch!='\r')
  {
    ch=getche();
    if(ch==' ')
      countwd++;
    else
      countch++;
  }

  printf("\n Words = ",countwd);

  printf("Characters = ",countch-1);

  getch();

}

prenons cet exemple essayer de mettre \n à la place de \r il ne fonctionnera pas et essayer de deviner pourquoi?

0
répondu karthik gorijavolu 2012-03-10 00:49:42