¿Cuál es el significado de los siguientes caracteres de control:
Retorno de carro
Linea de alimentación
Alimentación de formulario
¿Cuál es el significado de los siguientes caracteres de control:
Retorno de carro
Linea de alimentación
Alimentación de formulario
Respuestas:
El retorno de carro significa volver al comienzo de la línea actual sin avanzar hacia abajo. El nombre proviene del carro de una impresora, ya que los monitores eran raros cuando se acuñó el nombre. Esto se suele escapar como CR\r
abreviado y tiene un valor ASCII o .13
0x0D
Salto de línea significa avanzar hacia abajo a la siguiente línea; sin embargo, ha sido reutilizado y renombrado. Usado como "nueva línea", termina las líneas (comúnmente confundidas con líneas de separación ). Esto se suele escapar como \n
, abreviado LF o NL, y tiene un valor ASCII 10
o 0x0A
. CRLF (pero no CRNL) se utiliza para el par \r\n
.
El feed de formulario significa avanzar hacia abajo a la siguiente "página". Se usaba comúnmente como separadores de página, pero ahora también se usa como separadores de sección. (Se usa con poca frecuencia en el código fuente para dividir funciones o grupos de funciones lógicamente independientes). Los editores de texto pueden usar este carácter cuando "inserta un salto de página". Esto se suele escapar como \f
, abreviado FF , y tiene un valor ASCII 12
o 0x0C
.
Como caracteres de control, pueden interpretarse de varias maneras.
La diferencia más común (y probablemente la única por la que vale la pena preocuparse) es que las líneas terminan con CRLF en Windows, NL en Me gusta de Unix y CR en Macs más antiguas (la situación ha cambiado con OS X para ser como Unix). Tenga en cuenta que el cambio en el significado de LF a NL, para el mismo carácter exacto, da las diferencias entre Windows y Unix. (Windows es, por supuesto, más nuevo que Unix, por lo que no adoptó este cambio semántico. No conozco la historia de Macs usando CR.) Muchos editores de texto pueden leer archivos en cualquiera de estos tres formatos y convertirlos entre ellos. , pero no todas las utilidades pueden.
La alimentación de formularios es un poco más interesante (aunque se usa con menos frecuencia directamente), y con la definición habitual de separador de página, solo puede aparecer entre líneas (por ejemplo, después de la secuencia de nueva línea de NL, CRLF o CR) o al inicio o Fin del archivo.
\x0c
?
\r
es el retorno del carro y mueve el cursor hacia atrás como si lo hiciera
printf("stackoverflow\rnine")
ninekoverflow
significa que ha desplazado el cursor al comienzo de "stackoverflow" y sobrescribe los cuatro caracteres iniciales ya que "nueve" tiene cuatro caracteres.
\n
es un nuevo carácter de línea que cambia la línea y lleva el cursor al comienzo de una nueva línea como:
printf("stackoverflow\nnine")
stackoverflow
nine
\f
es un formulario de alimentación, su uso se ha vuelto obsoleto pero se utiliza para dar sangría como
printf("stackoverflow\fnine")
stackoverflow
nine
si voy a escribir como
printf("stackoverflow\fnine\fgreat")
stackoverflow
nine
great
printf
utilidad de coreutils. O incluso usando el echo -en
que es un bash incorporado.
\f
es en realidad \v
: una pestaña vertical, a la que ambos se parecen en la consola.
printf("123\f456\f789");
muestra /> <bold> 123456789 </bold> en la consola.
Echa un vistazo a Wikipedia :
Los sistemas basados en ASCII o un conjunto de caracteres compatible usan LF (avance de línea, '\ n', 0x0A, 10 en decimal) o CR (retorno de carro, '\ r', 0x0D, 13 en decimal) individualmente, o CR seguido de LF (CR + LF, 0x0D 0x0A). Estos caracteres se basan en los comandos de la impresora: el avance de línea indica que una línea de papel debe salir de la impresora, y un retorno de carro indica que el carro de la impresora debe regresar al comienzo de la línea actual.
\f
se usa para el salto de página. No puede ver ningún efecto en la consola. Pero cuando usa este carácter constante en su archivo, puede ver la diferencia.
Otro ejemplo es que si puede redirigir su salida a un archivo, entonces no tiene que escribir un archivo o usar el manejo de archivos.
Por ej .:
Escribe este código en c ++
void main()
{
clrscr();
cout<<"helloooooo" ;
cout<<"\f";
cout<<"hiiiii" ;
}
y cuando compilas esto genera un exe (por ej. abc.exe
)
entonces puede redirigir su salida a un archivo usando esto:
abc > xyz.doc
luego abra el archivo xyz.doc
, puede ver el salto de página real entre hellooo y hiiii ...
Además de la información anterior, todavía hay una historia interesante de LF (\ n) y CR (\ r). [Autor original: 阮一峰 Fuente: http://www.ruanyifeng.com/blog/2006/04/post_213.html] Antes de que apareciera la computadora, había un tipo de teleimpresora llamada Teletype Model 33. Puede imprimir 10 caracteres cada una segundo. Pero hay un problema con esto, después de terminar de imprimir cada línea, pasará 0.2 segundos para pasar a la siguiente línea, que es el momento de imprimir 2 caracteres. Si se transfiere un nuevo personaje durante este segundo 0.2, entonces este nuevo personaje se perderá.
Entonces, los científicos encontraron una forma de resolver este problema, agregaron dos caracteres finales después de cada línea, uno es 'Retorno de carro', que es decirle a la impresora que lleve el cabezal de impresión a la izquierda; el otro es 'Avance de línea', le dice a la impresora que mueva el papel 1 línea hacia arriba.
Más tarde, la computadora se hizo popular, estos dos conceptos se utilizan en las computadoras. En ese momento, el dispositivo de almacenamiento era muy costoso, por lo que algunos científicos dijeron que era costoso agregar dos caracteres al final de cada línea, uno es suficiente, por lo que hay algunos argumentos sobre cuál usar.
En UNIX / Mac y Linux, '\ n' se coloca al final de cada línea, en Windows, '\ r \ n' se coloca al final de cada línea. La consecuencia de este uso es que los archivos en UNIX / Mac se mostrarán en una línea si se abren en Windows. Mientras que el archivo en Windows tendrá una ^ M al final de cada línea si se abre en UNIX o Mac.
WRITE.EXE
(también conocido como Wordpad) puede mostrarlos bien.
En los terminales antiguos de impresoras de papel, avanzar a la siguiente línea implicaba dos acciones: mover el cabezal de impresión al comienzo del rango de escaneo horizontal (retorno del carro) y avanzar el rollo de papel en el que se imprime (avance de línea).
Como ya no usamos terminales de impresoras de papel, esas acciones ya no son realmente relevantes, pero los caracteres utilizados para señalarlas se han quedado en varias encarnaciones.
Considere una impresora de impacto IBM 1403. CR movió el cabezal de impresión al inicio de la línea, pero NO avanzó el papel. Esto permitió la "sobreimpresión", colocando múltiples líneas de salida en una línea. Se lograron cosas como el subrayado de esta manera, al igual que la impresión BOLD. LF avanzó el papel una línea. Si no hubiera CR, la siguiente línea se imprimiría como un paso escalonado porque LF no movió el cabezal de impresión. FF avanzó el papel a la página siguiente. Por lo general, también movió el cabezal de impresión al comienzo de la primera línea en la nueva página, pero es posible que necesite CR para eso. Sin duda, la mayoría de los programadores codificaron CRFF en lugar de CRLF al final de la última línea de una página porque un CR extra creado por FF no importaría.
En breve :
Carriage_return ( \r
o 0xD
): para tomar el control al comienzo de la misma línea .
Line_Feed ( \n
o 0xA
): para tomar el control al comienzo de la siguiente línea .
form_feed ( \f
o 0xC
): para tomar el control al comienzo de la página siguiente .
Como suplemento
1, retorno de carro : es una terminología de impresora que significa cambiar la ubicación de impresión al comienzo de la línea actual . En el mundo de la informática, significa volver al comienzo de la línea actual en la mayoría de los casos, pero rara vez representa la nueva línea.
2, avance de línea : es una terminología de impresora que significa avanzar el papel una línea. Por lo tanto, el retorno de carro y el avance de línea se usan juntos para comenzar a imprimir al comienzo de una nueva línea. En el mundo de la informática, generalmente tiene el mismo significado que la nueva línea.
3, Alimentación de formulario : es una terminología de impresora, me gusta la explicación en este hilo .
Si estuviera programando para una impresora de estilo de los años ochenta, expulsaría el papel y comenzaría una nueva página. Está prácticamente seguro de que nunca lo necesitará.
Es casi obsoleto y puede consultar la secuencia de escape \ f - formulario de alimentación - ¿qué es exactamente? para una explicación detallada
Tenga en cuenta que podemos usar CR o LF o CRLF para representar la nueva línea en algunas plataformas, pero no se puede usar la nueva línea en otras plataformas. Consulte wiki Newline para más detalles.
LF: Multics, Unix y sistemas similares a Unix (Linux, OS X, FreeBSD, AIX, Xenix, etc.), BeOS, Amiga, RISC OS y otros
CR: máquinas Commodore de 8 bits, Acorn BBC, ZX Spectrum, TRS-80, familia Apple II, Oberon, el Mac OS clásico hasta la versión 9, MIT Lisp Machine y OS-9
RS: implementación QNX pre-POSIX
0x9B: máquinas Atari de 8 bits que utilizan la variante ATASCII de ASCII (155 en decimal)
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 y la mayoría de los otros sistemas operativos tempranos que no son Unix ni IBM
LF + CR: salida de texto en spool Acorn BBC y RISC OS.
El retorno del carro y el avance de línea también son referencias a máquinas de escribir, ya que con un pequeño empujón en el asa del lado izquierdo del carro (el lugar donde va el papel), el papel rotaría una pequeña cantidad alrededor del cilindro, avanzando documentar una línea. Si había terminado de escribir una línea y deseaba continuar con la siguiente, presionó con más fuerza, avanzó una línea y deslizó el carro hacia la derecha, luego reanudó la escritura de izquierda a derecha nuevamente mientras el carro viajaba con cada pulsación de tecla . No hace falta decir que el ajuste de texto era la configuración predeterminada para todo el procesamiento de texto de la época. P: D
Esos son caracteres no impresos, relacionados con el concepto de "nueva línea". \ n es salto de línea. \ r es el retorno de carro. En diferentes plataformas tienen diferentes significados, en relación con una nueva línea válida. En Windows, una nueva línea es \ r \ n. En linux, \ n. En mac, \ r.
En la práctica, los coloca en cualquier cadena, y tendrá efecto en la impresión de la cadena.