DAVID J. MALAN: Jadi ia ternyata bahawa menyalin rentetan tidak sebegitu semudah menyalin primitif, seperti int atau apungan. Lagipun, di bawah hood rentetan adalah watak-watak urutan. Jadi menyalin tali, oleh itu, perlu melibatkan menyalin urutan seluruh aksara. Mari kita mengubah perhatian kita kembali kepada pelaksanaan lepas dan merobek keluar ini line, tali t sama s, yang jelas tidak mencukupi. Mari kita menggantikannya dengan garis yang kelihatan, sebaliknya, seperti ini. Rentetan t mendapat malloc panjang rentetan s ditambah 1 kali saiz char a. Sekarang ada quote sedikit akan di dalam bidang ini selepas kod. Pertama, malloc, pendek untuk memori peruntukan, dan fungsi tidak hanya itu. Memandangkan integer, ia kembali kepada anda alamat sebahagian daripada ingatan bahawa banyak bait. Sementara itu, panjang tali s ditambah 1 bertujuan untuk menunjukkan bahawa kita mahu sebagai banyak bait sebagai s sudah menduduki, termasuk terminator null, yang garis sendeng terbalik 0 pada akhir rentetan. Sementara itu, saya tidak semestinya ingat berapa besar char itu, walaupun walaupun pada kebanyakan sistem ia hanya 1 bait, jadi saya akan memanggil saiz char untuk memikirkan secara dinamik bagaimana besar watak individu adalah. Apabila didarab bersama-sama, saya mendapat kembali jumlah bait yang saya perlukan. Tetapi bagaimana jika malloc gagal kembali memori yang kita perlukan? Saya terbaik akan menyemak yang seperti berikut. Jika t sama batal, maka saya pertama akan s percuma, memori yang dikembalikan oleh mendapatkan tali, dan kemudian saya akan kembali 1, untuk menandakan kesilapan. Tetapi jika semuanya berjalan dengan lancar, saya akan meneruskan menggunakan gelung empat dan melelar seperti berikut. Untuk int i mendapat 0, n setaraf panjang tali s. Saya akan melakukan ini selagi i adalah kurang daripada atau sama dengan n supaya saya melelar atas melalui dan termasuk watak menamatkan null dalam s. Dan pada setiap lelaran, saya akan kenaikan i. Sementara itu, di dalam gelung ini, salinan s i-ke-watak ke dalam t i-ke- lokasi, ia mencukupi untuk melakukan t kurungan i mendapat s kurungan i. Saya terbaik akan menambah satu tambahan talian untuk kod saya. Khususnya, kerana saya kini menggunakan malloc, meminta ingatan, ia saya tanggungjawab untuk membebaskan memori yang apabila saya selesai dengan itu, hanya suka kita perlu membebaskan memori itulah diberikan kepada kita oleh mendapatkan tali. Jadi pada akhir sangat program ini, saya akan menambah satu baris tambahan untuk membebaskan t sebelum kembali 0 untuk menunjukkan kejayaan. Sekarang mari kita menyimpan, menyusun, dan menjalankan program baru ini. Buat salinan 1 dot slash salinan 1. Dan saya akan mengatakan sesuatu seperti hello dalam semua huruf kecil. Dan bersyukur kerana, kali ini saya asal tidak berubah. hello dalam semua huruf kecil. Tetapi salinan yang adalah, sememangnya, dipermodalkan.