2 00:00:00,000 --> 00:00:01,860 >> SPEAKER 1: Ejja tagħti ħarsa fil-librerija CS50, 3 00:00:01,860 --> 00:00:05,190 speċifikament funzjoni GetInt tagħha. 4 00:00:05,190 --> 00:00:07,820 Hawnhekk għandna l-għajn prinċipali kodiċi għall GetInt. 5 00:00:07,820 --> 00:00:12,050 U tinnota li mhuwiex twil wisq, u aktar ta 'dan jikkostitwixxi loop filwaqt li - 6 00:00:12,050 --> 00:00:15,620 loop infinita f'dak - li biss prospetti valur ladarba aħna ħadthom attwalment 7 00:00:15,620 --> 00:00:17,400 gotten dak li aħna mistennija. 8 00:00:17,400 --> 00:00:18,700 Ejja jimxu permezz tiegħu. 9 00:00:18,700 --> 00:00:21,650 >> Avviż up here ewwel, il- filwaqt li loop jibda. 10 00:00:21,650 --> 00:00:25,390 Avviż li jmiss li għandna linja tal-kodiċi li attwalment jitlob GetString, 11 00:00:25,390 --> 00:00:29,620 u taħżen l-valur tar-ritorn fil- varjabbli, imsejħa linja, ta 'spag tip. 12 00:00:29,620 --> 00:00:31,210 Aħna mbagħad jagħmlu daqsxejn ta 'verifika sanità. 13 00:00:31,210 --> 00:00:35,770 Jekk null linja ==, allura aħna curiously ritorn INT_MAX. 14 00:00:35,770 --> 00:00:40,140 >> Issa jirriżulta li INT_MAX hija kostanti speċjali ddikjarati mkien ieħor 15 00:00:40,140 --> 00:00:44,030 li jispeċifika l-akbar possibbli int li inti tista 'tirrappreżenta b'mod 16 00:00:44,030 --> 00:00:45,160 programm bħal dan. 17 00:00:45,160 --> 00:00:49,430 Issa konna arbitrarjament iddeċidiet li jirritornaw INT_MAX bħala valur sentinella tal 18 00:00:49,430 --> 00:00:53,120 xorta, waħda li konna riżervati bħala li jfisser żball kien seħħ. 19 00:00:53,120 --> 00:00:56,230 Allura l-prezz li nħallsu, naturalment, huwa li GetInt apparentement ma tistax 20 00:00:56,230 --> 00:01:01,440 attwalment ritorn numru kbir daqs INT_MAX, minħabba li, anki jekk trid, 21 00:01:01,440 --> 00:01:04,730 li l-valur tar-ritorn għandhom verament jiġi interpretat mill-sejjieħ - 22 00:01:04,730 --> 00:01:06,260 min bl-użu GetInt - 23 00:01:06,260 --> 00:01:09,340 bħala żball ta 'xi tip. 24 00:01:09,340 --> 00:01:13,840 >> Sussegwentement, avviż li stajt iddikjarat ta 'n int u char c. 25 00:01:13,840 --> 00:01:18,030 F'dan il-linja li jmiss ta 'kodiċi, I call a funzjoni msejħa sscanf, li jgħaddi fil- 26 00:01:18,030 --> 00:01:18,970 erba 'argumenti. 27 00:01:18,970 --> 00:01:25,110 linja, li hija l-sekwenza tal-utent ittajpjat fil, "% i% c", li huwa format 28 00:01:25,110 --> 00:01:28,850 string li jien jistennew l-jista utent tip, segwit mill-indirizz ta ' 29 00:01:28,850 --> 00:01:30,920 n, u l-indirizz ta 'c. 30 00:01:30,920 --> 00:01:34,860 Issa sscanf tal skop fil-ħajja huwa tabilħaqq jiġu skennjati string tfittex għall- 31 00:01:34,860 --> 00:01:38,700 format partikolari li l-programmer tkun speċifikata bħala li t-tieni argument. 32 00:01:38,700 --> 00:01:42,020 F'dan il-każ,% i huwa hemm, kif inhu% c. 33 00:01:42,020 --> 00:01:46,700 Mela jekk sscanf jiltaqa 'ma int fil- input utent, li int ser tkun maħżuna 34 00:01:46,700 --> 00:01:50,270 ġewwa tal-varjabbli imsejħa n, għaliex għandna sakemm bħala t-tielet 35 00:01:50,270 --> 00:01:52,810 argument li sscanf-indirizz ta 'n. 36 00:01:52,810 --> 00:01:56,870 Li jfisser li sscanf tista 'tabilħaqq jmorru hemm, u taġġorna l-valur fih. 37 00:01:56,870 --> 00:01:59,990 >> Issa, fil-każ it-tipi utent fil xi ħaġa aktar 38 00:01:59,990 --> 00:02:01,220 minn ċifri wieħed jew aktar - 39 00:02:01,220 --> 00:02:03,570 fi kliem ieħor, char ta 'xi tip - 40 00:02:03,570 --> 00:02:07,940 dan it-tieni c varjabbli, li l-indirizz aħna mgħoddi fis sscanf bħala r-raba tagħha 41 00:02:07,940 --> 00:02:10,560 argument se jkun popolati wkoll. 42 00:02:10,560 --> 00:02:14,220 Issa l-rasu ta 'verifika għal karattru addizzjonali mill-utent huwa 43 00:02:14,220 --> 00:02:17,360 li jekk hu jew hi ma tikkoperax, u tipi fil aktar minn sempliċi int, 44 00:02:17,360 --> 00:02:20,530 aħna ser ikunu jistgħu jiskopriha f'dan mod, għaliex f'dak il-każ, sscanf 45 00:02:20,530 --> 00:02:24,860 se jirritorna 2, li jfisser li iż-żewġ placeholders kienu mimlija 46 00:02:24,860 --> 00:02:25,600 mal-valuri. 47 00:02:25,600 --> 00:02:30,360 Iżda aħna qed jittamaw li sscanf minflok prospetti 1, li tfisser l-utent biss 48 00:02:30,360 --> 00:02:31,630 pprovdiet int. 49 00:02:31,630 --> 00:02:34,480 >> Dak li nagħmlu jekk sscanf tabilħaqq prospetti 1? 50 00:02:34,480 --> 00:02:39,150 Well, aħna immedjatament ħielsa l-linja li l-utent ttajpjata, u allura aħna 51 00:02:39,150 --> 00:02:42,670 immedjatament jirritorna n, li gotten int. 52 00:02:42,670 --> 00:02:47,180 Else, jekk sscanf ma ritorn 1, u l-utent għalhekk ma kkooperax, 53 00:02:47,180 --> 00:02:51,470 aħna xorta ħielsa l-linja, iżda aħna issa fil-pront lill-utent biex retry. 54 00:02:51,470 --> 00:02:55,390 U għaliex aħna qed għadhom ġewwa ta 'dan loop inkella infinita, il-proċess 55 00:02:55,390 --> 00:03:00,190 se jerġa 'jibda, u forsi mill-ġdid, u forsi mill-ġdid, sakemm l-utent fil-fatt 56 00:03:00,190 --> 00:03:01,500 jipprovdi us int. 57 00:03:01,500 --> 00:03:21,490