Ræðumaður 1: Við skulum skrifa forrit sem fær streng frá notanda án nota CS50 safnsins virka GetString. Til að gera þetta, munum við fara á undan og nota scanf, sem virka sem GetString virka í raun notar undir hetta. En ég ætla að gera þetta vísvitandi í buggy hátt. Ég ætla að gera á þann hátt að ég held væri rétt, en það kemur í ljós að forsenda mín er að fara að vera alveg, alveg gölluð. Og í raun, mjög hættulegt. Vegna galla eins og það sem ég ætla að fara að gera má nýta með andstæðinga þannig að vélin þín eða forrit má taka yfir hugsanlega. Skulum byrja sem hér segir. Fyrst skulum lýsa band okkar, annars þekkt nú sem bleikju stjarna, og kalla það er. Lets næst hvetja notandann á streng, Eins og með "band takk." Og við skulum nú fá band frá notanda nota scanf, vitna unquote, "% s." Í Með öðrum orðum, við skulum láta scanf að við ekki í raun búist við að fá a band frá notandanum. En nú þurfum við að segja scanf einn annar hlutur - hvar á að setja streng notandinn gefur. Jæja, ég ætla að einfaldlega að byrja með kommu s, tilgreina sem mig langar scanf að setja band þar. Ég ætla næst að fara að prenta út eitthvað eins printf "takk fyrir% s sviga n kommu. "Og eins og alltaf, ég er að fara að fara í band, s. Nú skulum spara, safna saman og keyra þetta program, og sjá hvort við getum ekki valdið Vandamálið sem ég spáði. Gerðu Scanf-1. ./scanf-1. Band takk. Skulum veita eitthvað eins og: "Halló." "Takk fyrir null." Hmm, það er ekki það sem ég átti von á. Svo hvað er að gerast hér? Jæja, það kemur í ljós vegna þess að við lýst s sem bleikju stjarna en við gerðum ekki í raun geymdar í s veffang Raunveruleg klumpur af minni, scanf gerði ekki hafa einhvers staðar að setja band að notandinn slegið inn Reyndar, ef notandi var að nú gerð í mun lengri streng en "halló," til dæmis nokkrar línur af texta eða nokkrir málsgreinar í texta, það er alveg mögulegt að við gætum vekja svokallaða skiptingu kenna. Vegna scanf er ekki að fara að vita að Ég hef reyndar ekki sett inn heimilisfang inni s. Frekar, það er að fara að sjá nokkrar gildi í s, sumir mynstri bitar sem geta mjög vel að vera sorp gildi, það bara við tækifæri. Og scanf er enn að fara að reyna að skrifa notandi band á þetta netfang, jafnvel ef það er sorp gildi, sem gæti örugglega valdið hrun. Svo hvernig eigum við að fara að laga þetta?