>> Oratè 1: Se pou nou pran yon gade nan bibliyotèk la CS50,
espesyalman fonksyon GetInt li yo.
Isit la nou gen sous aktyèl la Kòd pou GetInt.
Apre sa, remake ke li pa twò long, ak pi fò nan li konstitye yon bouk pandan y ap -
yon bouk enfini nan moman sa - ke se sèlman retounen yon valè yon fwa nou te aktyèlman
Avèk konkou sa nou espere.
Se pou nou mache atravè li.
>> Avi Moute bò isit an premye, an pandan y ap bouk la kòmanse.
Avi pwochen ke nou gen yon liy nan Kòd ki aktyèlman rele GetString,
ak magazen valè a retounen nan yon varyab, rele liy, nan kalite fisèl.
Nou Lè sa a, fè yon ti jan nan yon chèk saniti.
Si liy == nil, lè sa a nou kiryozite retounen INT_MAX.
>> Koulye a, li sanble ke INT_MAX se yon konstan espesyal te deklare yon lòt kote
ki espesifye pi gwo posib la int ke ou ka reprezante nan yon
pwogram tankou sa a.
Koulye a, nou te abitrèman deside retounen INT_MAX kòm yon valè Sentinel nan
kalite, youn ki nou te rezève kòm sa vle di yon erè te fèt.
Se konsa, pri a nou peye, nan kou, se ki GetInt kapab aparamman pa
aktyèlman retounen yon nimewo ki gwo tankou INT_MAX, paske menm si li vle,
ke valè retounen ta dwe reyèlman kapab entèprete pa moun kap rele a -
Nenpòt moun ki nan lè l sèvi avèk GetInt -
kòm yon erè nan kèk sòt.
>> Apre sa, remake ke mwen te deklare yon n Int ak yon Char c.
Nan sa a liy pwochen nan Kòd, mwen rele yon fonksyon rele sskanf, pase nan
kat agiman.
liy, ki se fisèl la itilizatè a tape nan, "% mwen% c", ki se yon fòma
fisèl ke mwen ap tann ka a itilizatè kalite, ki te swiv pa adrès ki nan
n, ak adrès la nan c.
Objektif Koulye a, sskanf nan lavi se vre optik yon fil kap chèche a
fòma patikilye ki pwogramè a te espesifye kòm ki dezyèm agiman.
Nan ka sa a,% mwen se nan la, tankou se pousantaj% c.
Se konsa, si sskanf rankont yon Int nan la D 'itilizatè a, sa a ap Int dwe estoke
andedan nan varyab la rele n, paske nou te founi kòm twazyèm lan
agiman sskanf adrès ki nan n.
Ki vle di ke sskanf ka tout bon ale la, epi mete ajou valè a ladan l '.
>> Koulye a, nan ka ki kalite itilizatè nan yon bagay ki pi
pase youn oswa plis chif -
nan lòt mo, yon karaktè nan kèk sòt -
ki dezyèm c varyab, ki gen adrès nou te pase nan sskanf kòm katriyèm li yo
ap agiman tou gen pou peple.
Koulye a, tèt la nan tcheke pou yon plis karaktè soti nan itilizatè a se
ke si li pa kowopere, ak kalite nan plis pase jis yon Int,
nou pral kapab detekte li nan sa a fason, paske se nan ka sa a, sskanf
ki pral retounen 2, siyifye ke tou de placeholders yo te plen
ak valè.
Men, nou ap espere ke sskanf olye pou retounen 1, ki vle di itilizatè a sèlman
bay yon Int.
>> Ki sa nou fè si sskanf tout bon retounen 1?
Oke, nou imedyatman gratis liy ki itilizatè a tape nan, ak Lè sa a, nou
imedyatman retounen n, li te gen vinn yon Int.
Lòt Bagay, si sskanf pa retounen 1, ak itilizatè a Se poutèt sa, pa t 'kolabore,
nou toujou gratis nan liy lan, men nou kounye a pouse itilizatè a rekoumanse.
Apre sa, paske nou ap toujou andedan nan ki otreman enfini bouk, pwosesis la
yo ap kòmanse ankò, e petèt ankò, li petèt ankò, jouk itilizatè a aktyèlman
bay nou yon Int.