1 00:00:00,000 --> 00:00:00,340 2 00:00:00,340 --> 00:00:01,960 >> SPEAKER 1: Let 's tagad noteikt ka pagājušajā programmu. 3 00:00:01,960 --> 00:00:04,920 Un šoreiz, pieņemsim skaidri sadalīt daži atmiņu, kurā 4 00:00:04,920 --> 00:00:06,550 lietotāja ievadi tiks saglabāti. 5 00:00:06,550 --> 00:00:09,600 Lai to izdarītu, pieņemsim asināt, kas par šo pirmo līnijas kodu, kur mēs deklarētā s 6 00:00:09,600 --> 00:00:11,590 iepriekš būtu char zvaigzne. 7 00:00:11,590 --> 00:00:14,210 Šoreiz pieņemsim atkārtoti deklarēt tā kā šādi - 8 00:00:14,210 --> 00:00:19,380 char s bracket 16, piemēram, close kronšteins. 9 00:00:19,380 --> 00:00:23,690 >> Citiem vārdiem sakot, pieņemsim deklarēt s ne vairs nebūs adrese raksturs, 10 00:00:23,690 --> 00:00:26,610 bet masīvs 16 rakstzīmes. 11 00:00:26,610 --> 00:00:30,295 Tādā veidā, lietotājs var ierakstīt līdz 15 rakstzīmes un vēl jāatstāj 12 00:00:30,295 --> 00:00:31,570 null terminatoru. 13 00:00:31,570 --> 00:00:35,870 Let 's pāriet uz Saglabāt, apkopot, un palaist šo programmu. 14 00:00:35,870 --> 00:00:40,770 Padarīt scanf2 dot slash scanf2. 15 00:00:40,770 --> 00:00:45,100 Pieņemsim tagad ierakstiet virkni, piemēram, hello, un mēs esam pateicās par Hello. 16 00:00:45,100 --> 00:00:46,440 >> Tagad tur ir vēl problēma. 17 00:00:46,440 --> 00:00:50,140 Es tikai drukāti sveiki, kas ir tikai piecas rakstzīmes, plus 1 par null 18 00:00:50,140 --> 00:00:50,445 terminatoru. 19 00:00:50,445 --> 00:00:53,610 Tas atstāj mums tikai vajadzība pēc sešiem baitiem. 20 00:00:53,610 --> 00:00:56,740 >> Bet, diemžēl, mēs tikai piešķirti 16 kopā. 21 00:00:56,740 --> 00:01:01,305 Tātad, ja lietotājs faktiski veidi 16 rakstzīmes, vai 17, vai arī vairāki simti 22 00:01:01,305 --> 00:01:04,410 rakstzīmes, mēs joprojām nav gatavojas ir pietiekami daudz vietas atmiņā 23 00:01:04,410 --> 00:01:05,400 lietotāja ievadi. 24 00:01:05,400 --> 00:01:07,750 Un patiesībā, tas ir tas, kas padara saņemt lietotāja ievadi, lai 25 00:01:07,750 --> 00:01:08,940 grūti vispār. 26 00:01:08,940 --> 00:01:12,270 Un tiešām, tas ir iemesls, kāpēc mēs īstenojām get string funkcija pirmais 27 00:01:12,270 --> 00:01:13,900 vieta CS50 bibliotēkā - 28 00:01:13,900 --> 00:01:16,900 izdomāt, kā rīkoties ar tām situācijas, kad lietotājs veidiem 29 00:01:16,900 --> 00:01:19,710 vairāk rakstzīmes, nekā mēs sākotnēji gaidīts. 30 00:01:19,710 --> 00:01:21,750 >> Atklāti sakot, nav pilnībā pārrakstīšana šo programmu, 31 00:01:21,750 --> 00:01:23,290 tur nav tīrs risinājums. 32 00:01:23,290 --> 00:01:26,970 Drīzāk, kas mums būtu jādara, ir iegūt rakstzīmi no lietotāja kāds ir 33 00:01:26,970 --> 00:01:28,860 laiku, atkal un atkal. 34 00:01:28,860 --> 00:01:32,510 Un katrā brīdī, ja mēs saprotam, ka mēs esam no atmiņas, mums būtu pie 35 00:01:32,510 --> 00:01:36,450 šis punkts iet atpakaļ un pārdalīt dažas vairāk atmiņas, kopēt lietotāja 36 00:01:36,450 --> 00:01:39,400 Iepriekšējā ieeja no mūsu pirmās rieciens atmiņas stājas jaunais, 37 00:01:39,400 --> 00:01:40,810 lielāku rieciens atmiņas. 38 00:01:40,810 --> 00:01:44,610 Un pēc tam atkārtojiet šo procesu vēlreiz un atkal līdz lietotājs tiek darīts nodrošinot 39 00:01:44,610 --> 00:01:45,860 viņa ieejas. 40 00:01:45,860 --> 00:01:48,246