1 00:00:00,000 --> 00:00:00,340 2 00:00:00,340 --> 00:00:01,960 >> SPEAKER 1: Mari kita kini menetapkan bahawa program lepas. 3 00:00:01,960 --> 00:00:04,920 Dan kali ini, mari kita secara jelas memperuntukkan beberapa memori di mana 4 00:00:04,920 --> 00:00:06,550 input pengguna akan disimpan. 5 00:00:06,550 --> 00:00:09,600 Untuk berbuat demikian, mari kita mengasah dalam pada yang pertama baris kod di mana kita diisytiharkan s 6 00:00:09,600 --> 00:00:11,590 sebelum menjadi bintang char. 7 00:00:11,590 --> 00:00:14,210 Kali ini, mari kita semula mengisytiharkan ia seperti berikut - 8 00:00:14,210 --> 00:00:19,380 char s kurungan 16, misalnya, kurungan dekat. 9 00:00:19,380 --> 00:00:23,690 >> Dalam erti kata lain, mari kita mengisytiharkan s untuk tidak lagi menjadi alamat aksara, 10 00:00:23,690 --> 00:00:26,610 tetapi pelbagai 16 aksara. 11 00:00:26,610 --> 00:00:30,295 Dengan cara ini, pengguna boleh menaip sehingga 15 watak-watak dan masih meninggalkan ruang untuk 12 00:00:30,295 --> 00:00:31,570 terminator null. 13 00:00:31,570 --> 00:00:35,870 Mari kita meneruskan untuk Simpan, Menyusun, dan Lari program ini. 14 00:00:35,870 --> 00:00:40,770 Buat scanf2 dot slash scanf2. 15 00:00:40,770 --> 00:00:45,100 Sekarang mari kita menaip rentetan seperti hello, dan kami mengucapkan terima kasih kepada hello ini. 16 00:00:45,100 --> 00:00:46,440 >> Sekarang, masih ada masalah. 17 00:00:46,440 --> 00:00:50,140 Saya hanya ditaip dalam hello, yang hanya lima watak, ditambah 1 untuk nol 18 00:00:50,140 --> 00:00:50,445 terminator. 19 00:00:50,445 --> 00:00:53,610 Ia meninggalkan kita dengan hanya keperluan untuk enam bait. 20 00:00:53,610 --> 00:00:56,740 >> Tetapi malangnya, kami hanya diperuntukkan 16 dalam jumlah. 21 00:00:56,740 --> 00:01:01,305 Jadi jika pengguna sebenarnya jenis dalam 16 aksara, atau 17, atau beberapa ratus 22 00:01:01,305 --> 00:01:04,410 aksara, kami masih tidak akan mempunyai ruang yang cukup dalam memori untuk 23 00:01:04,410 --> 00:01:05,400 input pengguna. 24 00:01:05,400 --> 00:01:07,750 Dan sebenarnya, ini adalah apa yang membuat mendapatkan input pengguna supaya 25 00:01:07,750 --> 00:01:08,940 sukar amnya. 26 00:01:08,940 --> 00:01:12,270 Dan sesungguhnya, ini adalah mengapa kami melaksanakan fungsi tali mendapatkan dalam yang pertama 27 00:01:12,270 --> 00:01:13,900 tempat di perpustakaan CS50 yang - 28 00:01:13,900 --> 00:01:16,900 memikirkan bagaimana untuk mengendalikan mereka situasi di mana jenis pengguna dalam 29 00:01:16,900 --> 00:01:19,710 lebih banyak aksara daripada kita pada mulanya dijangkakan. 30 00:01:19,710 --> 00:01:21,750 >> Terus terang, tanpa benar-benar menulis semula program ini, 31 00:01:21,750 --> 00:01:23,290 tidak ada penyelesaian bersih. 32 00:01:23,290 --> 00:01:26,970 Sebaliknya, apa yang kita perlu lakukan adalah mendapatkan watak dari seorang pengguna pada 33 00:01:26,970 --> 00:01:28,860 masa, lagi dan lagi. 34 00:01:28,860 --> 00:01:32,510 Dan pada setiap mata jika kita sedar kita daripada memori, kita perlu di 35 00:01:32,510 --> 00:01:36,450 ketika itu kembali dalam dan memperuntukkan semula memori yang lebih, menyalin pengguna ini 36 00:01:36,450 --> 00:01:39,400 input sebelumnya dari sebahagian kita yang pertama memori ke dalam baru, 37 00:01:39,400 --> 00:01:40,810 sebahagian besar memori. 38 00:01:40,810 --> 00:01:44,610 Dan kemudian mengulangi proses itu sekali lagi dan lagi sehingga pengguna dilakukan menyediakan 39 00:01:44,610 --> 00:01:45,860 input nya. 40 00:01:45,860 --> 00:01:48,246