Apa arti "carriage return"? Saya tidak melihat "kereta" "kembali" di laptop saya. : s
Jean Hominal
12
@JeanHominal carriage pada dasarnya berarti kursor (atau penunjuk dalam mesin tik kuno), dan return berarti kembali ke awal baris itu.
SOFe
Saya tidak melihat ada kabel yang putus (atau panel kaca dalam hal ini) di "terminal" "window" saya, juga tidak ada "teletype" yang melekat pada / dev / tty1. Mereka semua menjadi metafora.
Piskvor meninggalkan gedung
Jawaban:
622
Pengembalian kereta berarti kembali ke awal baris saat ini tanpa bergerak ke bawah. Nama tersebut berasal dari kereta printer, karena monitor jarang ketika nama itu diciptakan. Ini umumnya lolos sebagai \r, disingkat CR , dan memiliki nilai ASCII 13atau 0x0D.
Linefeed berarti naik ke bawah ke baris berikutnya; Namun, itu telah diubah dan diganti namanya. Digunakan sebagai "baris baru", itu mengakhiri garis (biasanya bingung dengan garis memisahkan ). Ini umumnya lolos sebagai \n, disingkat LF atau NL, dan memiliki nilai ASCII 10atau 0x0A. CRLF (tetapi tidak CRNL) digunakan untuk pasangan \r\n.
Umpan formulir berarti naik ke bawah ke "halaman" berikutnya. Itu biasa digunakan sebagai pemisah halaman, tetapi sekarang juga digunakan sebagai pemisah bagian. (Ini tidak biasa digunakan dalam kode sumber untuk membagi fungsi atau kelompok fungsi yang independen secara logis.) Editor teks dapat menggunakan karakter ini ketika Anda "menyisipkan page break". Ini biasanya lolos sebagai \f, disingkat FF , dan memiliki nilai ASCII 12atau 0x0C.
Sebagai karakter kontrol, mereka dapat diinterpretasikan dengan berbagai cara.
Perbedaan yang paling umum (dan mungkin satu-satunya yang perlu dikhawatirkan) adalah garis akhir dengan CRLF pada Windows, NL pada Unix-like, dan CR pada Mac yang lebih lama (situasinya telah berubah dengan OS X menjadi seperti Unix). Perhatikan pergeseran makna dari LF ke NL, untuk karakter yang sama persis, memberikan perbedaan antara Windows dan Unix. (Windows, tentu saja, lebih baru dari Unix, jadi tidak mengadopsi pergeseran semantik ini. Saya tidak tahu sejarah Mac menggunakan CR.) Banyak editor teks dapat membaca file dalam salah satu dari ketiga format ini dan mengkonversi di antara mereka , tetapi tidak semua utilitas dapat.
Umpan formulir sedikit lebih menarik (meskipun kurang umum digunakan secara langsung), dan dengan definisi pemisah halaman yang biasa, ia hanya dapat muncul di antara baris (misalnya setelah urutan baris baru NL, CRLF, atau CR) atau di awal atau akhir file.
Saya dapat mengkonfirmasi bahwa OS X menggunakan NL sebagai terminator garis, sama seperti Unix (karena OS X adalah Unix). CR digunakan di Mac OS 9 dan di bawahnya.
Rory O'Kane
1
FF char mungkin tampak aneh hari ini (bersama dengan char bell "CTRL-G") tetapi memiliki relevansi kembali ketika tampilan video jauh lebih umum dan terminal hard copy digunakan sebagai display data.
Rick Sarvas
Bukankah itu kontrol umpan \x0c?
Tjorriemorrie
2
"Aku tidak tahu sejarah Mac menggunakan CR." Itu mungkin berasal dari Apple II menggunakan CR. CR juga umum pada sistem 8-bit lainnya, seperti Commodore dan Tandy. ASCII tidak universal pada sistem ini: Commodore menggunakan PETSCII, yang memiliki LF pada 0x8d (!). Atari tidak memiliki karakter LF sama sekali. Untuk alasan apa pun, CR = 0x0d lebih atau kurang standar.
Ssswift
125
\r carriage return dan menggerakkan kursor kembali seperti jika saya akan melakukan-
printf("stackoverflow\rnine")
ninekoverflow
berarti telah menggeser kursor ke awal "stackoverflow" dan menimpa awal empat karakter sejak "sembilan" panjangnya empat karakter.
\n adalah karakter baris baru yang mengubah baris dan membawa kursor ke awal baris baru seperti-
printf("stackoverflow\nnine")
stackoverflow
nine
\f is feed form, penggunaannya telah menjadi usang tetapi digunakan untuk memberikan lekukan seperti
printf("stackoverflow\fnine")
stackoverflow
nine
jika saya akan menulis seperti-
printf("stackoverflow\fnine\fgreat")
stackoverflow
nine
great
Tetapi contoh ini tidak berfungsi dalam bahasa tingkat tinggi!
Sina Karvandi
@ ᔕI ᑎᗩ Kᗩᖇ ᐯᗩᑎᗪ Saya tidak: Anda setidaknya dapat melakukan hal yang sama di Linux shell menggunakan printfutilitas dari coreutils. Atau bahkan menggunakan echo -enyang merupakan bash builtin.
Ruslan
Bagaimana cara melewatkan semua baris sebagai satu baris dalam sebuah file?
Paras Singh
8
Umpan formulir tidak digunakan untuk indentasi. Jika Anda mengirim beberapa dari mereka ke printer itu akan mengeluarkan kertas. Apa yang Anda jelaskan \fsebenarnya \v- tab vertikal, yang diberikan keduanya terlihat sama di konsol.
cprn
printf("123\f456\f789");menunjukkan /> <bold> 123456789 </bold> di konsol.
Sistem berdasarkan ASCII atau rangkaian karakter yang kompatibel menggunakan LF (Umpan baris, '\ n', 0x0A, 10 dalam desimal) atau CR (Pengembalian kereta, '\ r', 0x0D, 13 dalam desimal) secara individu, atau CR diikuti oleh LF (CR + LF, 0x0D 0x0A). Karakter-karakter ini didasarkan pada perintah printer: Umpan garis menunjukkan bahwa satu baris kertas harus diumpan keluar dari printer, dan carriage return menunjukkan bahwa carriage printer harus kembali ke awal baris saat ini.
\fdigunakan untuk page break. Anda tidak dapat melihat efek apa pun di konsol. Tetapi ketika Anda menggunakan karakter ini konstan dalam file Anda maka Anda dapat melihat perbedaannya.
Contoh lain adalah jika Anda dapat mengarahkan output ke file, maka Anda tidak perlu menulis file atau menggunakan penanganan file.
Terlepas dari informasi di atas, masih ada sejarah yang menarik dari LF (\ n) dan CR (\ r). [Penulis asli: 阮一峰 Sumber: http://www.ruanyifeng.com/blog/2006/04/post_213.html]
Sebelum komputer keluar, ada jenis teleprinter bernama Teletype Model 33. Masing-masing dapat mencetak 10 karakter kedua. Tetapi ada satu masalah dengan ini, setelah selesai mencetak setiap baris, akan butuh 0,2 detik untuk pindah ke baris berikutnya, yaitu saat mencetak 2 karakter. Jika karakter baru ditransfer selama 0,2 detik ini, maka karakter baru ini akan hilang.
Jadi para ilmuwan menemukan cara untuk mengatasi masalah ini, mereka menambahkan dua karakter akhir setelah setiap baris, satu adalah 'Carriage return', yang memberitahu printer untuk membawa print head ke kiri .; yang lainnya adalah 'Line feed', ini memberitahu printer untuk memindahkan kertas ke atas 1 baris.
Kemudian, komputer menjadi populer, kedua konsep ini digunakan pada komputer. Pada saat itu, perangkat penyimpanan itu sangat mahal, sehingga beberapa ilmuwan mengatakan bahwa menambahkan dua karakter pada akhir setiap baris itu mahal, satu sudah cukup, jadi ada beberapa argumen tentang yang mana yang akan digunakan.
Di UNIX / Mac dan Linux, '\ n' diletakkan di akhir setiap baris, di Windows, '\ r \ n' diletakkan di akhir setiap baris. Konsekuensi dari penggunaan ini adalah bahwa file dalam UNIX / Mac akan ditampilkan dalam satu baris jika dibuka di Windows. Sementara file di Windows akan memiliki satu ^ M di akhir setiap baris jika dibuka di UNIX atau Mac.
Dengan rilis OSX (berdasarkan BSD unix), Mac beralih ke '\ n' - akhiran baris Unix.
Jonathan Cross
"File dalam UNIX / Mac akan ditampilkan dalam satu baris jika dibuka di Windows." WRITE.EXE(alias Wordpad) dapat menampilkannya dengan baik.
thecarpy
18
Pada terminal kertas-printer tua, naik ke baris berikutnya melibatkan dua tindakan: memindahkan print head kembali ke awal rentang pemindaian horizontal (carriage return) dan memajukan gulungan kertas yang sedang dicetak (feed line).
Karena kita tidak lagi menggunakan terminal kertas-printer, tindakan itu tidak benar-benar relevan lagi, tetapi karakter yang digunakan untuk memberi sinyal mereka telah terjebak di berbagai inkarnasi.
Sebenarnya 'carriage return' tidak menggerakkan print head ke kiri, tetapi memindahkan carriage yang menahan pelat ke kanan. Dulu ada tuas panjang yang digerakkan oleh tangan kiri untuk melakukan ini. Lihat en.wikipedia.org/wiki/Typewriter
Pertimbangkan printer dampak IBM 1403. CR memindahkan print head ke awal baris, tetapi TIDAK memajukan kertas. Ini memungkinkan untuk "mencetak berlebih", menempatkan banyak garis output pada satu baris. Hal-hal seperti menggarisbawahi dicapai dengan cara ini, seperti halnya cetak BOLD. LF maju kertas satu baris. Jika tidak ada CR, baris berikutnya akan mencetak sebagai langkah terhuyung karena LF tidak menggerakkan print head. FF memajukan kertas ke halaman berikutnya. Biasanya juga memindahkan print head ke awal baris pertama pada halaman baru, tetapi Anda mungkin perlu CR untuk itu. Yang pasti, sebagian besar programmer mengkodekan CRFF dan bukan CRLF pada akhir baris terakhir pada halaman karena CR tambahan yang dibuat oleh FF tidak masalah.
1, Pengembalian kereta : Ini adalah terminologi printer yang berarti mengubah lokasi cetak ke awal baris saat ini . Dalam dunia komputer, itu berarti kembali ke awal baris saat ini dalam banyak kasus tetapi jarang berdiri untuk baris baru.
2, Line feed : Ini adalah terminologi printer yang berarti memajukan kertas satu baris. Jadi Carriage return dan Line feed digunakan bersama untuk mulai mencetak di awal baris baru. Dalam dunia komputer, umumnya memiliki arti yang sama dengan baris baru.
3, Form feed : Ini terminologi printer, saya suka penjelasan di utas ini .
Jika Anda memprogram untuk printer gaya 1980-an, itu akan mengeluarkan kertas dan memulai halaman baru. Anda hampir pasti tidak pernah membutuhkannya.
Catatan, kita dapat menggunakan CR atau LF atau CRLF untuk berdiri di baris baru di beberapa platform, tetapi baris baru tidak dapat berdiri di platform lain. Lihat wiki Newline untuk detailnya.
LF: Sistem Multics, Unix dan Unix-like (Linux, OS X, FreeBSD, AIX, Xenix, dll.), BeOS, Amiga, RISC OS, dan lainnya
CR: Mesin Commodore 8-bit, Acorn BBC, ZX Spectrum, TRS-80, keluarga Apple II, Oberon, Mac OS klasik hingga versi 9, MIT Lisp Machine dan OS-9
RS: implementasi QNX pra-POSIX
0x9B: Mesin Atari 8-bit menggunakan varian ATASCII ASCII (155 dalam desimal)
CR + LF: Microsoft Windows, DOS (MS-DOS, PC DOS, dll.), DEC TOPS-10, RT-11, CP / M, MP / M, Atari TOS, OS / 2, OS Symbian, Palm OS, Amstrad BPK, dan sebagian besar OS awal non-Unix dan non-IBM
LF + CR: Acorn BBC dan RISC OS output teks spooled.
Carriage return dan line feed juga merujuk pada mesin tik, yaitu dengan sedikit dorongan pada pegangan di sisi kiri media (tempat kertas bergerak), kertas akan memutar sedikit di sekitar silinder, memajukan mendokumentasikan satu baris. Jika Anda selesai mengetik satu baris, dan ingin melanjutkan ke yang berikutnya, Anda mendorong lebih keras, baik memajukan garis dan menggeser kereta sampai ke kanan, kemudian melanjutkan mengetik dari kiri ke kanan lagi saat kereta berjalan dengan masing-masing keystroke . Tidak perlu dikatakan, bungkus kata adalah pengaturan default untuk semua pemrosesan kata di era ini. P: D
Itu adalah karakter non-cetak, berkaitan dengan konsep "baris baru". \ n adalah linefeed. adalah carriage return. Pada platform yang berbeda, mereka memiliki arti yang berbeda, relatif terhadap baris baru yang valid. Di windows, baris baru adalah \ r \ n. Di linux, \ n. Di mac, \ r.
Dalam praktiknya, Anda meletakkannya di string apa pun, dan itu akan berpengaruh pada hasil cetak string.
Jawaban:
Pengembalian kereta berarti kembali ke awal baris saat ini tanpa bergerak ke bawah. Nama tersebut berasal dari kereta printer, karena monitor jarang ketika nama itu diciptakan. Ini umumnya lolos sebagai
\r
, disingkat CR , dan memiliki nilai ASCII13
atau0x0D
.Linefeed berarti naik ke bawah ke baris berikutnya; Namun, itu telah diubah dan diganti namanya. Digunakan sebagai "baris baru", itu mengakhiri garis (biasanya bingung dengan garis memisahkan ). Ini umumnya lolos sebagai
\n
, disingkat LF atau NL, dan memiliki nilai ASCII10
atau0x0A
. CRLF (tetapi tidak CRNL) digunakan untuk pasangan\r\n
.Umpan formulir berarti naik ke bawah ke "halaman" berikutnya. Itu biasa digunakan sebagai pemisah halaman, tetapi sekarang juga digunakan sebagai pemisah bagian. (Ini tidak biasa digunakan dalam kode sumber untuk membagi fungsi atau kelompok fungsi yang independen secara logis.) Editor teks dapat menggunakan karakter ini ketika Anda "menyisipkan page break". Ini biasanya lolos sebagai
\f
, disingkat FF , dan memiliki nilai ASCII12
atau0x0C
.Sebagai karakter kontrol, mereka dapat diinterpretasikan dengan berbagai cara.
Perbedaan yang paling umum (dan mungkin satu-satunya yang perlu dikhawatirkan) adalah garis akhir dengan CRLF pada Windows, NL pada Unix-like, dan CR pada Mac yang lebih lama (situasinya telah berubah dengan OS X menjadi seperti Unix). Perhatikan pergeseran makna dari LF ke NL, untuk karakter yang sama persis, memberikan perbedaan antara Windows dan Unix. (Windows, tentu saja, lebih baru dari Unix, jadi tidak mengadopsi pergeseran semantik ini. Saya tidak tahu sejarah Mac menggunakan CR.) Banyak editor teks dapat membaca file dalam salah satu dari ketiga format ini dan mengkonversi di antara mereka , tetapi tidak semua utilitas dapat.
Umpan formulir sedikit lebih menarik (meskipun kurang umum digunakan secara langsung), dan dengan definisi pemisah halaman yang biasa, ia hanya dapat muncul di antara baris (misalnya setelah urutan baris baru NL, CRLF, atau CR) atau di awal atau akhir file.
sumber
\x0c
?\r
carriage return dan menggerakkan kursor kembali seperti jika saya akan melakukan-berarti telah menggeser kursor ke awal "stackoverflow" dan menimpa awal empat karakter sejak "sembilan" panjangnya empat karakter.
\n
adalah karakter baris baru yang mengubah baris dan membawa kursor ke awal baris baru seperti-\f
is feed form, penggunaannya telah menjadi usang tetapi digunakan untuk memberikan lekukan sepertijika saya akan menulis seperti-
sumber
printf
utilitas dari coreutils. Atau bahkan menggunakanecho -en
yang merupakan bash builtin.\f
sebenarnya\v
- tab vertikal, yang diberikan keduanya terlihat sama di konsol.printf("123\f456\f789");
menunjukkan /> <bold> 123456789 </bold> di konsol.Lihatlah Wikipedia :
sumber
\f
digunakan untuk page break. Anda tidak dapat melihat efek apa pun di konsol. Tetapi ketika Anda menggunakan karakter ini konstan dalam file Anda maka Anda dapat melihat perbedaannya.Contoh lain adalah jika Anda dapat mengarahkan output ke file, maka Anda tidak perlu menulis file atau menggunakan penanganan file.
Misalnya:
Tulis kode ini di c ++
dan ketika Anda mengkompilasi ini menghasilkan exe (untuk ex.
abc.exe
)maka Anda dapat mengarahkan output Anda ke file menggunakan ini:
abc > xyz.doc
kemudian buka file
xyz.doc
Anda dapat melihat halaman yang sebenarnya istirahat antara hellooo dan hiiii ....sumber
Terlepas dari informasi di atas, masih ada sejarah yang menarik dari LF (\ n) dan CR (\ r). [Penulis asli: 阮一峰 Sumber: http://www.ruanyifeng.com/blog/2006/04/post_213.html] Sebelum komputer keluar, ada jenis teleprinter bernama Teletype Model 33. Masing-masing dapat mencetak 10 karakter kedua. Tetapi ada satu masalah dengan ini, setelah selesai mencetak setiap baris, akan butuh 0,2 detik untuk pindah ke baris berikutnya, yaitu saat mencetak 2 karakter. Jika karakter baru ditransfer selama 0,2 detik ini, maka karakter baru ini akan hilang.
Jadi para ilmuwan menemukan cara untuk mengatasi masalah ini, mereka menambahkan dua karakter akhir setelah setiap baris, satu adalah 'Carriage return', yang memberitahu printer untuk membawa print head ke kiri .; yang lainnya adalah 'Line feed', ini memberitahu printer untuk memindahkan kertas ke atas 1 baris.
Kemudian, komputer menjadi populer, kedua konsep ini digunakan pada komputer. Pada saat itu, perangkat penyimpanan itu sangat mahal, sehingga beberapa ilmuwan mengatakan bahwa menambahkan dua karakter pada akhir setiap baris itu mahal, satu sudah cukup, jadi ada beberapa argumen tentang yang mana yang akan digunakan.
Di UNIX / Mac dan Linux, '\ n' diletakkan di akhir setiap baris, di Windows, '\ r \ n' diletakkan di akhir setiap baris. Konsekuensi dari penggunaan ini adalah bahwa file dalam UNIX / Mac akan ditampilkan dalam satu baris jika dibuka di Windows. Sementara file di Windows akan memiliki satu ^ M di akhir setiap baris jika dibuka di UNIX atau Mac.
sumber
WRITE.EXE
(alias Wordpad) dapat menampilkannya dengan baik.Pada terminal kertas-printer tua, naik ke baris berikutnya melibatkan dua tindakan: memindahkan print head kembali ke awal rentang pemindaian horizontal (carriage return) dan memajukan gulungan kertas yang sedang dicetak (feed line).
Karena kita tidak lagi menggunakan terminal kertas-printer, tindakan itu tidak benar-benar relevan lagi, tetapi karakter yang digunakan untuk memberi sinyal mereka telah terjebak di berbagai inkarnasi.
sumber
Pertimbangkan printer dampak IBM 1403. CR memindahkan print head ke awal baris, tetapi TIDAK memajukan kertas. Ini memungkinkan untuk "mencetak berlebih", menempatkan banyak garis output pada satu baris. Hal-hal seperti menggarisbawahi dicapai dengan cara ini, seperti halnya cetak BOLD. LF maju kertas satu baris. Jika tidak ada CR, baris berikutnya akan mencetak sebagai langkah terhuyung karena LF tidak menggerakkan print head. FF memajukan kertas ke halaman berikutnya. Biasanya juga memindahkan print head ke awal baris pertama pada halaman baru, tetapi Anda mungkin perlu CR untuk itu. Yang pasti, sebagian besar programmer mengkodekan CRFF dan bukan CRLF pada akhir baris terakhir pada halaman karena CR tambahan yang dibuat oleh FF tidak masalah.
sumber
Pendeknya :
Carriage_return (
\r
atau0xD
): Untuk mengambil kendali di mulai dari baris yang sama .Line_Feed (
\n
atau0xA
): Untuk Kendalikan di mulai dari baris berikutnya .form_feed (
\f
atau0xC
): Untuk mengambil kendali di mulai dari halaman berikutnya .sumber
Sebagai suplemen,
1, Pengembalian kereta : Ini adalah terminologi printer yang berarti mengubah lokasi cetak ke awal baris saat ini . Dalam dunia komputer, itu berarti kembali ke awal baris saat ini dalam banyak kasus tetapi jarang berdiri untuk baris baru.
2, Line feed : Ini adalah terminologi printer yang berarti memajukan kertas satu baris. Jadi Carriage return dan Line feed digunakan bersama untuk mulai mencetak di awal baris baru. Dalam dunia komputer, umumnya memiliki arti yang sama dengan baris baru.
3, Form feed : Ini terminologi printer, saya suka penjelasan di utas ini .
Sudah hampir usang dan Anda dapat merujuk ke Escape sequence \ f - form feed - apa sebenarnya itu? untuk penjelasan terperinci.
Catatan, kita dapat menggunakan CR atau LF atau CRLF untuk berdiri di baris baru di beberapa platform, tetapi baris baru tidak dapat berdiri di platform lain. Lihat wiki Newline untuk detailnya.
sumber
"\ n" adalah karakter linefeed. Itu berarti mengakhiri baris ini dan pergi ke baris baru untuk siapa saja yang membacanya.
sumber
Carriage return dan line feed juga merujuk pada mesin tik, yaitu dengan sedikit dorongan pada pegangan di sisi kiri media (tempat kertas bergerak), kertas akan memutar sedikit di sekitar silinder, memajukan mendokumentasikan satu baris. Jika Anda selesai mengetik satu baris, dan ingin melanjutkan ke yang berikutnya, Anda mendorong lebih keras, baik memajukan garis dan menggeser kereta sampai ke kanan, kemudian melanjutkan mengetik dari kiri ke kanan lagi saat kereta berjalan dengan masing-masing keystroke . Tidak perlu dikatakan, bungkus kata adalah pengaturan default untuk semua pemrosesan kata di era ini. P: D
sumber
Itu adalah karakter non-cetak, berkaitan dengan konsep "baris baru". \ n adalah linefeed. adalah carriage return. Pada platform yang berbeda, mereka memiliki arti yang berbeda, relatif terhadap baris baru yang valid. Di windows, baris baru adalah \ r \ n. Di linux, \ n. Di mac, \ r.
Dalam praktiknya, Anda meletakkannya di string apa pun, dan itu akan berpengaruh pada hasil cetak string.
sumber