Ordre de retour du chariot et alimentation de la nouvelle ligne

est-il important d'avoir le bon ordre de retour de chariot puis la nouvelle ligne d'alimentation? Pour les éditeurs de texte n'importe dans quel ordre elles apparaissent?

Par exemple, au lieu de

\r\n

\n\r
Blog Post sur le sujet.

24
demandé sur Chad 2009-12-11 08:09:57
la source

5 ответов

l'ordre traditionnel, lorsque les deux caractères de contrôle sont utilisés, est le retour de chariot, puis L'alimentation en ligne.

la raison de cela remonte à L'ancien télétype ASR-33.

Lorsqu'un retour de chariot est émis à un ASR-33, la tête d'impression, si elle est près de la marge droite, prend plus d'un dixième de seconde pour revenir à la marge gauche, plus il y a un peu de "rebond" lorsque la marge gauche est touchée.

si la commande était Line Feed, puis Carriage Return, le premier le caractère imprimé peut apparaître un dixième de seconde après le retour du chariot, et ainsi finir par être imprimé (comme un frottis) à mi-chemin de la page. Mais si L'alimentation En Ligne vient après le retour du chariot, alors le temps pris par l'alimentation En Ligne donne plus de temps à la tête d'impression pour terminer son voyage.

certains systèmes (Je pense à L'ancien système D'exploitation Sigma 7 de Xerox, par exemple) assurent l'alimentation en ligne puis le retour du chariot, mais ils injectent, par exemple, des caractères nuls dans le flux de données pour permettre à la tête d'impression de le faire. chose.

et, bien sûr, lorsque vous accédez à des appareils plus rapides (certains téléimprimeurs CPS early 30, par exemple), le problème s'aggrave et une stratégie plus complexe est nécessaire.

(il y a aussi le point que, pour l'entrée de l'utilisateur, le retour de chariot est fourni par l'utilisateur en appuyant sur la touche de retour, tandis que le flux de ligne doit être fourni par l'ordinateur. Pour cette raison, c'était souvent le "style" d'avoir des lignes d'impression normales begin avec la Ligne d'Alimentation et avec De Retour Chariot. Un prompt pour user input, donc, ne consistait qu'en une ligne D'alimentation, tandis que l'utilisateur input terminait avec le retour de chariot. Ce schéma fonctionnait bien lorsqu'il était utilisé de manière cohérente, mais ce n'était pas toujours le cas.)

24
répondu Hot Licks 2015-08-25 04:07:14
la source

il y a trois formats communs de linefeed:

  • \r\n POUR LE MONDE DOS\Windows
  • \n Pour le monde Unix et Unix-like

\n\r n'est pas une norme où que ce soit que je sache et il en résultera probablement que votre éditeur pensera qu'il a un fichier de texte au format Unix, puis il affichera le caractère \r bizarre sous forme de texte.

historiquement, \R se traduit par retour de chariot (CR, code ASCII 13) qui se réfère à la vieille machine à écrire de l'école, où vous pousseriez le chariot vers la gauche pour retourner le curseur au début de la ligne. \n se traduit par line feed (LF, code ASCII 10) qui déplace le caractère vers le bas de la page un caractère. Bien que potentiellement intéressant, cela n'a généralement pas d'importance - il suffit d'utiliser le format linefeed approprié pour votre plate-forme actuelle.

19
répondu Conspicuous Compiler 2009-12-11 10:17:04
la source

comme juste un suivi sur le retour de chariot, puis la ligne alimente pot de recherche.

avec NotePad il détecte quand une fin de ligne quand il trouve le caractère CR+LF. C'est le format général utilisé par CP/M, MS-DOS, et Win32, Source

Unix détecte une fin de ligne quand il trouve un LF.

Apple détecte une fin de ligne quand il trouve un CR.

d'un point de vue Uni-Code, il y a un caractère de contrôle appelé NEXT LINE (NEL) juste pour rendre la situation encore plus complexe.

avec le langage de programmation C, pourquoi écrit-il le retour de chariot + le flux de ligne quand vous lui donnez un caractère de flux de ligne? par exemple,



printf("bonjour le Monde \n").

C le langage de programmation et le système D'exploitation Unix ont redéfini le caractère line feed comme caractère newline avec l'intention que la bibliothèque stdio convertisse la caractère de saut de ligne tout ce qu'il faut pour aller au début de la ligne suivante pour que la plate-forme par exemple, le retour chariot + saut de ligne pour Win32.

Ainsi, lorsque vous écrivez le nouveau caractère de ligne (qui est en fait le caractère LF) en C/C++ et sur Windows ou Linux, la bibliothèque de studio déterminera le format de sortie qui devra être généré pour cette fin de ligne pour cette plate-forme.

C'est évident avec la création d'un fichier binaire ou texte fichier dans un programme C. Si vous spécifiez que vous écrivez un fichier binaire, la bibliothèque de studio laissera le format de sortie inchangé pour cette plate-forme. Ainsi, lors de l'écriture des données au fichier et il vient à travers le caractère newline il ne sera pas insérer les caractères dépendants de la plate-forme pour une nouvelle ligne.

bien qu'il arrive à la conclusion après tout cela.

même si vous suivez les règles Win32 pour retour de chariot + fil de ligne à écrire par exemple ce qui suit dans un fichier comme pure de fichier binaire.

MyText \n MyText \n MyText

et vous supposez qu'il va rendre comme ceci dans votre éditeur de texte.

MyText 
      MyText 
            MyText

la plupart des éditeurs vont le rendre comme ceci.

MyText 
MyText 
MyText

la confusion est principalement due à la norme C qui utilise le caractère \N nouvelle ligne pour deux significations différentes. Tout d'abord, comme un nouvel indicateur de ligne pour la bibliothèque STIO de passer à l'exploitation nouveau format de ligne système (CR+LF Sur win32, LF Sur Linux, et CR pour Apple). Deuxièmement, comme la ligne de la juste valeur hex alimentation.


bien après 10 révisions et essais d'approches différentes sur Win3.Je suis arrivé à la conclusion que je ne pouvais pas trouver une application qui utilise CR et LF indépendamment et peut utiliser une combinaison d'eux dans le même document. La plupart des éditeurs de texte montreront un carré quand il frappe un seul CR ou LF. Les éditeurs de texte les plus intelligents vont changer le fichier format dépendant s'ils trouvent un CR+LF/LF/CR pour la plate-forme appropriée.

la plupart des éditeurs, si ce n'est tous, se préoccupent uniquement de rendre une nouvelle ligne à l'utilisateur et basculeront entre les différents formats de fichiers. Donc, si votre écrivain une lexer et chaîne tokenizer à tout moment bientôt et inquiet sur le moment de détecter une nouvelle ligne. Son meilleur pour les niveaux inférieurs pour détecter le format de fichier (CR+LF Win32, LF Linux, CR Apple) pour augmenter le numéro de ligne. Ou utilisez la fonctionnalité ReadLine qui prendre cela en compte.

il est pour le moins curieux de savoir pourquoi le retour de chariot + flux de ligne a été adopté par IBM et Win32 comme norme pour demander à l'éditeur de texte de créer une nouvelle ligne. Alors qu'en fait, sa redondance. Je n'ai pas pu trouver une seule application qui a rendu ou utilisé le retour de chariot + alimentation de ligne indépendamment pour le nom réel qu'il suggère qu'il fait.

donc si votre étudiant d'Université écrit le nouvel éditeur de texte pour étonner le monde. Automatiquement détectez le format de fichier, et ne vous inquiétez pas de la signification technique réelle donnée à CR+LF.

4
répondu Chad 2013-11-01 04:15:16
la source

(Désolé pour la bosse, mais c'est la principale raison pour les résultats de recherche sur cette question)

dans Notepad++ cela importe. Lorsque vous commencez avec un saut de ligne \n puis retour chariot \r, votre linefeed finira sur la ligne suivante. Donc l'ordre devrait être: CR LF

enter image description here

4
répondu Gerben Jacobs 2014-04-02 18:17:39
la source

il y a de nombreux convertisseurs newline là-bas.

E. g. celui-ci. Ils font la plupart du travail pour vous.

1
répondu Andy W 2011-11-29 12:31:40
la source

Autres questions sur