>> SPEAKER 1: Mari kita sekarang memperbaiki bahwa program terakhir.
Dan kali ini, mari kita secara eksplisit mengalokasikan beberapa memori di mana
input pengguna akan disimpan.
Untuk melakukannya, mari kita mengasah dalam pada itu pertama baris kode di mana kita menyatakan s
sebelumnya menjadi bintang arang.
Kali ini, mari kita re-declare sebagai berikut -
char s bracket 16, misalnya, braket dekat.
>> Dengan kata lain, mari kita menyatakan untuk tidak lagi menjadi alamat dari karakter,
melainkan sebuah array dari 16 karakter.
Dengan cara ini, pengguna dapat mengetikkan sampai 15 karakter dan masih meninggalkan ruang untuk
terminator null.
Mari kita lanjutkan untuk Simpan, Kompilasi, dan Jalankan program ini.
Membuat scanf2 dot slash scanf2.
Mari kita sekarang ketik string seperti halo, dan kami mengucapkan terima kasih untuk hello.
>> Sekarang, masih ada masalah.
Saya hanya mengetik halo, yang hanya lima karakter, ditambah 1 untuk null
terminator.
Ini meninggalkan kita dengan hanya kebutuhan untuk enam byte.
>> Tapi sayangnya, kita hanya dialokasikan 16 secara total.
Jadi, jika pengguna benar-benar tipe di 16 karakter, atau 17, atau beberapa ratus
karakter, kita masih tidak akan memiliki cukup ruang di memori untuk
masukan pengguna.
Dan pada kenyataannya, ini adalah apa yang membuat mendapatkan masukan pengguna sehingga
sulit pada umumnya.
Dan memang, ini adalah mengapa kita menerapkan get fungsi string dalam pertama
Tempat di perpustakaan CS50 -
untuk mengetahui bagaimana menangani mereka situasi dimana jenis pengguna dalam
lebih karakter daripada kita awalnya diantisipasi.
>> Terus terang, tanpa benar-benar menulis ulang program ini,
tidak ada solusi yang bersih.
Sebaliknya, apa yang kita harus lakukan adalah mendapatkan karakter dari pengguna satu per satu
waktu, lagi dan lagi.
Dan pada setiap titik jika kita menyadari kita dari memori, kita harus di
saat itu kembali dan realokasi beberapa memori lebih, salin pengguna
masukan sebelumnya dari potongan pertama kami memori ke yang baru,
sepotong lebih besar dari memori.
Dan kemudian mengulangi proses itu lagi dan lagi sampai pengguna dilakukan memberikan
masukan nya.