1 00:00:00,000 --> 00:00:00,340 2 00:00:00,340 --> 00:00:01,960 >> ZVUČNIK 1: Idemo sad popraviti da je prošle programa. 3 00:00:01,960 --> 00:00:04,920 I ovaj put, neka je izrijekom izdvojiti dio memorije u kojoj 4 00:00:04,920 --> 00:00:06,550 Korisnički ulaz će biti pohranjeni. 5 00:00:06,550 --> 00:00:09,600 Da biste to učinili, neka je brusiti na taj prvi linija koda gdje smo deklarirana s. 6 00:00:09,600 --> 00:00:11,590 prethodno biti char zvijezda. 7 00:00:11,590 --> 00:00:14,210 Ovaj put, idemo ponovno Objavite je na sljedeći način - 8 00:00:14,210 --> 00:00:19,380 char je nosač 16, na primjer, blizu nosač. 9 00:00:19,380 --> 00:00:23,690 >> Drugim riječima, neka se proglasi e kojima nema više biti adresu lika, 10 00:00:23,690 --> 00:00:26,610 nego niz od 16 znakova. 11 00:00:26,610 --> 00:00:30,295 Na taj način, korisnik može upisati do 15 likovi i još uvijek ostavlja prostora za 12 00:00:30,295 --> 00:00:31,570 null terminator. 13 00:00:31,570 --> 00:00:35,870 Idemo nastaviti štedjeti, Sastaviti, i pokrenuti ovaj program. 14 00:00:35,870 --> 00:00:40,770 Provjerite scanf2 dot kose crte scanf2. 15 00:00:40,770 --> 00:00:45,100 Idemo sada upisati niz poput Pozdrav, i mi smo se zahvalio za pozdraviti. 16 00:00:45,100 --> 00:00:46,440 >> Sad, tu je još uvijek problem. 17 00:00:46,440 --> 00:00:50,140 Ja samo upisali u bok, što je samo Pet znakova, plus 1 za nultu 18 00:00:50,140 --> 00:00:50,445 terminator. 19 00:00:50,445 --> 00:00:53,610 To nam ostavlja samo Potreba za šest bajtova. 20 00:00:53,610 --> 00:00:56,740 >> No, na žalost, samo mi dodijeljeno 16 ukupno. 21 00:00:56,740 --> 00:01:01,305 Dakle, ako korisnik zapravo tipovi u 16. likovi, ili 17, ili nekoliko stotina 22 00:01:01,305 --> 00:01:04,410 likovi, mi još uvijek ne ide ima dovoljno mjesta u memoriji za 23 00:01:04,410 --> 00:01:05,400 Ulaz korisnika. 24 00:01:05,400 --> 00:01:07,750 A u stvari, to je ono što čini dobivanje korisničkog unosa, tako 25 00:01:07,750 --> 00:01:08,940 Teško je u cjelini. 26 00:01:08,940 --> 00:01:12,270 I doista, to je razlog zašto smo provoditi get niz funkcija u prva 27 00:01:12,270 --> 00:01:13,900 mjesto u CS50 knjižnici - 28 00:01:13,900 --> 00:01:16,900 shvatiti kako se nositi s onima situacije u kojima korisnik upiše u 29 00:01:16,900 --> 00:01:19,710 više znakova nego što smo prvotno predviđeno. 30 00:01:19,710 --> 00:01:21,750 >> Iskreno, ne posve prepisivanjem ovaj program, 31 00:01:21,750 --> 00:01:23,290 nema čisto rješenje. 32 00:01:23,290 --> 00:01:26,970 Umjesto toga, ono što bismo morali učiniti je dobiti lik iz jednog korisnika na 33 00:01:26,970 --> 00:01:28,860 vrijeme, opet i opet. 34 00:01:28,860 --> 00:01:32,510 I u svakom trenutku, ako smo shvatili da smo iz sjećanja, morali bismo u 35 00:01:32,510 --> 00:01:36,450 ta točka vratiti i preraspodijeliti neki više memorije, kopiranje korisnika 36 00:01:36,450 --> 00:01:39,400 natrag ulaz od našeg prvog komad memorije u novo, 37 00:01:39,400 --> 00:01:40,810 veći komad memorije. 38 00:01:40,810 --> 00:01:44,610 I onda ponoviti postupak opet i opet dok korisnik radi pružanja 39 00:01:44,610 --> 00:01:45,860 njegov ili njezin ulaz. 40 00:01:45,860 --> 00:01:48,246