SPEAKER 1: Pojďme se podívat v knihovně CS50, konkrétně jeho vezmi_int funkce. Zde máme skutečný zdroj Kód pro vezmi_int. A všimněte si, že to není příliš dlouhá, a většina z nich představuje while - nekonečné smyčky na to - že pouze vrátí hodnotu, jakmile máme vlastně dostal to, co jsme očekávali. Pojďme si projít to. Všimněte si, až tu první, zatímco začíná smyčka. Všimněte si, že máme následující řádek kódu že vlastně volá GetString, a ukládá návratovou hodnotu v variabilní, volaná linka, typu řetězec. Pak jsme to trochu kontroly zdravý rozum. Pokud je linka == null, pak se zvědavě návrat INT_MAX. Nyní se ukazuje, že INT_MAX je speciální konstanta deklarována jinde , který určuje největší možný pravý, který může představovat v program, jako je tento. Teď jsme svévolně rozhodli k návratu INT_MAX Sentinel hodnotu druhy, ten, který jsme rezervovaný jako což znamená, došlo k chybě. Takže cena, kterou platíme, je samozřejmě že vezmi_int může zřejmě není vlastně vrací číslo tak velké, jako INT_MAX, protože i když se chce, že návratová hodnota by měla ve skutečnosti být interpretován volajícího - kdo je používá vezmi_int - jako chybu nějakého druhu. Dále si všimněte, že jsem prohlásil, int n a char c. V tomto dalším řádku kódu, říkám funkce tzv. sscanf, předáním čtyři argumenty. linka, což je řetězec uživatele zadal, "% i% c", což je formát Řetězec, který jsem očekával, může uživatel typ, následovaný adresou n, a adresa c. Nyní sscanf je smyslem života je skutečně skenování řetězec hledá zejména ve formátu, který programátor je uvedeno jako ten druhý argument. V tomto případě, i% je v tam, jak je% c. Takže pokud sscanf narazí na int vstup uživatele, bude, že int je uložen v proměnné s názvem n, protože jsme poskytli jako třetí argument sscanf adresu n.. Což znamená, že sscanf skutečně může jít tam, a aktualizujte hodnotu v něm. Nyní, v případě, že uživatel zadá v něco víc než jedné nebo více číslic - jinými slovy, char nějakého druhu - že druhá proměnná c, jehož adresa jsme prošli do sscanf jako čtvrtý Argument se také naplněna. Nyní vzhůru kontroly pro další postava z uživatele je že pokud on nebo ona nespolupracuje, a druhy ve více než jen int, budeme moci zjistit, že v tomto způsobem, protože v tomto případě, sscanf se chystá vrátit 2, znamenat, že oba zástupné symboly byly vyplněny s hodnotami. Ale my místo toho doufá, že sscanf vrátí 1, což znamená, že pouze uživatel za předpokladu, int. Co budeme dělat, když sscanf opravdu vrací 1? No, jsme okamžitě uvolnit linku, která uživatel zadal, a pak jsme okamžitě vrátit n, které mají dostal int. Jinak, pokud sscanf nevrátí 1, a Uživatel tak nespolupracoval, stále volné čáru, ale my Nyní vyzve uživatele k zadání zopakovat. A protože jsme stále uvnitř, který jinak nekonečné smyčky, proces začne znovu, a možná znovu, a možná opět, dokud uživatel skutečně poskytuje nám int.