1 00:00:00,000 --> 00:00:00,180 2 00:00:00,180 --> 00:00:02,920 >> Gjuha 1: Le të shkruaj një program që merr një varg nga përdoruesit pa 3 00:00:02,920 --> 00:00:05,700 duke përdorur CS50 Biblioteka e funksionojnë getString. 4 00:00:05,700 --> 00:00:08,720 Për ta bërë këtë, ne do të shkojnë përpara dhe të përdorin scanf, funksioni që getString 5 00:00:08,720 --> 00:00:10,950 funksion në fakt përdor nën kapuç. 6 00:00:10,950 --> 00:00:13,780 Por unë jam duke shkuar për të bërë këtë qëllimisht në mënyrë gabime. 7 00:00:13,780 --> 00:00:17,230 Unë jam duke shkuar për të bërë në një mënyrë që unë mendoj do të ishte e drejtë, por rezulton se 8 00:00:17,230 --> 00:00:19,380 Supozimi im do të të jetë mjaft, mjaft të meta. 9 00:00:19,380 --> 00:00:20,800 Dhe në fakt, mjaft të rrezikshme. 10 00:00:20,800 --> 00:00:24,750 Për shkak të mete si ai unë jam gati për të të bëjë mund të shfrytëzohet nga kundërshtarët 11 00:00:24,750 --> 00:00:28,870 tillë që kompjuterin tuaj ose programi juaj mund të merret përsipër potencialisht. 12 00:00:28,870 --> 00:00:30,200 >> Le të fillojmë si më poshtë. 13 00:00:30,200 --> 00:00:33,540 Së pari le të deklarojë vargun tonë, i njohur ndryshe tani si një yll char, 14 00:00:33,540 --> 00:00:34,750 dhe e quajti atë s. 15 00:00:34,750 --> 00:00:39,400 Lejon të ardhshëm të shpejtë të përdoruesit për një varg, si me "string ju lutem." Dhe 16 00:00:39,400 --> 00:00:44,250 le të tani të merrni string nga përdoruesit duke përdorur scanf, quote mbyll thonjëzat, "% s." Në 17 00:00:44,250 --> 00:00:47,760 Me fjalë të tjera, le të informojë scanf se ne e në fakt presin për të marrë një varg 18 00:00:47,760 --> 00:00:48,630 nga përdoruesit. 19 00:00:48,630 --> 00:00:50,810 >> Por tani ne kemi nevojë për të të treguar scanf një gjë tjetër - 20 00:00:50,810 --> 00:00:53,350 ku për të vënë vargut që përdoruesi ofron. 21 00:00:53,350 --> 00:00:57,840 E pra, unë jam duke shkuar për të filluar mjaft thjesht me presje s, duke specifikuar që unë do të doja 22 00:00:57,840 --> 00:00:59,320 scanf për të vënë string atje. 23 00:00:59,320 --> 00:01:04,818 Unë jam i ardhshëm do të shtypura nga diçka si printf "thanks for% s 24 00:01:04,818 --> 00:01:10,670 backslash n presje. "Dhe si gjithmonë, unë jam i duke shkuar për të kaluar në string, s. 25 00:01:10,670 --> 00:01:14,920 Tani le të shpëtojë, përpilojnë, dhe të drejtuar këtë program, dhe të shohim nëse ne nuk mund të sjell 26 00:01:14,920 --> 00:01:16,590 problemi I parashikuar. 27 00:01:16,590 --> 00:01:18,650 >> Bëni scanf-1. 28 00:01:18,650 --> 00:01:20,960 ./scanf-1. 29 00:01:20,960 --> 00:01:21,830 String ju lutem. 30 00:01:21,830 --> 00:01:25,540 Le të ofrojnë diçka si, "hello." "Faleminderit per null." Hmm, kjo nuk është e 31 00:01:25,540 --> 00:01:26,750 ajo që unë prisja. 32 00:01:26,750 --> 00:01:28,240 Pra, çfarë po ndodh këtu? 33 00:01:28,240 --> 00:01:32,040 >> E pra, ajo rezulton, sepse ne deklaruar s si një yll char por ne nuk e bëri 34 00:01:32,040 --> 00:01:36,120 në të vërtetë ruhet në s adresën e një copë aktuale e kujtesës, scanf nuk e bëri 35 00:01:36,120 --> 00:01:38,940 kanë ku të vënë string se përdoruesi typed in 36 00:01:38,940 --> 00:01:42,510 Në të vërtetë, në qoftë se përdoruesi do të tani shkruani një varg shumë më e gjatë se "hello," 37 00:01:42,510 --> 00:01:46,780 për shembull disa rreshta të tekstit ose disa paragrafët e tekstit, është mjaft 38 00:01:46,780 --> 00:01:50,280 e mundur që ne të mund të shkaktoj një ashtuquajturi faji segmentimit. 39 00:01:50,280 --> 00:01:53,570 >> Sepse scanf nuk do të dinë se Unë nuk kam në të vërtetë vënë një adresë 40 00:01:53,570 --> 00:01:54,610 brenda s. 41 00:01:54,610 --> 00:01:58,000 Përkundrazi, ajo do të shohim disa vlera në s, disa model prej bit që mund të 42 00:01:58,000 --> 00:02:00,910 shumë mirë të jetë një vlerë e mbeturinave, ka vetëm rastësisht. 43 00:02:00,910 --> 00:02:04,600 Dhe scanf është ende do të përpiqen për të shkruar string përdoruesit në atë adresë, 44 00:02:04,600 --> 00:02:08,789 edhe në qoftë se ajo është një vlerë e mbeturinave, të cilat me të vërtetë mund të shkaktoj një aksident. 45 00:02:08,789 --> 00:02:10,130 >> Pra, si do të shkojmë për të rregulluar këtë? 46 00:02:10,130 --> 00:02:12,523