web-dev-qa-db-fra.com

Que sont le retour chariot, le saut de ligne et le saut de page?

Quelle est la signification des caractères de contrôle suivants:

  1. Retour de chariot

  2. Saut de ligne

  3. Formulaire d'alimentation

447
ashna

Retour chariot signifie revenir au début de la ligne en cours sans avancer vers le bas. Le nom provient d'un chariot d'imprimante, car les moniteurs étaient rares lorsque le nom a été inventé. Ceci est généralement échappé sous la forme "\ r", en abrégé CR, et a ASCII valeur 13 ou 0x0D.

Le retour à la ligne signifie passer à la ligne suivante. cependant, il a été réaffecté et renommé. Utilisé comme "nouvelle ligne", it termine lignes (souvent confondu avec séparant lignes). Ceci est généralement échappé sous la forme "\ n", en abrégé LF ou NL, et a la valeur ASCII, valeur 10 ou 0x0A. CRLF (mais pas CRNL) est utilisé pour la paire "\ r\n".

Le saut de page signifie que vous avancez vers la "page" suivante. Il était couramment utilisé comme séparateur de page, mais est également utilisé maintenant comme séparateur de section. (Le code source est rarement utilisé pour diviser des fonctions ou des groupes de fonctions logiquement indépendants.) Les éditeurs de texte peuvent utiliser ce caractère lorsque vous "insérez un saut de page". Ceci est généralement échappé sous la forme "\ f", en abrégé FF, et a ASCII valeur 12 ou 0x0C.

En tant que caractères de contrôle, ils peuvent être interprétés de différentes manières.

La différence la plus commune (et probablement la seule qui vaille la peine de s'inquiéter) concerne les lignes se terminant par CRLF sous Windows, NL sous AIX, et CR sur les anciens Mac (la situation a changé avec OS X pour ressembler à Unix). Notez le décalage de signification de LF vers NL, pour le même caractère, donne les différences entre Windows et Unix. (Windows étant bien entendu plus récent qu’Unix, il n’a donc pas adopté ce changement sémantique. Je ne connais pas l’histoire des Macs utilisant CR.) De nombreux éditeurs de texte peuvent lire les fichiers dans l’un de ces trois formats et effectuer la conversion entre eux. , mais tous les utilitaires ne le peuvent pas.

L’utilisation d’un formulaire est un peu plus intéressante (même si elle est moins utilisée directement), et avec la définition habituelle du séparateur de page, elle ne peut s’interposer qu’entre des lignes (par exemple, après la séquence de nouvelle ligne de NL, CRLF ou CR) ou au début fin du fichier.

572
Roger Pate

\r est un retour chariot et déplace le curseur comme si je le ferais-

printf("stackoverflow\rnine")
ninekoverflow

signifie qu'il a déplacé le curseur au début de "stackoverflow" et écrase les quatre caractères de départ car "neuf" est composé de quatre caractères.

\n est le caractère de nouvelle ligne qui modifie la ligne et place le curseur au début d'une nouvelle ligne comme suit:

printf("stackoverflow\nnine")
stackoverflow
nine

\f est un flux de formulaire, son utilisation est devenue obsolète, mais il est utilisé pour donner une indentation comme

printf("stackoverflow\fnine")
stackoverflow
             nine

si j'écris comme-

printf("stackoverflow\fnine\fgreat")
stackoverflow
             nine
                 great
105
user3346547

\f est utilisé pour le saut de page. Vous ne pouvez voir aucun effet dans la console. Mais lorsque vous utilisez cette constante de caractère dans votre fichier, vous pouvez voir la différence.

Autre exemple, si vous pouvez rediriger votre sortie vers un fichier, vous n'avez pas à écrire de fichier ni à utiliser la gestion de fichier.

Pour ex:

Écrivez ce code en c ++

void main()    
{
    clrscr();
    cout<<"helloooooo" ;

    cout<<"\f";
    cout<<"hiiiii" ;

}

et lorsque vous compilez cela, il génère un exe (par exemple abc.exe)

alors vous pouvez rediriger votre sortie vers un fichier en utilisant ceci:

abc > xyz.doc

puis ouvrez le fichier xyz.doc vous pouvez voir le saut de page actuel entre bonjour et hiiii ....

24
Balram Dixit

Regardez Wikipedia :

Les systèmes basés sur ASCII ou un jeu de caractères compatible utilisent soit LF (saut de ligne, '\ n', 0x0A, 10 en décimal) ou CR (retour à la ligne, '\ r', 0x0D, 13 en décimal) individuellement ou CR suivi de LF (CR + LF, 0x0D 0x0A). Ces caractères sont basés sur les commandes de l’imprimante: Le saut de ligne indique qu’une ligne de papier doit sortir de l’imprimante et un retour chariot indique que le chariot de l’imprimante doit revenir au début de la ligne en cours.

24
tanascius

Outre les informations ci-dessus, il existe encore une histoire intéressante de LF (\ n) et CR (\ r). [Auteur original: 一峰 Source: http://www.ruanyifeng.com/blog/2006/04/post_213.html] Avant l'apparition de l'ordinateur, il existait un type de téléimprimeur appelé Teletype Model 33 Il peut imprimer 10 caractères par seconde. Mais il y a un problème avec cela, après avoir imprimé chaque ligne, il faudra 0,2 seconde pour passer à la ligne suivante, ce qui est le temps d’imprimer 2 caractères. Si un nouveau personnage est transféré pendant ces 0,2 seconde, ce nouveau personnage sera perdu.

Les scientifiques ont donc trouvé un moyen de résoudre ce problème, ils ont ajouté deux caractères de fin après chaque ligne, l’un étant "Retour chariot", qui consiste à indiquer à l’imprimeur de placer la tête d’impression à gauche .; l’autre est "Alimentation ligne", il indique à l’imprimante de déplacer le papier d’une ligne vers le haut.

Plus tard, l'ordinateur est devenu populaire, ces deux concepts sont utilisés sur des ordinateurs. À cette époque, le périphérique de stockage coûtait très cher, de sorte que certains scientifiques ont dit que l’ajout de deux caractères à la fin de chaque ligne était onéreux. Un seul suffit, il existe donc des arguments pour choisir lequel.

Sous UNIX/Mac et Linux, "\ n" est placé à la fin de chaque ligne, sous Windows, "\ r\n" à la fin de chaque ligne. La conséquence de cette utilisation est que les fichiers sous UNIX/Mac seront affichés sur une seule ligne s'ils sont ouverts sous Windows. Alors que le fichier dans Windows aura un ^ M à la fin de chaque ligne s'il est ouvert sous UNIX ou Mac.

21
wxie

Sur les anciens terminaux papier-imprimante, le passage à la ligne suivante impliquait deux actions: ramener la tête d’impression au début de la plage de numérisation horizontale (retour chariot) et faire avancer le rouleau de papier en cours d’impression (saut de ligne).

Depuis que nous n'utilisons plus de terminaux papier-imprimantes, ces actions ne sont plus vraiment pertinentes, mais les caractères utilisés pour les signaler se sont figés dans diverses incarnations.

18
Amber

Prenons une imprimante à impact IBM 1403. CR a déplacé la tête d’impression au début de la ligne, mais n’a PAS avancé le papier. Cela permettait une "surimpression", en plaçant plusieurs lignes de sortie sur une ligne. Des choses comme le soulignement ont été réalisées de cette façon, de même que les caractères gras. LF a avancé le papier d'une ligne. S'il n'y avait pas de CR, la ligne suivante serait imprimée par étapes car LF ne déplaçait pas la tête d'impression. FF a avancé le papier à la page suivante. En général, la tête d’impression est également déplacée au début de la première ligne de la nouvelle page, mais vous aurez peut-être besoin de CR pour cela. Pour être sûr, la plupart des programmeurs ont codé CRFF au lieu de CRLF à la fin de la dernière ligne d'une page, car un CR supplémentaire créé par FF n'aurait pas d'importance.

11
Dick Guertin

En complément,

1, Retour chariot : Il s'agit d'une terminologie d'imprimante qui signifie que l'emplacement d'impression est situé au début de en cours ligne. Dans le monde de l’informatique, cela signifie dans la plupart des cas revenir au début de la ligne actuelle, mais signifie rarement nouvelle ligne.

2, Retour à la ligne : Il s’agit d’une terminologie d’imprimante signifiant avancer le papier d’une ligne. Donc, retour chariot et saut de ligne sont utilisés ensemble pour commencer à imprimer au début d'une nouvelle ligne. Dans le monde informatique, cela a généralement le même sens que newline.

3, Form Feed : C'est une terminologie d'imprimante, j'aime l'explication de ce fil .

Si vous programmiez pour une imprimante de style années 1980, le papier serait éjecté et une nouvelle page serait créée. Vous êtes pratiquement certain de ne jamais en avoir besoin.

http://en.wikipedia.org/wiki/Form_feed

Il est presque obsolète et vous pouvez vous référer à séquence d'échappement\f - formulaire - de quoi s'agit-il exactement? pour une explication détaillée.

Notez que nous pouvons utiliser CR ou LF ou CRLF pour représenter newline sur certaines plates-formes, mais newline ne peut pas être réservé à ces plates-formes. Reportez-vous à wiki Newline pour plus de détails.

LF: systèmes Multics, Unix et analogues (Linux, OS X, FreeBSD, AIX, Xenix, etc.), BeOS, Amiga, RISC, etc.

CR: machines Commodore 8 bits, Acorn BBC, ZX Spectrum, TRS-80, famille Apple II, Oberon, le Mac OS classique jusqu'à la version 9, MIT Machine et système d'exploitation LISP -9

Implémentation RS: QNX pré-POSIX

0x9B: Machines Atari 8 bits utilisant la variante ATASCII de ASCII (155 en décimal)

CR + LF: Microsoft Windows, DOS (MS-DOS, PC DOS, etc.), DEC TOPS-10, RT-11, CP/M, MP/M, TOS Atari, OS/2, Symbian OS, Palm OS, Amstrad CPC et la plupart des systèmes d'exploitation antérieurs non Unix et non IBM

LF + CR: Sortie de texte spoule Acorn BBC et RISC OS.

8
Gearon

Retour de chariot et saut de ligne sont également des références aux machines à écrire. En effet, avec une petite poussée sur la poignée du côté gauche du chariot (l'endroit où le papier se dépose), le papier tournait légèrement autour du cylindre, faisant avancer le documenter une ligne. Si vous avez fini de taper une ligne et souhaitez passer à la suivante, vous avez poussé plus fort, en avançant d’une ligne et en faisant glisser le chariot complètement vers la droite, puis en reprenant la frappe de gauche à droite à chaque déplacement du clavier. . Il va sans dire que Word-wrap était le paramètre par défaut pour tous les traitements de texte de l'époque. P: D

3
TheLastWordSword

"\ n" est le caractère de saut de ligne. Cela signifie mettre fin à la ligne actuelle et passer à une nouvelle ligne pour tous ceux qui la lisent.

3
vpit3833

Ce sont des caractères non imprimables, relatifs au concept de "nouvelle ligne".\n est un saut de ligne.\r est un retour chariot. Sur différentes plates-formes, ils ont différentes significations, par rapport à une nouvelle ligne valide. Dans Windows, une nouvelle ligne est\r\n. Sous Linux,\n. Dans mac,\r.

En pratique, vous les mettez dans n'importe quelle chaîne, ce qui aura un effet sur l'impression de la chaîne.

2
Palantir