Si hay dos palabras clave entonces deben tener sus propios significados. Así que quiero saber qué las hace diferentes y cuál es su código.
Respuestas
¿Demasiados anuncios?Un salto de línea significa avanzar una línea hacia adelante. El código es \n
.
Un retorno de carro significa mover el cursor al principio de la línea. El código es \r
.
Los editores de Windows a menudo siguen utilizando la combinación de ambos como \r\n
en archivos de texto. Unix usa principalmente solo el \n
.
La separación proviene de la época de las máquinas de escribir, cuando se giraba la rueda para mover el papel y cambiar de línea y se movía el carro para reiniciar la escritura al principio de una línea. Esto implicaba dos pasos.
En un lenguaje muy simple, la tecla Enter es la combinación de retorno de carro y avance de línea.
El retorno de carro coloca el cursor al principio de la línea horizontalmente y el avance de línea desplaza el cursor a la siguiente línea verticalmente. La combinación de ambos te da el efecto de nueva línea (\n
).
Referencia: https://en.wikipedia.org/wiki/Carriage_return#Computers
Ambos son primarios de los viejos tiempos de impresión.
El retorno de carro es de los días de las impresoras de teletipo/antiguas máquinas de escribir, donde literalmente el carro regresaba a la siguiente línea y empujaba el papel hacia arriba. Esto es lo que ahora llamamos \r
.
El avance de línea LF
señala el final de la línea, señala que la línea ha terminado - pero no mueve el cursor a la siguiente línea. En otras palabras, no "retorna" el cursor/cabezal de impresión a la siguiente línea.
Para más detalles variados, la poderosa Wikipedia al rescate.
Tanto "salto de línea" (0x0A o 10) como "retorno de carro" (0x0D o 13) son valores de un solo byte. Estos valores son el estándar aceptado para LF/CR. La mayoría de los lenguajes escribirán estos valores como "caracteres". Puedes encontrar estos valores en cualquier tabla ASCII estándar.
Por ejemplo, en C# una cadena como:
String str = "\n\r";
tiene una longitud de dos caracteres (ignorando el carácter nulo final oculto '0x00' requerido en los tipos de cadena). Sin embargo, podrías crear un array equivalente de tipo caracter como:
char[] c = new char[](){0x0A,0x0D}; // LF, CR