Quelle est la signification des caractères de contrôle suivants:
Retour chariot
Saut de ligne
Flux de formulaire
Quelle est la signification des caractères de contrôle suivants:
Retour chariot
Saut de ligne
Flux de formulaire
Réponses:
Le retour chariot signifie revenir au début de la ligne actuelle sans avancer vers le bas. Le nom vient du chariot d'une imprimante, car les moniteurs étaient rares lorsque le nom a été inventé. Ceci est généralement échappé comme \r
, en abrégé CR , et a la valeur ASCII 13
ou 0x0D
.
Le saut de ligne signifie avancer vers la ligne suivante; cependant, il a été réutilisé et renommé. Utilisé comme "nouvelle ligne", il termine les lignes (souvent confondu avec les lignes de séparation ). Ceci est généralement échappé comme \n
, abrégé LF ou NL, et a une valeur ASCII 10
ou 0x0A
. CRLF (mais pas CRNL) est utilisé pour la paire \r\n
.
Le flux de formulaire signifie avancer vers la "page" suivante. Il était couramment utilisé comme séparateurs de pages, mais est maintenant également utilisé comme séparateurs de sections. (Il est rarement utilisé dans le code source 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é comme \f
, abrégé FF , et a la valeur ASCII 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 courante (et probablement la seule qui mérite d'être inquiétée) est la fin des lignes avec CRLF sur Windows, NL sur Unix-like et CR sur les Mac plus anciens (la situation a changé avec OS X pour ressembler à Unix). Notez le changement de sens de LF à NL, pour le même caractère exact, donne les différences entre Windows et Unix. (Windows est, bien sûr, plus récent qu'Unix, il n'a donc pas adopté ce changement sémantique. Je ne connais pas l'histoire des Mac utilisant CR.) De nombreux éditeurs de texte peuvent lire des fichiers dans l'un de ces trois formats et convertir entre eux , mais pas tous les utilitaires.
Le flux de formulaire est un peu plus intéressant (même s'il est moins utilisé directement), et avec la définition habituelle du séparateur de pages, il ne peut venir qu'entre les lignes (par exemple après la séquence de nouvelle ligne NL, CRLF ou CR) ou au début ou fin du fichier.
\x0c
?
\r
est le retour chariot et recule 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 premiers caractères car "neuf" est long de quatre caractères.
\n
est un nouveau caractère de ligne qui change la ligne et amène le curseur au début d'une nouvelle ligne comme-
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
printf
utilitaire de coreutils. Ou même en utilisant echo -en
ce qui est un bash intégré.
\f
est en fait \v
- un onglet vertical, les deux étant identiques dans la console.
printf("123\f456\f789");
affiche /> <bold> 123456789 </bold> sur la console.
Jetez un œil à Wikipedia :
Les systèmes basés sur ASCII ou un jeu de caractères compatible utilisent individuellement LF (saut de ligne, '\ n', 0x0A, 10 en décimal) ou CR (retour chariot, '\ r', 0x0D, 13 en décimal), 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.
\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.
Un autre exemple est que si vous pouvez rediriger votre sortie vers un fichier, vous n'avez pas besoin d'écrire un fichier ou d'utiliser la gestion des fichiers.
Par exemple:
É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 réel entre hellooo et hiiii ....
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 la sortie de l'ordinateur, il y avait un type de téléscripteur appelé Teletype Model 33. Il peut imprimer 10 caractères chacun seconde. Mais il y a un problème avec cela, après avoir terminé l'impression de chaque ligne, il faudra 0,2 seconde pour passer à la ligne suivante, ce qui correspond au temps d'impression de 2 caractères. Si un nouveau personnage est transféré pendant cette 0,2 seconde, alors ce nouveau personnage sera perdu.
Les scientifiques ont donc trouvé un moyen de résoudre ce problème, ils ajoutent deux caractères de fin après chaque ligne, l'un est «Retour chariot», qui consiste à dire à l'imprimante de ramener la tête d'impression vers la gauche. l'autre est «Saut de 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 les ordinateurs. À cette époque, le périphérique de stockage était très cher, donc certains scientifiques ont dit qu'il était cher d'ajouter deux caractères à la fin de chaque ligne, un suffit, il y a donc des arguments sur lequel utiliser.
Sous UNIX / Mac et Linux, «\ n» est placé à la fin de chaque ligne, sous Windows, «\ r \ n» est placé à 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 sous Windows aura un ^ M à la fin de chaque ligne s'il est ouvert sous UNIX ou Mac.
WRITE.EXE
(aka Wordpad) peut très bien les afficher.
Sur les anciens terminaux d'imprimante à papier, passer à 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 avancer le rouleau de papier en cours d'impression (saut de ligne).
Puisque nous n'utilisons plus de terminaux pour imprimantes papier, ces actions ne sont plus vraiment pertinentes, mais les caractères utilisés pour les signaler se sont maintenus dans diverses incarnations.
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 a permis une "surimpression", en plaçant plusieurs lignes de sortie sur une seule ligne. Des choses comme le soulignement ont été réalisées de cette façon, tout comme l'imprimé BOLD. LF a avancé le papier d'une ligne. S'il n'y avait pas de CR, la ligne suivante s'imprimerait comme une étape décalée car LF ne bougeait pas la tête d'impression. FF a avancé le document à la page suivante. Il a également généralement déplacé la tête d'impression au début de la première ligne de la nouvelle page, mais vous pourriez avoir 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.
En bref :
Carriage_return ( \r
ou 0xD
): Pour prendre le contrôle au début de la même ligne .
Line_Feed ( \n
ou 0xA
): Pour prendre le contrôle au début de la ligne suivante .
form_feed ( \f
ou 0xC
): Pour prendre le contrôle au début de la page suivante .
En complément,
1, retour chariot : il s'agit d'une terminologie d'imprimante qui signifie changer l'emplacement d'impression au début de la ligne en cours. Dans le monde informatique, cela signifie revenir au début de la ligne actuelle dans la plupart des cas, mais représente rarement une nouvelle ligne.
2, saut de ligne : c'est une terminologie d'imprimante qui signifie faire avancer le papier d'une ligne. Ainsi, le retour chariot et le saut de ligne sont utilisés ensemble pour commencer à imprimer au début d'une nouvelle ligne. Dans le monde informatique, il a généralement la même signification que la nouvelle ligne.
3, Flux de formulaire : c'est une terminologie d'imprimante, j'aime l'explication dans ce fil .
Si vous programmiez pour une imprimante de style années 80, elle éjecterait le papier et commencerait une nouvelle page. Vous êtes pratiquement certain de ne jamais en avoir besoin.
C'est presque obsolète et vous pouvez vous référer à la séquence d'échappement \ f - flux de formulaire - qu'est-ce que c'est exactement? pour une explication détaillée.
Remarque, nous pouvons utiliser CR ou LF ou CRLF pour représenter la nouvelle ligne sur certaines plates-formes, mais la nouvelle ligne ne peut pas être conservée par eux sur certaines autres plates-formes. Reportez-vous au wiki Newline pour plus de détails.
LF: Multics, Unix et systèmes de type Unix (Linux, OS X, FreeBSD, AIX, Xenix, etc.), BeOS, Amiga, RISC OS et autres
CR: machines Commodore 8 bits, Acorn BBC, ZX Spectrum, TRS-80, famille Apple II, Oberon, le Mac OS classique jusqu'à la version 9, MIT Lisp Machine et OS-9
RS: implémentation pré-POSIX de QNX
0x9B: machines Atari 8 bits utilisant la variante ATASCII d'ASCII (155 en décimal)
CR + LF: Microsoft Windows, DOS (MS-DOS, PC DOS, etc.), DEC TOPS-10, RT-11, CP / M, MP / M, Atari TOS, OS / 2, Symbian OS, Palm OS, Amstrad CPC et la plupart des autres premiers OS non Unix et non IBM
LF + CR: sortie de texte spoule Acorn BBC et RISC OS.
Le retour du chariot et le saut de ligne sont également des références aux machines à écrire, dans la mesure où avec une petite poussée sur la poignée sur le côté gauche du chariot (l'endroit où va le papier), le papier tournerait une petite quantité autour du cylindre, faisant avancer le documenter une ligne. Si vous aviez fini de taper une ligne et que vous vouliez passer à la suivante, vous avez poussé plus fort, à la fois en avançant une ligne et en faisant glisser le chariot complètement vers la droite, puis en recommençant à taper de gauche à droite pendant que le chariot voyageait avec chaque frappe. . Inutile de dire que le retour automatique à la ligne était le paramètre par défaut pour tous les traitements de texte de l'époque. P: D
Ce sont des caractères non imprimables, liés au concept de "nouvelle ligne". \ n est un saut de ligne. \ r est le retour chariot. Sur différentes plateformes, elles ont des significations différentes, par rapport à une nouvelle ligne valide. Sous Windows, une nouvelle ligne est \ r \ n. Sous linux, \ n. Sous mac, \ r.
En pratique, vous les mettez dans n'importe quelle chaîne et cela aura un effet sur l'impression de la chaîne.