LF o mas conocido como el \x0a y \n es un salto de linea universal.
Ahora, windows le agregó algo más y le puso CR o mas conocido como el \x0d o \r que significa retorno de carro.
Es como si en una maquina de escribir le dijeras que corra una linea hacia abajo y ahora corras el carro hasta el principio de la hoja, pero en algunas ocasiones eso es realmente inservible porque en un computador no usas carros jajajajajajjajaja
pero en fin, creo que en mac tienen otro tipo de salto de linea también, de hecho si usas saltos de linea en windows con worpad y despues lo pasas a linux lo vas a ver así:
A P G S E A
A D A E T S
P O T O L N
Y U O K N H
No se si alguna ves has subido un archivo hecho desde windows a un servidor con linux y luego tratas de editarlo ahi, podrás ver que hay dos saltos de linea por cáda linea de código y es una porquería. Por eso prefiero configurar mi editor de texto a saltos de linea para linux por defecto.
En todo lo que sea servicio web, ssh, telnet, ftp, etc etc basta con enviar saltos de linea con \n porque ningún programa va a tomar en cuenta tu \r.
Ahora, como lo hago para ubicar lineas en los archivos?
Normalmente en un programa podría decirse esto:
separado = split("\n", texto)
el problema viene cuando el texto contiene \n\r ya que las lineas de texto te van a quedar con el carácter \r al comienzo y si dices:
separado = split("\n\r", texto)
y el archivo no contiene \r entonces vas a tener problemas porque te dirá que no hay lineas.
Por esto intento usar functiones nativas depndiendo de cáda lenguaje, por ejemplo en php digo:
$separado = explode('<br />', nl2br($texto));
porque nl2br() me transforma automáticamente los saltos de linea a <br /> y lo calcula solito comparando multiples formas de saltos de linea, en .net digo:
var separado as array() = texto.readlline()
pero en c++ y otros lenguajes de mas bajo nivel es un quebradero de cabeza x__x
Dale un vistazo a esto:
http://es.wikipedia.org/wiki/Nueva_l%C3%ADneaLa secuencia CR LF era común en los primeros ordenadores que tenían máquinas de teletipo (como el ASR33) como dispositivo de terminal. Esta secuencia era necesaria para posicionar el cabezal de la impresora al principio de una nueva línea. Como esta operación no se podía hacer en tiempo "1 carácter", había que dividirla en dos caracteres. A veces era necesario enviar CR LF NUL (siendo NUL el carácter de control que le manda "no hacer nada"), para asegurarse de que el cabezal de impresión parara de moverse. Después de que estos sistemas mecánicos desaparecieran, la secuencia CR LF dejó de tener sentido, pero aun así se ha seguido usando.
Se especula que QDOS (que Microsoft compró y renombró a MS-DOS) adoptó CRLF para copiar la implementación usada por CP/M. También se dice que CP/M eligió CR+LF para introducir una clara incompatibilidad con Unix, y así intentar evitar una posible denuncia de AT&T/Bell, que decía que CP/M violaba el copyright de Unix porque estaba basado en Unix (según esta teoría). Otros creen que CP/M se parece más a los sistemas de DEC (como el RSTS/E) que a Unix. En cualquier caso, esta convención de QDOS pasó al siguiente sistema operativo comercializado por Microsoft, el Windows, y sigue igual en la actualidad (2006).
O sea que podemos decir que a causa del copyright de unix windows no pudo utilizar \n como final de linea y estubo obligado a usar \n\r xD