>> SPEAKER 1: Ejja tagħti ħarsa fil-librerija CS50,
speċifikament funzjoni GetInt tagħha.
Hawnhekk għandna l-għajn prinċipali kodiċi għall GetInt.
U tinnota li mhuwiex twil wisq, u aktar ta 'dan jikkostitwixxi loop filwaqt li -
loop infinita f'dak - li biss prospetti valur ladarba aħna ħadthom attwalment
gotten dak li aħna mistennija.
Ejja jimxu permezz tiegħu.
>> Avviż up here ewwel, il- filwaqt li loop jibda.
Avviż li jmiss li għandna linja tal-kodiċi li attwalment jitlob GetString,
u taħżen l-valur tar-ritorn fil- varjabbli, imsejħa linja, ta 'spag tip.
Aħna mbagħad jagħmlu daqsxejn ta 'verifika sanità.
Jekk null linja ==, allura aħna curiously ritorn INT_MAX.
>> Issa jirriżulta li INT_MAX hija kostanti speċjali ddikjarati mkien ieħor
li jispeċifika l-akbar possibbli int li inti tista 'tirrappreżenta b'mod
programm bħal dan.
Issa konna arbitrarjament iddeċidiet li jirritornaw INT_MAX bħala valur sentinella tal
xorta, waħda li konna riżervati bħala li jfisser żball kien seħħ.
Allura l-prezz li nħallsu, naturalment, huwa li GetInt apparentement ma tistax
attwalment ritorn numru kbir daqs INT_MAX, minħabba li, anki jekk trid,
li l-valur tar-ritorn għandhom verament jiġi interpretat mill-sejjieħ -
min bl-użu GetInt -
bħala żball ta 'xi tip.
>> Sussegwentement, avviż li stajt iddikjarat ta 'n int u char c.
F'dan il-linja li jmiss ta 'kodiċi, I call a funzjoni msejħa sscanf, li jgħaddi fil-
erba 'argumenti.
linja, li hija l-sekwenza tal-utent ittajpjat fil, "% i% c", li huwa format
string li jien jistennew l-jista utent tip, segwit mill-indirizz ta '
n, u l-indirizz ta 'c.
Issa sscanf tal skop fil-ħajja huwa tabilħaqq jiġu skennjati string tfittex għall-
format partikolari li l-programmer tkun speċifikata bħala li t-tieni argument.
F'dan il-każ,% i huwa hemm, kif inhu% c.
Mela jekk sscanf jiltaqa 'ma int fil- input utent, li int ser tkun maħżuna
ġewwa tal-varjabbli imsejħa n, għaliex għandna sakemm bħala t-tielet
argument li sscanf-indirizz ta 'n.
Li jfisser li sscanf tista 'tabilħaqq jmorru hemm, u taġġorna l-valur fih.
>> Issa, fil-każ it-tipi utent fil xi ħaġa aktar
minn ċifri wieħed jew aktar -
fi kliem ieħor, char ta 'xi tip -
dan it-tieni c varjabbli, li l-indirizz aħna mgħoddi fis sscanf bħala r-raba tagħha
argument se jkun popolati wkoll.
Issa l-rasu ta 'verifika għal karattru addizzjonali mill-utent huwa
li jekk hu jew hi ma tikkoperax, u tipi fil aktar minn sempliċi int,
aħna ser ikunu jistgħu jiskopriha f'dan mod, għaliex f'dak il-każ, sscanf
se jirritorna 2, li jfisser li iż-żewġ placeholders kienu mimlija
mal-valuri.
Iżda aħna qed jittamaw li sscanf minflok prospetti 1, li tfisser l-utent biss
pprovdiet int.
>> Dak li nagħmlu jekk sscanf tabilħaqq prospetti 1?
Well, aħna immedjatament ħielsa l-linja li l-utent ttajpjata, u allura aħna
immedjatament jirritorna n, li gotten int.
Else, jekk sscanf ma ritorn 1, u l-utent għalhekk ma kkooperax,
aħna xorta ħielsa l-linja, iżda aħna issa fil-pront lill-utent biex retry.
U għaliex aħna qed għadhom ġewwa ta 'dan loop inkella infinita, il-proċess
se jerġa 'jibda, u forsi mill-ġdid, u forsi mill-ġdid, sakemm l-utent fil-fatt
jipprovdi us int.