Misalkan Anda memiliki string yang TIDAK null
diakhiri dan Anda tahu ukuran pastinya, jadi bagaimana Anda bisa mencetak string itu dengan printf
dalam C? Saya ingat metode seperti itu tetapi saya tidak dapat mengetahuinya sekarang ...
107
C
konteks, semua string diakhiri null. Array char tanpa null di dalamnya bukanlah string ... mereka adalah array char :)Jawaban:
Ada kemungkinan dengan printf, seperti ini:
Tidak perlu menyalin apa pun, tidak perlu mengubah string atau buffer asli.
sumber
printf
bahkan setelah ~ dekade ... :)printf
akan mencetak hingga 11 karakter atau sampai menemukan NULL, mana saja yang lebih dulu; dalam contoh Anda, NULL lebih dulu. Menentukan panjang maksimum tidak membuat NULL kehilangan arti "end-of-string" -nyaprintf
.Berikut adalah penjelasan tentang cara
%.*s
kerjanya, dan di mana ditentukan.Bentuk kedua adalah untuk mendapatkan ketepatan dari daftar argumen:
- Output sintaks konversi di manual glibc
Untuk
%s
pemformatan string, presisi memiliki arti khusus:- Konversi keluaran lainnya di manual glibc
Varian bermanfaat lainnya:
"%*.*s", maxlen, maxlen, val
akan membenarkan, menyisipkan spasi sebelumnya;"%-*.*s", maxlen, maxlen, val
akan membenarkan kiri.sumber
"%-*.*s", padding, str_view.size(), str_view.data()
Anda dapat menggunakan fwrite () untuk stdout!
Dengan cara ini Anda akan menampilkan karakter pertama (angka ditentukan dalam variabel number_of_chars) ke file, dalam hal ini ke stdout (output standar, layar Anda)!
sumber
printf("%.*s", length, string)
tidak akan berfungsi.Ini berarti mencetak HINGGA byte panjang ATAU byte nol, mana saja yang lebih dulu. Jika array-of-char non-null-terminated Anda berisi byte null SEBELUM panjangnya, printf akan menghentikannya, dan tidak melanjutkan.
sumber
Panjang senar akan menjadi 5.
sumber
Saya mengedit kodenya, dengan cara lain:
sumber