>> DAVID J. Malan: Jadi ternyata bahwa menyalin string tidak hampir sama
sederhana seperti menyalin primitif, seperti int atau pelampung.
Setelah semua, di bawah tenda string adalah karakter berurutan.
Jadi menyalin string, oleh karena itu, harus melibatkan menyalin bahwa seluruh urutan
karakter.
>> Mari kita mengalihkan perhatian kita kembali ke implementasi terakhir dan merobek ini
line, tali t sama, yang jelas tidak cukup.
Mari kita menggantinya dengan garis yang terlihat, sebaliknya, seperti ini.
String t mendapat malloc panjang string s ditambah 1 kali ukuran char.
>> Sekarang ada kutipan sedikit akan di dalam baris kode.
Pertama, malloc, pendek untuk memori alokasi, dan
fungsi tidak hanya itu.
Mengingat integer, itu kembali kepada Anda alamat sepotong memori dari
yang banyak byte.
Sementara itu, panjang string s ditambah 1 dimaksudkan untuk menunjukkan bahwa kita inginkan sebagai
banyak byte sebagai s sudah menempati, termasuk null terminator, yang
backslash 0 di akhir string.
>> Sementara itu, saya tidak selalu ingat seberapa besar char, bahkan
meskipun pada kebanyakan sistem itu hanya 1 byte, jadi saya akan menelepon ukuran char
mengetahui secara dinamis seberapa besar karakter individu.
Setelah dikalikan bersama-sama, saya mendapatkan kembali jumlah byte yang saya butuhkan.
>> Tapi bagaimana kalau malloc gagal kembali memori yang kita butuhkan?
Aku terbaik memeriksa untuk itu sebagai berikut.
Jika t sama dengan nol, maka aku pertama akan untuk free s, memori dikembalikan oleh get
tali, dan kemudian aku akan kembali 1, untuk menandakan kesalahan.
>> Tetapi jika semuanya baik-baik, aku akan melanjutkan menggunakan empat lingkaran dan iterate
sebagai berikut.
Untuk int saya mendapatkan 0, n equals panjang string s.
Aku akan melakukan hal ini selama i adalah kurang dari atau sama dengan n sehingga saya
iterate melalui dan termasuk karakter terminating nol dalam s.
>> Dan pada setiap iterasi, aku akan kenaikan i.
Sementara itu, dalam lingkaran ini, copy s s karakter ke-i ke t i-th
lokasi, cukup dengan melakukan t braket i mendapat s braket i.
>> Sekarang mari kita simpan, kompilasi, dan menjalankan program baru ini.
Membuat salinan 1 dot slash copy 1.
Dan aku akan mengatakan sesuatu seperti halo dalam huruf kecil semua.
Dan untungnya, kali ini saya asli tetap tidak berubah.
halo dalam huruf kecil semua.
Tapi salinan tersebut, memang, dikapitalisasi.