2010-03-13 25 views
5

Duplicar posibles:
What is the difference between \r and \n?¿Cuál es la diferencia entre n y r?

Hola,

¿Cuál es la diferencia entre \n (nueva línea) y \r (retorno de carro)? Ambos mueven el cursor actual a la siguiente línea. ¿Son ellos mismos?

+2

Bueno, si hablamos de máquinas de escribir de las cuales se deriva este concepto, era importante en aquel entonces en el mundo mecánico distinguir entre alimentación de línea y retorno de carro, pero ahora es algo que tenemos que aguantar en el mundo digitalizado como un viejo artefacto llevado a través. –

+1

Duplicado de http://stackoverflow.com/questions/1279779/what-is-the-difference-between-r-and-n (aunque me gustaría poder invocar el hecho de Jon Skeet 9277) –

Respuesta

11

\r devuelve el cursor al principio de la línea, NO a la línea siguiente. Cuando utiliza \n en Linux, está implícito \r, en Windows, no lo es.

El uso de \r en sistemas de tipo Unix puede ocasionar que se sobrescriba la misma línea.

8

Sugiero que lea this.

En definitiva, una nueva línea en Windows es "\r\n", mientras que una nueva línea en Unix es sólo "\n" (y, sólo para hacer la vida más difícil, una nueva línea en Macs más antiguos es "\r")

2

En realidad, un retorno de carro se supone para mover el cursor al comienzo de la línea actual. Entonces, newline mueve el cursor exactamente hacia abajo uno.

En la actualidad, los compiladores a menudo convierten automáticamente uno u otro en \r\n en Windows o \n en Linux. Mac solía usar \ r pero han cambiado a la convención \ n.

(edit: declaraciones falsas/no probados retirados)

+0

* si 'putchar (' \ r ') 'y compilar en Linux, el' \ r' será reemplazado por '\ n'. * Absolutamente incorrecto. Al imprimir '\ r', el cursor volverá al inicio de la línea en la consola, y las impresiones posteriores sobrescribirán los caracteres junto al cursor. – kennytm

+0

Hmm ... Tal vez era Windows ... Lo probé y estás en lo correcto. Ojalá pudiera recordar, me encontré con un problema así hace un par de semanas ... – Ricket

+0

Ah, bueno, por la falta de memoria correcta, acabo de eliminar ese párrafo completo. Sé que hubo alguna peculiaridad, pero no puedo resolverlo en este momento. – Ricket

0

No, no lo son. Los editores de texto modernos a menudo los tratan igual, sin embargo, debido a que sus viejos usos no tienen mucho sentido para los procesadores de texto digitales.

Por ejemplo, \r literalmente significa "volver al principio de la línea". Si bien esto podría haber sido útil para una máquina de escribir si solo desea sobrescribir todo en esa línea, este tipo de funcionalidad no tiene mucho sentido para el tipo digital.

\n Por otro lado, simplemente se movería hacia abajo una línea sin volver al principio. Esto también fue útil en una máquina de escribir para sangría o viñetas. De nuevo, no es algo que tenga mucho sentido para el tipo digital.

Telnet es un ejemplo donde ambos caracteres todavía se utilizan de esta manera.

Ambos caracteres se incluyeron en el lenguaje ascii simplemente porque cuando se estaba especificando no se habían dado cuenta de que la funcionalidad que era útil en una máquina de escribir no tenía mucho sentido en una computadora.

+0

No sé si "no se habían dado cuenta" - Sospecho que era más porque en ese momento la gente aún usaba ampliamente dispositivos de salida como teletipos donde la distinción * era * significativa. (Por ejemplo, el retorno de carro sin nueva línea era como solíamos tachar (e incluso negrita) en las máquinas de escribir viejas, o supongo que en las impresoras de margaritas, antes teníamos impresoras de mapa de bits.) – itowlson

+0

Sí, eso es lo que estaba tratando de decir y yo lo hizo tan mal. : D Lo reformulé un poco. Quizás es mejor ahora? –

0

Ah los viejos tiempos de la máquina de escribir ...

La diferencia entre los dos se deriva de días de allí a la vista cuando se escribe se hizo directamente al papel.Se requiere dos acciones para ir a la siguiente línea:

  1. empujando el 'carro' (gran cilindro en la parte superior) de vuelta a la izquierda (aquí es donde el personaje terminaría).
  2. cambiando el papel una línea hacia arriba. (Por lo tanto va una línea hacia abajo)

Dividir estas dos acciones facilitaron volver a una posición de carácter preciso para corregirlo (no había manera de ir hacia arriba una línea, o hacia la izquierda un personaje!). Si retiene el papel opaco sobre el carácter erróneo y pulsa esa tecla, se borrará exactamente ese carácter erróneo, luego podrá volver atrás y presionar la tecla correcta (sin embargo, había una tecla para no mover el carro).

En la era de la informática joven, estas acciones se tradujeron 1 a 1 en \r para retorno de carro y \n para cambiar el 'papel'.

En la actualidad, los principales sistemas operativos aparentemente tienen opiniones diferentes sobre si esto todavía es necesario para la tecnología informática, donde volver a la posición anterior es mucho más fácil. Sin embargo, en los lenguajes de programación modernos, generalmente verá que \n se supone que significa \r\n.

Cuestiones relacionadas