Wat zijn regelterugloop, regelinvoer en formulierinvoer?

Wat is de betekenis van de volgende controletekens:

  1. Koetsretour

  2. Regelfeed

  3. Formulierfeed


Antwoord 1, autoriteit 100%

Carriage returnbetekent terugkeren naar het begin van de huidige regel zonder naar beneden te gaan. De naam komt van de wagen van een printer, aangezien monitoren zeldzaam waren toen de naam werd bedacht. Dit wordt gewoonlijk ontsnapt als \r, afgekort CR, en heeft de ASCII-waarde 13of 0x0D.

Linefeedbetekent naar beneden gaan naar de volgende regel; het is echter hergebruikt en hernoemd. Gebruikt als “nieuwe regel”, beëindigtregels (vaak verward met scheidenderegels). Dit wordt gewoonlijk ontsnapt als \n, afgekort LFof NL, en heeft de ASCII-waarde 10of 0x0A. CRLF(maar niet CRNL) wordt gebruikt voor het paar \r\n.

Form feedbetekent naar beneden gaan naar de volgende “pagina”. Het werd vaak gebruikt als paginascheidingsteken, maar wordt nu ook gebruikt als sectiescheidingsteken. (Het wordt zelden gebruikt in de broncode om logisch onafhankelijke functies of groepen van functies te verdelen.) Teksteditors kunnen dit teken gebruiken wanneer u “een pagina-einde invoegt”. Dit wordt gewoonlijk ontsnapt als \f, afgekort FF, en heeft de ASCII-waarde 12of 0x0C.


Als controletekens kunnen ze op verschillende manieren worden geïnterpreteerd.

Het meest voorkomende verschil (en waarschijnlijk de enige die zich zorgen maakt over) is lijnen eindigen met CRLF op Windows, NL op Unix-likes en CR op oudere Macs (de situatie is gewijzigd als UNIX). Let op de verschuiving in betekenis van LF naar NL, voor exact hetzelfde karakter, geeft de verschillen tussen Windows en Unix. (Windows is natuurlijk nieuwer dan Unix, dus het heeft deze semantische dienst niet goedgekeurd. Ik ken de geschiedenis van Macs niet met CR.) Veel teksteditors kunnen bestanden in een van deze drie indelingen lezen en ertussen worden geactiveerd , maar niet alle nutsvoorzieningen.

Form Feed is een beetje interessanter (hoewel minder vaak gewoonlijk wordt gebruikt), en met de gebruikelijke definitie van paginafscheider, kan het alleen tussen lijnen komen (bijv. Na de nieuwlijnsequentie van NL, CRLF, of CR) of bij het begin of het einde van het bestand.


Antwoord 2, Autoriteit 22%

\ris koets terug en beweegt de cursor terug alsof ik zal doen –

printf("stackoverflow\rnine")
ninekoverflow

betekent dat het de cursor naar het begin van “Stackoverflow” is verplaatst en de start van vier tekens overschrijft, aangezien “negen” vier tekens lang is.

\nis een nieuw lijnteken dat de lijn verandert en de cursor naar het begin van een nieuwe lijn bevat –

printf("stackoverflow\nnine")
stackoverflow
nine

\fis Form Feed, het gebruik ervan is verouderd geworden, maar het wordt gebruikt voor het geven van inkeping zoals

printf("stackoverflow\fnine")
stackoverflow
             nine

Als ik wil schrijven –

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

Antwoord 3, Autoriteit 5%

Bekijk wikipedia :

Systemen gebaseerd op ASCII of een compatibele tekenset gebruiken LF (Line feed, ‘\n’, 0x0A, 10 in decimaal) of CR (Carriage return, ‘\r’, 0x0D, 13 in decimaal) afzonderlijk, of CR gevolgd door LF (CR+LF, 0x0D 0x0A). Deze tekens zijn gebaseerd op printeropdrachten: de regelinvoer gaf aan dat één regel papier uit de printer zou moeten komen en een regelterugloop gaf aan dat de printerslede naar het begin van de huidige regel zou moeten terugkeren.


Antwoord 4, autoriteit 5%

In het kort:

Carriage_return(\rof 0xD): Om de controle over te nemen bij beginvan dezelfde regel.

Line_Feed(\nof 0xA): Om de controle te nemen bij beginvan volgende regel.

form_feed(\fof 0xC): Om de controle over te nemen beginvan volgende pagina.


Antwoord 5, autoriteit 4%

\fwordt gebruikt voor pagina-einde.
U ziet geen enkel effect in de console. Maar als je deze tekenconstante in je bestand gebruikt, kun je het verschil zien.

Een ander voorbeeld is dat als u uw uitvoer naar een bestand kunt omleiden, u geen bestand hoeft te schrijven of bestandsverwerking hoeft te gebruiken.

Bijvoorbeeld:

Schrijf deze code in c++

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

en wanneer u dit compileert, genereert het een exe (bijvoorbeeld abc.exe)

dan kun je je output omleiden naar een bestand met dit:

abc > xyz.doc

open vervolgens het bestand xyz.docu kunt het daadwerkelijke pagina-einde zien tussen hellooo en hiiii….


Antwoord 6, autoriteit 3%

Afgezien van bovenstaande informatie is er nog een interessante geschiedenis van LF (\n) en CR (\r).
[Oorspronkelijke auteur: 阮一峰 Bron: http://www.ruanyifeng.com/blog /2006/04/post_213.html]

Voordat de computer uitkwam, was er een type teleprinter genaamd Teletype Model 33. Het kan 10 tekens per seconde afdrukken. Maar er is een probleem hiermee, na het afdrukken van elke regel duurt het 0,2 seconde om naar de volgende regel te gaan, wat de tijd is om 2 tekens af te drukken. Als er tijdens deze 0,2 seconde een nieuw teken wordt overgedragen, gaat dit nieuwe teken verloren.

Dus wetenschappers hebben een manier gevonden om dit probleem op te lossen, ze voegen twee eindtekens toe na elke regel, één is ‘Carriage return’, wat betekent dat de printer de printkop naar links moet brengen.; de andere is ‘Line feed’, het vertelt de printer om het papier 1 regel omhoog te verplaatsen.

Later werd de computer populair, deze twee concepten worden gebruikt op computers. In die tijd was het opslagapparaat erg duur, dus sommige wetenschappers zeiden dat het duur was om twee tekens aan het einde van elke regel toe te voegen, één is genoeg, dus er zijn wat argumenten over welke te gebruiken.

In UNIX/Mac en Linux wordt ‘\n’ aan het einde van elke regel geplaatst, in Windows wordt ‘\r\n’ aan het einde van elke regel geplaatst. Het gevolg van dit gebruik is dat bestanden in UNIX/Mac op één regel worden weergegeven als ze in Windows worden geopend. Terwijl een bestand in Windows één ^M aan het einde van elke regel heeft, indien geopend in UNIX of Mac.


Antwoord 7, autoriteit 3%

Op oude papierprinterterminals waren er twee handelingen nodig om naar de volgende regel te gaan: de printkop terugbrengen naar het begin van het horizontale scanbereik (carriage return) en de rol papier waarop wordt afgedrukt voortbewegen (line feed).

Aangezien we geen Paper-printer-terminals meer gebruiken, zijn die acties niet meer relevant, maar de personages die worden gebruikt om ze te signaleren in verschillende incarnaties.


Antwoord 8, Autoriteit 2%

Overweeg een IBM 1403-impactprinter. CR verplaatste de printkop naar het begin van de lijn, maar heeft het papier niet gevorderd. Dit is toegestaan ​​voor “overdrukken”, waardoor meerdere regels uitvoer op één regel worden geplaatst. Dingen zoals onderstreping werden op deze manier bereikt, net als vetgedrukte print. Als ik de papier één regel geavanceerd. Als er geen CR was, zou de volgende regel als verspringende stap afdrukken omdat LF de printkop niet bewoog. FF geavanceerd het papier naar de volgende pagina. Het verplaatste doorgaans ook de printkop naar het begin van de eerste regel op de nieuwe pagina, maar misschien hebt u daaraan CR nodig. Om zeker te zijn, de meeste programmeurs gecodeerd CRFF in plaats van CRLF aan het einde van de laatste regel op een pagina omdat een extra CR gemaakt door FF er niet toe doet.


Antwoord 9

Als een supplement,

1, Carriage Return : het is een printer terminologie, wat betekent dat de afdruklocatie naar het begin van stroom lijn wijzigen. In de computerwereld betekent het in de meeste gevallen terugkeren naar het begin van de huidige lijn, maar staat zelden voor nieuwe lijn.

2, Lijnvoeding : Het is een printer-terminologie, wat betekent dat het papier één regel oplevert. Dus de return-en-lijnvoeders worden dus samen gebruikt om aan het begin van een nieuwe regel af te drukken. In de computerwereld heeft het over het algemeen dezelfde betekenis als newline.

3, Form Feed : het is een printer terminologie, ik hou van de uitleg in deze thread .

Als u programmeert voor een printer in 1980-stijl, zou het de
papier en start een nieuwe pagina. Je bent vrijwel zeker dat je het nooit nodig hebt
het.

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

Het is bijna verouderd en je kunt verwijzen naar escape sequence \ F – Form Feed – Wat is het precies? voor gedetailleerde uitleg.

Opmerking, we kunnen CR of LF of CRLF gebruiken om in sommige platforms voor nieuwe lijn te staan, maar de nieuwe lijn kan niet door hen worden gestaan ​​op sommige andere platforms. Raadpleeg wiki newline voor details.

LF: Multics, Unix en Unix-achtige systemen (Linux, OS X, FreeBSD, AIX,
Xenix, etc.), Beos, Amiga, Risc OS, en anderen

CR: Commodore 8-bit machines, ACORN BBC, ZX-spectrum, TRS-80, Apple
II Familie, Oberon, het klassieke Mac OS tot versie 9, MIT LISP
Machine en OS-9

RS: QNX PRE-POSIX-implementatie

0x9b: ATARI 8-bit machines met ATASCII-variant van ASCII (155 in
decimaal)

CR + LF: Microsoft Windows, DOS (MS-DOS, PC DOS, enz.), DEC TOPS-10,
RT-11, CP / M, MP / M, ATARI TOS, OS / 2, Symbian OS, Palm OS, AMSTRAD CPC,
en de meeste andere vroege niet-UNIX- en niet-IBM-besturen

LF + CR: ACORN BBC en RISC OS-spooled-tekstuitvoer.


Antwoord 10

“\ n” is het linefeed-teken. Het betekent eindigen op de huidige lijn en naar een nieuwe regel gaan voor iedereen die het leest.


Antwoord 11

Carriage return en line feed zijn ook verwijzingen naar typemachines, in die zin dat met een kleine druk op de hendel aan de linkerkant van de wagen (de plaats waar het papier naartoe gaat), het papier een klein beetje rond de cilinder zou draaien , waarbij het document één regel wordt opgevoerd. Als je klaar was met het typen van een regel en verder wilde gaan met de volgende, duwde je harder, zowel een regel vooruit als de wagen helemaal naar rechts, en dan hervatte je het typen van links naar rechts weer terwijl de wagen met elke toetsaanslag bewoog . Onnodig te zeggen dat word-wrap de standaardinstelling was voor alle tekstverwerking van het tijdperk. P:D


Antwoord 12

Dit zijn niet-afdrukbare karakters, gerelateerd aan het concept van “nieuwe regel”. \n is regelinvoer. \r is een regelterugloop. Op verschillende platforms hebben ze verschillende betekenissen ten opzichte van een geldige nieuwe regel. In windows is een nieuwe regel \r\n. In linux, \n. In mac, \r.

In de praktijk zet je ze in een willekeurige tekenreeks en dit heeft effect op de afdruk van de tekenreeks.

Other episodes