newline - traduccion - Diferencia entre / ny / r?
line feed traduccion (8)
Como nadie más lo mencionó específicamente (¿son demasiado jóvenes para saber / recordar?): Sospecho que el uso de /r/n
originó para máquinas de escribir y dispositivos similares.
Cuando quería una nueva línea mientras usaba una máquina de escribir con capacidad multilínea, tenía que realizar dos acciones físicas: deslice el carro de vuelta al principio (izquierda, en EE. UU.) De la página, y alimente el papel una muesca .
En los días de las impresoras de líneas, la única forma de hacer texto en negrita, por ejemplo, era hacer un retorno de carro SIN una nueva línea e imprimir los mismos caracteres sobre los antiguos, agregando más tinta, lo que hace que aparezca más oscuro (en negrita) . Cuando la función mecánica de "nueva línea" falló en una máquina de escribir, este fue el resultado molesto: podría escribir sobre la línea de texto anterior si no estuviera prestando atención.
¿Cuál es la diferencia entre /n
(nueva línea) y /r
(retorno de carro)?
En particular, ¿hay diferencias prácticas entre /n
/r
? ¿Hay lugares donde uno debería ser usado en lugar del otro?
Completar,
En un script de shell (bash), puede usar /r
para enviar el cursor, en línea y, por supuesto, /n
para colocar el cursor en una nueva línea.
Por ejemplo, intente:
echo -en "AA--AA" ; echo -en "BB" ; echo -en "/rBB"
- La primera pantalla "eco"
AA--AA
- El segundo:
AA--AABB
- El último:
BB--AABB
Pero no olvides usar -en
como parámetros.
Dos personajes diferentes para diferentes sistemas operativos. También esto desempeña un papel en los datos transmitidos a través de TCP/IP
que requiere el uso de /r/n
.
/n
Unix
/r
Mac
/r/n
Windows y DOS.
Dos personajes diferentes.
/n
se utiliza como terminador de fin de línea en archivos de texto Unix
/r
se utiliza como terminador de fin de línea en archivos de texto Mac
/r/n
(es decir, ambos) se usan para terminar líneas en archivos de texto de Windows y DOS.
En Windows, el / n se mueve al principio de la siguiente línea. El / r se mueve al principio de la línea actual, sin moverse a la línea siguiente. He usado en mis propias aplicaciones de consola donde estoy probando un código y no quiero ver el texto desplazándose hacia arriba en mi pantalla, así que en lugar de usar / n después de imprimir un texto, por ejemplo, una velocidad de cuadros ( FPS), imprimiré f ("% - 10d / r", fps); Esto devolverá el cursor al principio de la línea sin pasar a la siguiente línea y me permitirá tener otra información en la pantalla que no se desplace mientras la tasa de cuadros se actualiza constantemente en la misma línea (el% -10 hace que cierta la salida es de al menos 10 caracteres, justificada a la izquierda por lo que termina rellenado por espacios, sobrescribiendo los valores antiguos para esa línea). Es muy útil para cosas como esta, generalmente cuando tengo la salida de cosas de depuración en la pantalla de mi consola.
Una pequeña historia
La / r significa "retorno" o "retorno de carro" que debe su historia a la máquina de escribir. Un retorno de carro movió su carro hacia la derecha por lo que estaba escribiendo al comienzo de la línea.
La / n significa "nueva línea", de nuevo, desde los días de la máquina de escribir que bajó a una nueva línea. Sin embargo, no necesariamente al principio, por lo que algunos sistemas operativos adoptaron la necesidad de un / r retorno seguido de una / n nueva línea, ya que esa fue la orden en que lo hizo una máquina de escribir. También explica las viejas computadoras de 8 bits que usaban tener "Retorno" en lugar de "Entrar", desde "retorno de carro", que era familiar.
En términos de código ASCII, es 3, ya que tienen 10 y 13 respectivamente ;-).
Pero en serio, hay muchos:
- en Unix y en todos los sistemas similares a Unix,
/n
es el código para el final de línea,/r
no significa nada especial - como consecuencia, en C y en la mayoría de los idiomas que de alguna manera lo copian (incluso de forma remota),
/n
es la secuencia de escape estándar para el final de la línea (traducida a / desde secuencias específicas del SO según sea necesario) - en sistemas Mac antiguos (pre-OS X),
/r
era el código para el final de línea en su lugar - en Windows (y en muchos sistemas operativos antiguos), el código para el final de la línea es de 2 caracteres,
/r/n
, en este orden - como una (sorprendente ;-) consecuencia (remontándose a sistemas operativos mucho más antiguos que Windows),
/r/n
es la terminación de línea estándar para formatos de texto en Internet - para "terminales" tipo teletipo electromecánicos,
/r
ordena que el carro retroceda hacia la izquierda hasta que llegue al tope más a la izquierda (una operación lenta),/n
ordena al rodillo enrollar una línea (una operación mucho más rápida) - esa es la La razón es que siempre tiene/r
antes/n
, ¡para que el rodillo pueda moverse mientras el carro todavía se está moviendo hacia la izquierda! -) Wikipedia tiene una explicación más detallada . - para terminales de modo de caracteres (normalmente emulando las impresoras incluso más antiguas que las anteriores), en modo sin procesar,
/r
y/n
actúan de manera similar (excepto en términos del cursor, ya que no hay carro ni rodillo ;-)
En la práctica, en el contexto moderno de escribir en un archivo de texto, siempre debe usar /n
(el tiempo de ejecución subyacente se traducirá si está en un sistema operativo extraño, por ejemplo, Windows ;-). La única razón para usar /r
es si estás escribiendo en un terminal de caracteres (o más probablemente en una "ventana de consola" emulando) y quieres que la siguiente línea que escribas sobrescriba la última que acabas de escribir (a veces se usa para hacer tonterías " Ascii animation "efectos de, por ejemplo, barras de progreso) - aunque esto se está volviendo bastante obsoleto en un mundo de GUIs ;-).
Históricamente, se usó un /n
para mover el carro hacia abajo, mientras que se usó para mover el carro de regreso al lado izquierdo de la página.
#include <stdio.h>
void main()
{
int countch=0;
int countwd=1;
printf("Enter your sentence in lowercase: ");
char ch=''a'';
while(ch!=''/r'')
{
ch=getche();
if(ch=='' '')
countwd++;
else
countch++;
}
printf("/n Words = ",countwd);
printf("Characters = ",countch-1);
getch();
}
Tomemos este ejemplo, intente poner / n en lugar de / r no funcionará y tratar de adivinar por qué.