2 00:00:00,000 --> 00:00:01,860 >> Ræðumaður 1: Við skulum taka a líta á CS50 bókasafn, 3 00:00:01,860 --> 00:00:05,190 sérstaklega GetInt hlutverk hennar. 4 00:00:05,190 --> 00:00:07,820 Hér höfum við í raun uppspretta kóða fyrir GetInt. 5 00:00:07,820 --> 00:00:12,050 Og taka eftir því að það er ekki of lengi, og flest það telst meðan lykkja - 6 00:00:12,050 --> 00:00:15,620 óendanlega lykkju á það - að aðeins skilar gildi þegar við höfum í raun 7 00:00:15,620 --> 00:00:17,400 fengið það sem við ráð fyrir. 8 00:00:17,400 --> 00:00:18,700 Skulum ganga í gegnum það. 9 00:00:18,700 --> 00:00:21,650 >> Tilkynning upp hér fyrst, meðan lykkja hefst. 10 00:00:21,650 --> 00:00:25,390 Takið næst að við höfum línu af kóða að í raun kallar GetString, 11 00:00:25,390 --> 00:00:29,620 og geymir aftur gildi í breytu, sem heitir lína, af taginu String. 12 00:00:29,620 --> 00:00:31,210 Við gerum þá hluti af geðheilsu stöðva. 13 00:00:31,210 --> 00:00:35,770 Ef lína == null, þá erum við forvitinn aftur INT_MAX. 14 00:00:35,770 --> 00:00:40,140 >> Nú kemur í ljós að INT_MAX er sérstakt fasti lýst annars staðar 15 00:00:40,140 --> 00:00:44,030 sem skilgreinir stærsti kostur int sem þú getur táknað í 16 00:00:44,030 --> 00:00:45,160 program eins og this. 17 00:00:45,160 --> 00:00:49,430 Nú höfum við geðþótta ákveðið að snúa aftur INT_MAX sem Sentinel gildi 18 00:00:49,430 --> 00:00:53,120 tegundir, einn sem við höfum áskilinn sem sem þýðir villa kom upp. 19 00:00:53,120 --> 00:00:56,230 Þannig að verðið sem við greiðum að sjálfsögðu er að GetInt getur greinilega ekki 20 00:00:56,230 --> 00:01:01,440 reyndar aftur a tala eins og stór eins INT_MAX, því jafnvel ef það vill, 21 00:01:01,440 --> 00:01:04,730 sem skilagildi ætti í raun að túlka af tekur - 22 00:01:04,730 --> 00:01:06,260 hver er að nota GetInt - 23 00:01:06,260 --> 00:01:09,340 sem villa af einhverju tagi. 24 00:01:09,340 --> 00:01:13,840 >> Næst, eftir að ég hef lýst int N og A char c. 25 00:01:13,840 --> 00:01:18,030 Í þessu næstu línu af kóða, kalla ég að fall sem kallast sscanf, sem liggur í 26 00:01:18,030 --> 00:01:18,970 fjögur rök. 27 00:01:18,970 --> 00:01:25,110 lína, sem er band sem notandinn er slegið inn, "% i% c", sem er á sniði 28 00:01:25,110 --> 00:01:28,850 band sem ég er von gæti notandinn gerð, eftir tölu 29 00:01:28,850 --> 00:01:30,920 n, og heimilisfang c. 30 00:01:30,920 --> 00:01:34,860 Tilgangurinn nú sscanf í lífinu er örugglega að skanna band leita að 31 00:01:34,860 --> 00:01:38,700 einkum snið að forritarinn hefur tilgreint sem þeirri seinni argument. 32 00:01:38,700 --> 00:01:42,020 Í þessu tilviki,% i er í það, sem er% c. 33 00:01:42,020 --> 00:01:46,700 Þannig að ef sscanf kynni við int Í inntak notandinn gefur frá sér Int verða geymd 34 00:01:46,700 --> 00:01:50,270 inni á breytu sem kallast n, vegna þess að höfum við skilyrði eins og í þriðja 35 00:01:50,270 --> 00:01:52,810 rök að sscanf veffang n. 36 00:01:52,810 --> 00:01:56,870 Sem þýðir að sscanf getur örugglega farið þar, og uppfæra verðmæti þar. 37 00:01:56,870 --> 00:01:59,990 >> Nú, ef notandinn slær í eitthvað meira 38 00:01:59,990 --> 00:02:01,220 en einn eða fleiri tölustöfum - 39 00:02:01,220 --> 00:02:03,570 í öðrum orðum, bleikju af einhverju tagi - 40 00:02:03,570 --> 00:02:07,940 að second breytu c, þar sem vistfang fórum við inn sscanf sem fjórða þess 41 00:02:07,940 --> 00:02:10,560 rök Einnig verður byggð. 42 00:02:10,560 --> 00:02:14,220 Nú kosti að stöðva fyrir að viðbótar eðli frá notanda er 43 00:02:14,220 --> 00:02:17,360 að ef hann eða hún er ekki að vinna, og gerðir í meira en bara int, 44 00:02:17,360 --> 00:02:20,530 við munum vera fær um að uppgötva það í þessari hátt, vegna þess að í því tilfelli, sscanf 45 00:02:20,530 --> 00:02:24,860 er að fara að skila 2, merkja að báðir staðgengla voru fylltir 46 00:02:24,860 --> 00:02:25,600 með gildi. 47 00:02:25,600 --> 00:02:30,360 En við erum að vonast eftir að sscanf staðinn skilar 1, sem þýðir að notandinn aðeins 48 00:02:30,360 --> 00:02:31,630 enda við int. 49 00:02:31,630 --> 00:02:34,480 >> Hvað gerum við ef sscanf örugglega skilar 1? 50 00:02:34,480 --> 00:02:39,150 Jæja, losa við strax til línunnar sem notandinn slegið inn, og þá erum við 51 00:02:39,150 --> 00:02:42,670 strax aftur n, having fengið við int. 52 00:02:42,670 --> 00:02:47,180 Annars, ef sscanf ekki aftur 1, og notandinn því ekki vinna, 53 00:02:47,180 --> 00:02:51,470 við frjáls enn á línu, en við nú hvetja notandann til að reyna aftur. 54 00:02:51,470 --> 00:02:55,390 Og vegna þess að við erum enn inni að ella óendanlegur lykkja, ferlið 55 00:02:55,390 --> 00:03:00,190 mun byrja aftur, og kannski aftur, og kannski aftur, þar til notandi reyndar 56 00:03:00,190 --> 00:03:01,500 veitir okkur int. 57 00:03:01,500 --> 00:03:21,490