Cosa sono il ritorno a capo, l’avanzamento riga e l’avanzamento del modulo?

Qual è il significato dei seguenti caratteri di controllo:

  1. Ritorno a capo

  2. Feed di linea

  3. Modulo di alimentazione

Ritorno a capo significa tornare all’inizio della linea corrente senza avanzare verso il basso. Il nome deriva dal carrello di una stampante, poiché i monitor erano rari quando il nome veniva coniato. Questo è comunemente sfuggito come “\ r”, abbreviato CR, e ha un valore ASCII 13 o 0x0D.

Linefeed significa avanzare verso il basso alla riga successiva; tuttavia, è stato riproposto e rinominato. Usato come “newline”, termina le linee (comunemente confuse con le linee di separazione ). Questo è comunemente sfuggito come “\ n”, abbreviato LF o NL, e ha valore ASCII 10 o 0x0A. CRLF (ma non CRNL) viene utilizzato per la coppia “\ r \ n”.

Avanzamento pagina significa avanzare verso il basso alla “pagina” successiva. Era comunemente usato come separatore di pagina, ma ora è anche usato come separatore di sezioni. (È utilizzato in modo non comune nel codice sorgente per dividere funzioni o gruppi di funzioni logicamente indipendenti). Gli editor di testo possono utilizzare questo carattere quando si “inserisce un’interruzione di pagina”. Questo è comunemente sfuggito come “\ f”, FF abbreviato e ha un valore ASCII 12 o 0x0C.

Come caratteri di controllo, possono essere interpretati in vari modi.

La differenza più comune (e probabilmente l’unica che vale la pena di preoccuparsi) è che le linee terminano con CRLF su Windows, NL su Unix-Mi piace e CR su Mac precedenti (la situazione è cambiata con OS X per essere come Unix). Nota lo spostamento di significato da LF a NL, per lo stesso identico carattere, fornisce le differenze tra Windows e Unix. (Windows è, naturalmente, più recente di Unix, quindi non ha adottato questo cambiamento semantico. Non conosco la cronologia dei Mac che utilizzano CR.) Molti editor di testo possono leggere i file in uno qualsiasi di questi tre formati e convertirli tra loro ma non tutte le utilità possono.

Il feed di form è un po ‘più interessante (anche se meno comunemente usato direttamente), e con la normale definizione di separatore di pagina, può essere solo tra le righe (ad esempio dopo la sequenza di nuova riga di NL, CRLF o CR) o all’inizio o fine del file.

\r è il ritorno a capo e sposta il cursore indietro come se lo facessi-

 printf("stackoverflow\rnine") ninekoverflow 

significa che ha spostato il cursore all’inizio di “stackoverflow” e sovrascrive i quattro caratteri iniziali poiché “nove” è lungo quattro caratteri.

\n è un nuovo carattere di linea che cambia la linea e porta il cursore all’inizio di una nuova linea come-

 printf("stackoverflow\nnine") stackoverflow nine 

\f è form feed, il suo uso è diventato obsoleto ma è usato per dare indentazione come

 printf("stackoverflow\fnine") stackoverflow nine 

se scriverò come-

 printf("stackoverflow\fnine\fgreat") stackoverflow nine great 

\f è usato per l’interruzione di pagina. Non è ansible vedere alcun effetto nella console. Ma quando usi questo carattere costante nel tuo file, puoi vedere la differenza.

Un altro esempio è che se è ansible redirect l’output su un file, non è necessario scrivere un file o utilizzare la gestione dei file.

Per esempio:

Scrivi questo codice in c ++

 void main() { clrscr(); cout<<"helloooooo" ; cout<<"\f"; cout<<"hiiiii" ; } 

e quando lo compili genera un exe (per esempio abc.exe )

quindi puoi redirect il tuo output su un file usando questo:

abc > xyz.doc

quindi apri il file xyz.doc puoi vedere l'effettiva interruzione di pagina tra hellooo e hiiii ....

Dai un’occhiata a Wikipedia :

I sistemi basati su ASCII o un set di caratteri compatibili utilizzano LF (Avanzamento riga, ‘\ n’, 0x0A, 10 in decimale) o CR (Ritorno carrello, ‘\ r’, 0x0D, 13 in decimale) o CR seguito da LF (CR + LF, 0x0D 0x0A). Questi caratteri si basano sui comandi della stampante: l’avanzamento della linea indica che una riga di carta deve fuoriuscire dalla stampante e un ritorno a capo indica che il carrello della stampante deve tornare all’inizio della riga corrente.

Oltre alle informazioni di cui sopra, c’è ancora una storia interessante di LF (\ n) e CR (\ r). [Autore originale: 阮一峰 Fonte: http://www.ruanyifeng.com/blog/2006/04/post_213.html%5D Prima che il computer uscisse, c’era un tipo di teleprettina chiamato Teletype Model 33. Può stampare 10 caratteri ciascuno secondo. Ma c’è un problema con questo, dopo aver finito di stampare ogni riga, ci vorranno 0,2 secondi per passare alla riga successiva, che è il momento di stampare 2 caratteri. Se un nuovo personaggio viene trasferito durante questo 0,2 secondi, questo nuovo personaggio andrà perso.

Così gli scienziati hanno trovato un modo per risolvere questo problema, aggiungono due caratteri finali dopo ogni riga, uno è “Ritorno a capo”, che indica alla stampante di portare la testina di stampa a sinistra .; l’altro è “Avanzamento riga”, indica alla stampante di spostare la carta di 1 riga.

Più tardi, il computer è diventato popolare, questi due concetti sono usati sui computer. A quel tempo, il dispositivo di archiviazione era molto costoso, quindi alcuni scienziati hanno detto che era costoso aggiungere due caratteri alla fine di ogni riga, uno è sufficiente, quindi ci sono alcuni argomenti su quale utilizzare.

In UNIX / Mac e Linux, ‘\ n’ viene inserito alla fine di ogni riga, in Windows ‘\ r \ n’ viene inserito alla fine di ogni riga. La conseguenza di questo utilizzo è che i file in UNIX / Mac verranno visualizzati in una riga se aperti in Windows. Mentre il file in Windows avrà uno ^ M alla fine di ogni riga se aperto in UNIX o Mac.

Sui vecchi terminali di carta-stampante, il passaggio alla riga successiva comportava due azioni: lo spostamento della testina di stampa all’inizio dell’intervallo di scansione orizzontale (ritorno a capo) e l’avanzamento del rotolo di carta stampato (avanzamento riga).

Dal momento che non usiamo più terminali per stampanti di carta, quelle azioni non sono più realmente rilevanti, ma i personaggi usati per segnalarli si sono bloccati in varie incarnazioni.

Si consideri una stampante a impatto 1403 IBM. CR ha spostato la testina di stampa all’inizio della riga, ma NON ha fatto avanzare la carta. Ciò consentiva la “sovrastampa”, ponendo più linee di output su una riga. Cose come la sottolineatura sono state ottenute in questo modo, così come la stampa BOLD. LF ha avanzato la carta di una riga. Se non c’era alcun CR, la riga successiva veniva stampata come un passaggio sfalsato perché LF non spostava la testina di stampa. FF ha avanzato la carta alla pagina successiva. In genere, inoltre, spostava la testina di stampa all’inizio della prima riga della nuova pagina, ma potrebbe essere necessario CR per questo. A dire il vero, molti programmatori hanno codificato CRFF invece di CRLF alla fine dell’ultima riga di una pagina perché un CR aggiuntivo creato da FF non avrebbe avuto importanza.

Come supplemento,

1, ritorno a capo : è una terminologia della stampante che significa cambiare la posizione di stampa all’inizio della riga corrente . Nel mondo dei computer, significa tornare all’inizio della linea corrente nella maggior parte dei casi, ma raramente si tratta di una nuova linea.

2, Avanzamento riga : è una terminologia della stampante che significa avanzare la carta di una riga. Quindi Ritorno carrello e Avanzamento riga vengono utilizzati insieme per iniziare a stampare all’inizio di una nuova riga. Nel mondo dei computer, generalmente ha lo stesso significato di newline.

3, Avanzamento pagina : è una terminologia stampante, mi piace la spiegazione in questa discussione .

Se stavi programmando per una stampante stile anni ’80, espelleva la carta e iniziava una nuova pagina. Sei praticamente certo di non averne bisogno.

http://en.wikipedia.org/wiki/Form_feed

È quasi obsoleto e puoi fare riferimento alla sequenza di escape \ f – feed del modulo – che cos’è esattamente? per una spiegazione dettagliata.

Nota, possiamo usare CR o LF o CRLF come supporto per newline in alcune piattaforms, ma newline non può essere supportato da esse in alcune altre piattaforms. Fare riferimento a wiki Newline per i dettagli.

LF: sistemi Multics, Unix e Unix (Linux, OS X, FreeBSD, AIX, Xenix, ecc.), BeOS, Amiga, RISC OS e altri

CR: macchine Commodore a 8 bit, Acorn BBC, ZX Spectrum, TRS-80, famiglia Apple II, Oberon, il classico Mac OS fino alla versione 9, MIT Lisp Machine e OS-9

RS: implementazione pre-POSIX QNX

0x9B: macchine Atari a 8 bit che utilizzano la variante ATASCII di ASCII (155 in decimale)

CR + LF: Microsoft Windows, DOS (MS-DOS, DOS PC, ecc.), DEC TOPS-10, RT-11, CP / M, MP / M, Atari TOS, OS / 2, Symbian OS, Palm OS, Amstrad CPC e la maggior parte dei primi sistemi operativi non Unix e non IBM

LF + CR: Acorn BBC e RISC OS hanno spoolato l’output di testo.

“\ n” è il carattere di avanzamento riga. Significa terminare la linea presente e andare a una nuova riga per chiunque la stia leggendo.

Il ritorno a capo e l’avanzamento di riga sono anche riferimenti alle macchine da scrivere, in quanto con una piccola spinta sul manico sul lato sinistro del carrello (il punto in cui va la carta), la carta ruoterebbe una piccola quantità attorno al cilindro, facendo avanzare il documentare una riga. Se avevi finito di digitare una riga e volevi continuare a quella successiva, spingevi più forte, sia avanzando una linea che facendo scorrere il carrello completamente a destra, quindi riprendendo a digitare da sinistra a destra di nuovo mentre la carrozza viaggiava con ogni sequenza di tasti . Inutile dire che il word-wrap era l’impostazione predefinita per tutte le elaborazioni di testi dell’epoca. P: D

Quelli sono caratteri non stampabili, relativi al concetto di “nuova linea”. \ n è linefeed. \ r è il ritorno a capo. Su piattaforms diverse hanno significati diversi, relativi ad una nuova linea valida. In Windows, una nuova riga è \ r \ n. In linux, \ n. In mac, \ r.

In pratica, li metti in qualsiasi stringa e avrà effetto sulla stampa della stringa.