SPEAKER 1: Let 's tagad noteikt ka pagājušajā programmu. Un šoreiz, pieņemsim skaidri sadalīt daži atmiņu, kurā lietotāja ievadi tiks saglabāti. Lai to izdarītu, pieņemsim asināt, kas par šo pirmo līnijas kodu, kur mēs deklarētā s iepriekš būtu char zvaigzne. Šoreiz pieņemsim atkārtoti deklarēt tā kā šādi - char s bracket 16, piemēram, close kronšteins. Citiem vārdiem sakot, pieņemsim deklarēt s ne vairs nebūs adrese raksturs, bet masīvs 16 rakstzīmes. Tādā veidā, lietotājs var ierakstīt līdz 15 rakstzīmes un vēl jāatstāj null terminatoru. Let 's pāriet uz Saglabāt, apkopot, un palaist šo programmu. Padarīt scanf2 dot slash scanf2. Pieņemsim tagad ierakstiet virkni, piemēram, hello, un mēs esam pateicās par Hello. Tagad tur ir vēl problēma. Es tikai drukāti sveiki, kas ir tikai piecas rakstzīmes, plus 1 par null terminatoru. Tas atstāj mums tikai vajadzība pēc sešiem baitiem. Bet, diemžēl, mēs tikai piešķirti 16 kopā. Tātad, ja lietotājs faktiski veidi 16 rakstzīmes, vai 17, vai arī vairāki simti rakstzīmes, mēs joprojām nav gatavojas ir pietiekami daudz vietas atmiņā lietotāja ievadi. Un patiesībā, tas ir tas, kas padara saņemt lietotāja ievadi, lai grūti vispār. Un tiešām, tas ir iemesls, kāpēc mēs īstenojām get string funkcija pirmais vieta CS50 bibliotēkā - izdomāt, kā rīkoties ar tām situācijas, kad lietotājs veidiem vairāk rakstzīmes, nekā mēs sākotnēji gaidīts. Atklāti sakot, nav pilnībā pārrakstīšana šo programmu, tur nav tīrs risinājums. Drīzāk, kas mums būtu jādara, ir iegūt rakstzīmi no lietotāja kāds ir laiku, atkal un atkal. Un katrā brīdī, ja mēs saprotam, ka mēs esam no atmiņas, mums būtu pie šis punkts iet atpakaļ un pārdalīt dažas vairāk atmiņas, kopēt lietotāja Iepriekšējā ieeja no mūsu pirmās rieciens atmiņas stājas jaunais, lielāku rieciens atmiņas. Un pēc tam atkārtojiet šo procesu vēlreiz un atkal līdz lietotājs tiek darīts nodrošinot viņa ieejas.