Aşağıdaki kontrol karakterlerinin anlamı nedir:
Satırbaşı
Satır besleme
Form besleme
Aşağıdaki kontrol karakterlerinin anlamı nedir:
Satırbaşı
Satır besleme
Form besleme
Yanıtlar:
Taşıyıcı dönüşü , aşağı doğru ilerlemeden geçerli satırın başına dönmek anlamına gelir. Ad üretildiğinde monitörler nadir olduğu için bu ad yazıcının taşıyıcısından gelir. Bu genellikle \r
kısaltılmış CR olarak kaçar ve ASCII değerine sahiptir 13
veya 0x0D
.
Satır besleme , bir sonraki satıra aşağı doğru ilerlemek anlamına gelir; ancak, yeniden tasarlandı ve yeniden adlandırıldı. "Yeni satır" olarak kullanıldığında, satırları sonlandırır (genellikle ayırma satırlarıyla karıştırılır ). Bu genellikle LF veya NL olarak \n
kısaltılır ve ASCII değeri veya olur . Çift için CRLF (ancak CRNL değil) kullanılır .10
0x0A
\r\n
Form besleme , bir sonraki "sayfaya" ilerlemek anlamına gelir. Genellikle sayfa ayırıcılar olarak kullanılır, ancak şimdi bölüm ayırıcılar olarak da kullanılır. (Kaynak kodda, mantıksal olarak bağımsız işlevleri veya işlev gruplarını bölmek için nadiren kullanılır.) Metin düzenleyicileri, "sayfa sonu eklediğinizde" bu karakteri kullanabilir. Bu genellikle FF olarak \f
kısaltılır ve ASCII değerine sahiptir veya .12
0x0C
Kontrol karakterleri olarak çeşitli şekillerde yorumlanabilirler.
En yaygın fark (ve muhtemelen endişelenmeye değer olan tek şey), Windows'ta CRLF, Unix benzeri NL'de ve eski Mac'lerde CR ile biten durumdur (durum, OS X ile Unix gibi olacak şekilde değişmiştir). Tam olarak aynı karakter için LF'den NL'ye geçişteki kayda dikkat edin, Windows ve Unix arasındaki farkları verir. (Windows, elbette, Unix'ten daha yenidir, bu yüzden bu semantik kaymayı benimsemedi. CR kullanan Mac'lerin geçmişini bilmiyorum.) Birçok metin düzenleyicisi bu üç formatın herhangi birindeki dosyaları okuyabilir ve aralarında dönüştürme yapabilir , ancak tüm yardımcı programlar bunu yapamaz.
Form beslemesi biraz daha ilginçtir (daha az yaygın olarak kullanılmasına rağmen) ve sayfa ayırıcısının olağan tanımıyla, yalnızca satırlar arasında (ör. NL, CRLF veya CR'nin yeni satırından sonra) veya başlangıçta veya dosyanın sonu.
\x0c
mi?
\r
satır başı ve imleci ben yapacağım gibi geri hareket ettirir-
printf("stackoverflow\rnine")
ninekoverflow
"imleç" dört satır uzunluğunda olduğu için imleci "yığın akışı" nın başlangıcına kaydırdığı ve başlangıç dört karakterinin üzerine yazdığı anlamına gelir.
\n
satırı değiştiren ve imleci yeni bir satırın başına götüren yeni satır karakteridir.
printf("stackoverflow\nnine")
stackoverflow
nine
\f
form beslemedir, kullanımı eski hale gelmiştir ancak girinti vermek için kullanılır.
printf("stackoverflow\fnine")
stackoverflow
nine
eğer ben şöyle yazarsam-
printf("stackoverflow\fnine\fgreat")
stackoverflow
nine
great
printf
coreutils yardımcı programını kullanarak en azından aynısını yapabilirsiniz . Ya da echo -en
bir bash yerleşik olanı kullanarak .
\f
Aslında tanımladığınız şey \v
- her ikisi de konsolda aynı görünen dikey bir sekme.
printf("123\f456\f789");
konsolda /> <bold> 123456789 </bold> ifadesini gösterir.
Wikipedia'ya bir göz atın :
ASCII veya uyumlu bir karakter kümesine dayanan sistemler ayrı ayrı LF (Satır besleme, '\ n', 0x0A, 10 ondalık) veya CR (Satır başı, '\ r', 0x0D, ondalık 13) veya CR'yi kullanır LF (CR + LF, 0x0D 0x0A). Bu karakterler yazıcı komutlarını temel alır: Satır besleme, bir satır kağıdın yazıcıdan beslenmesi gerektiğini ve satır başı, yazıcı satırının geçerli satırın başına dönmesi gerektiğini belirtir.
\f
sayfa sonu için kullanılır. Konsolda herhangi bir efekt göremezsiniz. Ancak bu karakter sabitini dosyanızda kullandığınızda farkı görebilirsiniz.
Diğer bir örnek olarak, çıktınızı bir dosyaya yeniden yönlendirebiliyorsanız, bir dosya yazmanız veya dosya işlemeyi kullanmanız gerekmez.
Örneğin:
Bu kodu c ++ ile yazın
void main()
{
clrscr();
cout<<"helloooooo" ;
cout<<"\f";
cout<<"hiiiii" ;
}
ve bunu derlediğinizde bir exe üretir (örneğin abc.exe
)
bunu kullanarak çıktılarınızı bir dosyaya yeniden yönlendirebilirsiniz:
abc > xyz.doc
sonra dosyayı açın merhaba ve hiiiixyz.doc
arasındaki gerçek sayfa sonu görebilirsiniz ....
Yukarıdaki bilgiler dışında, hala ilginç bir LF (\ n) ve CR (\ r) geçmişi vardır. [Asıl yazar: 阮一峰 Kaynak: http://www.ruanyifeng.com/blog/2006/04/post_213.html] Bilgisayar çıkmadan önce Teletype Model 33 adında bir tür teleprinter vardı. Her biri 10 karakter basabilir ikinci. Ancak bununla ilgili bir sorun var, her satırı yazdırmayı bitirdikten sonra, 2 satıra basma zamanı olan bir sonraki satıra geçmek 0,2 saniye sürecek. Bu 0,2 saniye boyunca yeni bir karakter aktarılırsa, bu yeni karakter kaybolur.
Bu yüzden bilim adamları bu sorunu çözmenin bir yolunu buldular, her satırdan sonra iki bitiş karakteri ekliyorlar, biri yazıcıya yazdırma kafasını sola getirmesini söyleyen 'Taşıyıcı dönüşü'; diğeri 'Satır besleme', yazıcıya kağıdı 1 satır yukarı taşımasını söyler.
Daha sonra bilgisayar popüler oldu, bu iki kavram bilgisayarlarda kullanıldı. O zaman, depolama cihazı çok pahalıydı, bu yüzden bazı bilim adamları her satırın sonuna iki karakter eklemenin pahalı olduğunu söyledi, biri yeterli, bu yüzden hangisinin kullanılacağı konusunda bazı argümanlar var.
UNIX / Mac ve Linux'ta her satırın sonuna '\ n', Windows'ta her satırın sonuna '\ r \ n' konur. Bu kullanımın sonucu, Windows'ta açılırsa UNIX / Mac'teki dosyaların tek bir satırda görüntülenmesidir. Windows'daki dosya, UNIX veya Mac'te açılırsa her satırın sonunda bir ^ M olacaktır.
WRITE.EXE
(diğer adıyla Wordpad) bunları gayet iyi görüntüleyebilir.
Eski kağıt yazıcı terminallerinde, bir sonraki hatta ilerlemek için iki işlem vardı: yazdırma kafasını yatay tarama aralığının başlangıcına (satır başı) ve yazdırılmakta olan kağıt rulosuna ilerletme (satır besleme).
Artık kağıt yazıcı terminalleri kullanmadığımızdan, bu eylemler artık gerçekten alakalı değil, ancak sinyal vermek için kullanılan karakterler çeşitli enkarnasyonlarda takılı kaldı.
Bir IBM 1403 darbeli yazıcıyı düşünün. CR yazdırma kafasını satırın başına getirdi, ancak kağıdı ilerletmedi. Bu, bir satıra birden fazla çıktı satırı yerleştirerek "üst baskı" yapılmasına izin verdi. BOLD baskı gibi alt çizgi gibi şeylere bu şekilde ulaşıldı. LF kağıdı bir satır ilerletti. CR olmasaydı, LF yazdırma kafasını hareket ettirmediğinden sonraki satır aşamalı bir adım olarak yazdırılır. FF kağıdı bir sonraki sayfaya ilerletti. Genellikle yazdırma kafasını yeni sayfadaki ilk satırın başlangıcına taşıdı, ancak bunun için CR'ye ihtiyacınız olabilir. Emin olmak için, çoğu programcı bir sayfadaki son satırın sonunda CRLF yerine CRFF'yi kodlamıştır, çünkü FF tarafından oluşturulan ekstra bir CR önemli değildir.
Kısacası :
Carriage_return ( \r
veya 0xD
): at kontrol altına almak için başlayan bir aynı hat .
(Line_Feed \n
ya 0xA
): at kontrolünü elinize için başlangıç ve sonraki satırda .
(form_feed \f
ya 0xC
): at kontrol altına almak için başlayan bir sonraki sayfaya .
Ek olarak,
1, satırbaşı : bu yazıcı terminolojisi anlamına gelir baskı yerini geçerli satırın başına. Bilgisayar dünyasında, çoğu durumda mevcut hattın başına dönmek anlamına gelir, ancak nadiren yeni hattın anlamına gelir.
2, hat besleme : Bu yazıcı bir satır ilerleyen anlamına gelen bir yazıcı terminolojisi. Dolayısıyla, satır başı ve Satır besleme, yeni bir satırın başında yazdırmaya başlamak için birlikte kullanılır. Bilgisayar dünyasında genellikle satırsonu ile aynı anlama sahiptir.
3, Form besleme : Bu bir yazıcı terminolojisi, bu konudaki açıklamayı seviyorum .
1980'lerin tarzı bir yazıcı için programlama yapıyorsanız, kağıdı çıkarır ve yeni bir sayfa başlatır. Asla buna ihtiyaç duymayacağından neredeyse kesin.
Neredeyse kullanılmıyor ve başvurabilirsiniz Escape dizisi \ f - form feed'e - tam olarak nedir? Ayrıntılı açıklama için.
Bazı platformlarda yeni satır anlamına gelmek için CR veya LF veya CRLF kullanabiliriz, ancak yeni satır diğer bazı platformlarda onlar tarafından duramaz. Bakın wiki Newline'a bakın.
LF: Multics, Unix ve Unix benzeri sistemler (Linux, OS X, FreeBSD, AIX, Xenix, vb.), BeOS, Amiga, RISC OS ve diğerleri
CR: Commodore 8 bit makineler, Acorn BBC, ZX Spectrum, TRS-80, Apple II ailesi, Oberon, sürüm 9'a kadar klasik Mac OS, MIT Lisp Makinesi ve OS-9
RS: QNX POSIX öncesi uygulama
0x9B: ASCII'nin ATASCII varyantını kullanan Atari 8 bit makineleri (ondalık olarak 155)
CR + LF: Microsoft Windows, DOS (MS-DOS, PC DOS, vb.), DEC TOPS-10, RT-11, CP / M, MP / M, Atari TOS, OS / 2, Symbian OS, Palm OS, Amstrad TBM ve diğer pek çok erken Unix olmayan ve IBM dışı işletim sistemi
LF + CR: Palamut BBC ve RISC OS makaralı metin çıktısı.
Taşıyıcı geri dönüşü ve satır besleme de daktilolara atıfta bulunur, çünkü taşıyıcının sol tarafındaki tutamağa küçük bir itme ile (kağıdın gittiği yer), kağıt silindirin etrafında küçük bir miktar döndürür ve tek satırlık belge. Bir satır yazmayı bitirdiyseniz ve bir sonrakine devam etmek istiyorsanız, hem bir satır ilerleyerek hem de şaryoyu tamamen sağa kaydırarak daha sonra zorladınız, ardından şaryo her tuşa basarken soldan sağa tekrar yazmaya devam ettiniz. . Söylemeye gerek yok, kelime kaydırma, çağın tüm kelime işlemesi için varsayılan ayardı. P: D
Bunlar "yeni çizgi" kavramıyla ilgili basım dışı karakterler. \ n satır besleme. taşıma dönüşüdür. Farklı platformlarda, geçerli yeni bir çizgiye göre farklı anlamları vardır. Pencerelerde yeni bir satır \ r \ n. Linux'ta, \ n. Mac'te, \ r.
Pratikte, bunları herhangi bir dizeye koyarsınız ve dizenin çıktısı üzerinde etkisi olur.