1 00:00:00,000 --> 00:00:00,340 2 00:00:00,340 --> 00:00:01,960 >> SPEAKER 1: Nézzük most fix hogy az utolsó program. 3 00:00:01,960 --> 00:00:04,920 És most, most kifejezetten osztja néhány, amelyben a memória 4 00:00:04,920 --> 00:00:06,550 felhasználó által megadott tárolásra kerül. 5 00:00:06,550 --> 00:00:09,600 Ehhez hadd élesíteni az első kódsort, ahol kijelentette, s 6 00:00:09,600 --> 00:00:11,590 korábban, hogy egy char csillag. 7 00:00:11,590 --> 00:00:14,210 Ezúttal nézzük újra kijelentik az alábbiak szerint - 8 00:00:14,210 --> 00:00:19,380 char s konzol 16, például, záró zárójel. 9 00:00:19,380 --> 00:00:23,690 >> Más szóval, hadd kijelentem s hogy nem már nem lehet a címét egy karaktert, 10 00:00:23,690 --> 00:00:26,610 hanem egy sor 16 karakter. 11 00:00:26,610 --> 00:00:30,295 Ily módon, a felhasználó beírhatja az akár 15 karakterek és még teret 12 00:00:30,295 --> 00:00:31,570 null terminátor. 13 00:00:31,570 --> 00:00:35,870 Nézzük folytassa a Mentés Compile, és futtassa ezt a programot. 14 00:00:35,870 --> 00:00:40,770 Legyen scanf2 dot perjel scanf2. 15 00:00:40,770 --> 00:00:45,100 Nézzük most írjon be egy karaktersorozatot, mint a hello, és mi megköszönte a Hello. 16 00:00:45,100 --> 00:00:46,440 >> Nos, van még egy probléma. 17 00:00:46,440 --> 00:00:50,140 Én csak gépelt hello, amely csak öt karakter, plusz 1 a null 18 00:00:50,140 --> 00:00:50,445 terminátor. 19 00:00:50,445 --> 00:00:53,610 Ez hagy minket csak szükség a hat bájt. 20 00:00:53,610 --> 00:00:56,740 >> De sajnos, csak kiosztott 16 összesen. 21 00:00:56,740 --> 00:01:01,305 Tehát, ha a felhasználó valóban típusok 16 karaktereket, vagy a 17, vagy a több száz 22 00:01:01,305 --> 00:01:04,410 karakter, még mindig nem fog Van elég hely a memóriában a 23 00:01:04,410 --> 00:01:05,400 felhasználó bemenet. 24 00:01:05,400 --> 00:01:07,750 És valóban, ez az, ami egyre felhasználói így 25 00:01:07,750 --> 00:01:08,940 általában nehéz. 26 00:01:08,940 --> 00:01:12,270 És valóban, ez az, amiért végre A GET sztring függvény az első 27 00:01:12,270 --> 00:01:13,900 helye a CS50 könyvtárban - 28 00:01:13,900 --> 00:01:16,900 hogy kitaláljuk, hogyan kell kezelni azokat a helyzetekben, amikor a felhasználó típusok 29 00:01:16,900 --> 00:01:19,710 több karakter, mint mi azt eredetileg várták. 30 00:01:19,710 --> 00:01:21,750 >> Őszintén szólva, nem teljesen újraírása a program, 31 00:01:21,750 --> 00:01:23,290 nincs tiszta megoldás. 32 00:01:23,290 --> 00:01:26,970 Inkább, amit kellett volna tennie, hogy egy karaktert a felhasználó egy olyan 33 00:01:26,970 --> 00:01:28,860 idő, újra és újra. 34 00:01:28,860 --> 00:01:32,510 És minden ponton, ha rájövünk, mi vagyunk a memória, mi lett volna a 35 00:01:32,510 --> 00:01:36,450 Ezen a ponton vissza és újraelosztása még több memóriát, másolja a felhasználó 36 00:01:36,450 --> 00:01:39,400 előző bemenet az első darab memória az új, 37 00:01:39,400 --> 00:01:40,810 nagyobb darab memóriát. 38 00:01:40,810 --> 00:01:44,610 Majd ismételje meg a folyamatot újra és ismét, amíg a felhasználó történik nyújtó 39 00:01:44,610 --> 00:01:45,860 ő bemenet. 40 00:01:45,860 --> 00:01:48,246