Väldigt rörigt här...
Det är uppenbart att många som aldrig har sett en vanlig skrivmaskin eller
en äldre skrivarmodell har lite svårt att koppla CR res LF till "verkligheten".
LF = "Line Feed", d.v.s matning av "valsen" en rad (tänkt vrida på ratten
till vänster på en vanlig skrivmaskin. Positionen där vagnen ("carriage") står
ändras alltså inte. Alltså helt enligt jesses första exempel !
CR = "Carrage Return", d.v.s retur av vagnen ("carrage") till början av raden.
CR i sig innebär ingen ny rad/line feed! Bara att skrivhuvudet/vagnen/carriage
går tillbaka till läget längst till vänster på raden.
I UNIX är LF markeringen för "new line" i filer, en sorts record-avgränsare.
Främst är det rellevant vid läsning och tolkning av just filer, där ett
ensamt LF utgör rad/post/record avgränsare. Detta blir lite av ett problem
om man t.ex kör en sådan fil direkt ut till en terminal, därav de olika
möjligheterna att automatiskt låta terminalen lägga till en CR efter varje LF.
När det gäller tolkningen av CR och LF av terminalprogram/emulatorer, så
är det rimliga default läget att det fungerar just enligt den ursprungliga
betydelsen av CR resp LF. Alltså så som jesse såg det i sina första två exempel.
Sedan så har de flesta vettiga terminalprogram/emulatorer inställningar för
att justera tokningen av CR, LF, CRLF och så vidare så att det funegrar som man vill.
> med \n\r så tycker alla mina linuxterminaler att dom ska mata fram två rader.
Ja, men det beror på att de har ett inbyggt fel för att vara enklare att använda från UNIX.
D.v.s att de gör både en CR och en LF efter ett ensamt LF.
Sen så kan det ju även vara programvaran/kompilatorn som tolkar "\n" som CRLF,
men det borde väl vara ett ensamt LF !?
> "Append line feeds to incoming line ends".
Synnerligen korkad förklaring. Vad *är* ett "line end" ??
Är det inte just ett "line feed" ("LF") ? I alla fall i UNIX...
> medans CR LF används av Microsoft.
Det har inte ett skit med Microsoft att göra !
Definitionerna av CR och LF är mycket äldre än Microsoft...
Problemet med "\n" är att det inte har en definition. Det kan generera lite
olika tecken/teckensekvenser beroende på vilken plattform det används på.
Om du vill vara helt säker så är det bättre att skriva dit h'0D' och/eller h'0A'
själv istället. Då fungerar det alltid...