>> Oratè 1: Se pou yo ekri yon pwogram ki vin yon fil ki soti nan itilizatè a san yo pa
lè l sèvi avèk CS50 Bibliyotèk la a fonksyone GetString.
Pou fè sa, nou pral ale pi devan epi sèvi ak skanf, fonksyon an ki GetString la
fonksyon aktyèlman sèvi ak anba kapo a.
Men, mwen pral fè sa fè espre nan yon fason buggy.
Mwen pral fè nan yon fason ki mwen panse ke ta dwe gen dwa, men li sanble ke
sipozisyon mwen an ale nan dwe byen, byen defekte.
Apre sa, an reyalite, byen danjere.
Paske pinèz tankou sa yo mwen se sou yo fè ka eksplwate pa vle wè
sa yo ki machin ou oswa pwogram ou an pou yo ka pran plis pase potansyèlman.
>> Se pou yo kòmanse jan sa a.
Premye kite a deklare fisèl nou an, otreman li te ye kounye a kòm yon etwal Char,
epi rele li s.
Pèmèt pwochen de motive-itilizatè a pou yon fisèl, menm jan ak "fisèl tanpri." Apre sa,
kite a kounye a jwenn fisèl la soti nan itilizatè a lè l sèvi avèk skanf, quote unquote, "% s." Nan
lòt mo, se pou yo enfòme skanf ke nou an reyalite espere jwenn yon kòd
soti nan itilizatè a.
>> Men koulye a, nou bezwen di skanf yon lòt bagay -
ki kote yo mete fisèl la ki itilizatè a bay.
Oke, mwen pral byen tou senpleman kòmanse ak vigil la, ki espesifye ke mwen ta renmen
skanf yo mete fisèl la a.
Mwen kap vini an ale nan ekri ak lèt ​​detache soti yon bagay tankou printf "mèsi pou% s la
antislach n vigil. "Apre sa, tankou toujou, mwen se ale nan pase nan fisèl, s la.
Koulye a, kite a sove, konpile yo, kouri sa a pwogram, ak wè si nou pa ka pwovoke
pwoblèm nan mwen prevwa.
>> Fè skanf-1 an.
./scanf-1.
Chèn tanpri.
Se pou yo bay yon bagay tankou, "hello." "Mèsi pou nil la." O o, sa a pa
sa mwen te ap tann.
Se konsa, sa k ap pase sou isit la?
>> Oke, li vire soti paske nou te deklare s kòm yon etwal Char men nou pa t '
aktyèlman ki estoke nan yo adrès la nan yon moso aktyèl la nan memwa, skanf pa t '
gen nenpòt kote yo mete fisèl la ki itilizatè a tape pous
Vreman vre, si itilizatè a yo te kounye a tape nan yon kòd pi lontan ankò pase "hello,"
pou egzanp liy plizyè nan tèks oswa plizyè paragraf nan tèks, li trè
posib ke nou ta ka pwovoke yon sa yo rele segmentation fay.
>> Paske skanf a pa pral konnen ke Mwen pa t 'aktyèlman mete yon adrès
andedan nan s.
Olye de sa, li pral wè kèk valè nan s, gen kèk modèl nan Bits ki ka
trè byen se yon valè fatra, gen jis pa chans.
Apre sa, skanf se toujou ale pou yo eseye ekri fisèl la itilizatè nan adrès sa a,
menm si li se yon valè fatra, ki te kapab tout bon pwovoke yon aksidan.
>> Se konsa, kouman nou pral ranje sa a?