View Full Version : [Chiarimento] New line e Carriage return
agente mm8
15-03-2009, 14:45
Salve a tutti, vorrei un chiarimento: che differenza c'è tra il carattere new line ("\n") e il carattere carriage return ("\r")?
che io sappia windows interpreta "l'andare a capo" come una sequenza \n\r, mentre quelli *nix come un semplice \n
agente mm8
15-03-2009, 17:57
Grazie, ma in se cosa produce usare \r oppure usare \n?
Cioè, tanto per fare un esempio, in C uso '\n' per andare a capo... e se uso '\r'? Cosa succede? Scusate se non provo praticamente ma ora sono sul pc di mio cugino e non ha nessun compilatore (non sa manco cos'è la programmazione)
||ElChE||88
15-03-2009, 18:00
Grazie, ma in se cosa produce usare \r oppure usare \n?
Cioè, tanto per fare un esempio, in C uso '\n' per andare a capo... e se uso '\r'? Cosa succede? Scusate se non provo praticamente ma ora sono sul pc di mio cugino e non ha nessun compilatore (non sa manco cos'è la programmazione)
Se usi solo \r torni all'inizio della linea (senza andare a capo).
cdimauro
15-03-2009, 18:05
che io sappia windows interpreta "l'andare a capo" come una sequenza \n\r, mentre quelli *nix come un semplice \n
Per "andare a capo" lo standard ASCII prevede l'uso del CR per andare alla prima colonna di una riga, e del LF per andare alla riga successiva.
che io sappia windows interpreta "l'andare a capo" come una sequenza \n\r, mentre quelli *nix come un semplice \n \r\n, non \n\r; e comunque non tutti gli Unix fanno cosi: Mac usa solo \r.
la norma di Windows é piu corretta per quanto spiegato da cdimauro, e anche perché molti protocolli ASCII di rete usano CRLF; Linux infatti solitamente cerca di "adattarsi" alle sequenze CRLF.
cdimauro
15-03-2009, 18:30
In realtà lo standard non impone un ordine preciso, quindi anche LF prima e CR andrebbe bene.
In ogni caso, come giustamente hai osservato, ci sono s.o. che aderiscono allo standard, e altri che hanno deciso di farne a meno (aumentando il caos).
agente mm8
15-03-2009, 19:50
Ho capito, grazie mille a tutti, gentilissimi come sempre :D
banryu79
19-03-2009, 10:54
In realtà lo standard non impone un ordine preciso, quindi anche LF prima e CR andrebbe bene.
In ogni caso, come giustamente hai osservato, ci sono s.o. che aderiscono allo standard, e altri che hanno deciso di farne a meno (aumentando il caos).
La mancanza di un allineamento ad uno standard comune per tutti può causare qualche problemuccio.
Un esempio (http://developer.apple.com/technotes/tn/tn1157.html) tratto dal passato.
cdimauro
19-03-2009, 11:04
E' interessante notare come si contraddicano:
The underlying problem is a confusion between different line-breaking conventions. Line-based Internet protocols almost universally use CRLF as a line break.
...
The server receives the text and the CR, then expects a LF to follow the CR and waits to receive one. Actually, most servers are smart enough that if the character received following the CR is not an LF, they'll understand the nonstandard line break and treat the second character as the start of the next line.
O parliamo di convenzioni o di standard.
In quest'ultimo caso ci sono due possibilità: CR + LF oppue LF + CR.
Sicuramente non il singolo carattere, che è fuori standard. ;)
In ogni caso quasi tutti i linguaggi permettono di aggirare il problema defininedo costanti o "traduzioni" per avere il codice il più possibile portabile.
La maggior parte dei linguaggi hanno delle costanti per aggirare il problema indipendente dal SO. C invece fa un conversione sugli stream quando vengono processati per la visualizzazione o per la scrittura su file (aperti come testo).
banryu79
19-03-2009, 11:54
E' interessante notare come si contraddicano:
O parliamo di convenzioni o di standard.
In quest'ultimo caso ci sono due possibilità: CR + LF oppue LF + CR.
Sicuramente non il singolo carattere, che è fuori standard. ;)
Sì infatti :asd:
Comunque è roba vecchia: si parla del marzo del 1999... era solo per postare un esempio :)
cdimauro
19-03-2009, 12:34
Hai fatto bene. E' utile per capire come cerchino di rigirare le frittate pur di non ammettere di avere sbagliato. :D
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.