Hasil Anda akan bervariasi tergantung pada jenis program terminal atau konsol yang Anda gunakan, tetapi ya, sebagian besar \b
adalah backspace yang tidak merusak . Ini memindahkan kursor ke belakang, tetapi tidak menghapus apa yang ada di sana.
Jadi untuk hello worl
bagian ini, keluaran kode
halo dunia
^
... (di mana ^
menunjukkan di mana kursor berada) Kemudian ia mengeluarkan dua \b
karakter yang menggerakkan kursor mundur dua tempat tanpa menghapus (di terminal Anda):
halo dunia
^
Perhatikan bahwa kursor sekarang berada di r
. Kemudian itu keluar d
, yang menimpa r
dan memberi kita:
halo wodl
^
Akhirnya, ia mengeluarkan \n
, yang merupakan baris baru non-destruktif (sekali lagi, di sebagian besar terminal, termasuk yang tampaknya milik Anda), sehingga l
dibiarkan tidak berubah dan kursor dipindahkan ke awal baris berikutnya.
r
diganti dengand
. Penjelasannya masih pas.cmd.exe
dancommand.com
terminal tidak selalu masuk (Anda dapat menggunakan tombol Ins untuk mengubah perilaku). Saya terkejut menemukan bahwa Terminal Gnome di komputer utama * nix saya selalu menyisipkan, bahkan tampaknya tidak memiliki preferensi untuk itu apalagi beralih berdasarkan tombol Ins. Tidak pernah menyadarinya sebelumnya. Jelas saya hampir tidak pernah ingin mengetik. :-)sumber
'\n'
tidak memiliki representasi di layar. Apa yang sudah ada tetap sama; tidak diganti dengan spasi atau representasi karakter lainnya.Jika Anda menginginkan backspace yang merusak, Anda memerlukan sesuatu seperti
yaitu backspace, spasi, dan backspace lainnya.
sumber
\b
berarti karakter keluaran berikutnya akan menimpanya.0x7f
), saya bingung.Tidak terlalu sulit untuk dijelaskan ... Ini seperti mengetik
hello worl
, menekan tombol panah kiri dua kali, mengetikd
, dan menekan tombol panah bawah.Setidaknya, begitulah cara saya menyimpulkan terminal Anda menginterpretasikan kode
\b
dan\n
.Alihkan output ke file dan saya yakin Anda mendapatkan sesuatu yang sama sekali berbeda. Meskipun Anda mungkin harus melihat byte file untuk melihat perbedaannya.
[edit]
Untuk menguraikan sedikit, ini
printf
memancarkan urutan byte:, dihello worl^H^Hd^J
mana^H
karakter ASCII # 8 dan^J
karakter ASCII # 10. Apa yang Anda lihat di layar Anda bergantung pada bagaimana terminal Anda menafsirkan kode-kode kontrol tersebut.sumber
Gunakan satu spasi mundur setelah setiap karakter
printf("hello wor\bl\bd\n");
sumber