SPEAKER 1: Vessünk egy pillantást A CS50 könyvtárban, pontosabban annak getInt funkcióját. Itt van tényleges forrása kód getInt. Vegyük észre, hogy ez nem túl hosszú, és a legtöbb képez while ciklus - végtelen hurok, amely - hogy csak a értéket ad vissza, ha mi már ütött, amit várt. Sétáljunk át rajta. Figyeljük meg, itt az első, a while ciklus kezdődik. Figyeljük meg a következő, hogy van egy sor kódot hogy valóban hív getString, és tárolja a visszatérési értéket egy változó, az úgynevezett vonal, string típusú. Mi akkor nem egy kis józanság csekket. Ha a vonal == null, akkor kíváncsian vissza INT_MAX. Most kiderül, hogy INT_MAX egy speciális állandó kijelentette máshol , amely meghatározza a lehető legnagyobb int, hogy képviseli a program, mint ez. Most már önkényesen úgy döntött, hogy visszatér INT_MAX mint őrszem értéke fajta, az egyik, hogy már foglalt, mint ami azt jelenti, hogy hiba történt. Tehát az árat fizetünk, természetesen, hogy getInt lehet nyilvánvalóan nem valóban vissza több olyan nagy, mint INT_MAX, mert még ha akar, hogy a visszatérési érték tényleg kell értelmezni a hívó fél - bárki is a getInt - mint egy hiba valamilyen. Ezután észre, hogy én már kijelentette, egy int n, és a char c. Ebben a következő kódsort, hívom a nevű függvényt sscanf, átadva négy érvet. vonal, amely a húr a felhasználó beírt "% i% c", amely egy olyan formátum karakterlánc, várom a felhasználó lehet típusát, majd a címét n, és azt a címet c. Most sscanf célja az életben valóban beolvasni egy string keresi a adott formátumban, hogy a programozó meghatározta, mint a második érv. Ebben az esetben a% i van ott, mint% c. Tehát ha sscanf találkozik int a felhasználói bemenet, hogy int lesznek tárolva belsejében a nevezett n változó, mivel már feltéve, hogy a harmadik érv, hogy sscanf címét n. Ami azt jelenti, hogy sscanf valóban menni ott, és frissíti az értéket ott. Most, ha a felhasználó beír valami több mint egy vagy több számjegy - Más szóval, egy char valamilyen - hogy a második változó c, akinek a címe már átment sscanf, mint a negyedik érv is lakott. Most a fejjel ellenőrzése egy további karaktert a felhasználó , hogy ha ő nem működik együtt, és típusok több, mint egy int, képesek leszünk felismerni, hogy ebben a módon, mert abban az esetben, sscanf megy vissza 2, jelezve, hogy mindkét helyőrző tele voltak értékekkel. De reméljük, hogy sscanf helyett értéke 1, ami azt jelenti, a felhasználó csak nyújtott int. Mit tegyünk, ha sscanf Valóban vissza 1? Nos, azonnal szabad a vonal a felhasználó beírt, aztán azonnal vissza n, miután ütött egy int. Különben, ha a sscanf nem tér vissza 1, és a a felhasználó számára, ezért nem működött együtt, még mindig szabad a vonal, de Most kéri a felhasználót, hogy újra. És mivel mi még mindig benne, hogy a egyébként végtelen ciklusba, a folyamat kezdődik újra, és talán újra, és talán megint, amíg a felhasználó ténylegesen ad nekünk egy int.