>> ПРЕДСЕДНИК 1: Хајде да погледамо у ЦС50 библиотеци,
посебно његова Затамњена функција.
Овде имамо стварни извор код за Затамњена.
И приметите да то није предуго, и већина тога представља вхиле -
бесконачна петља у то - да само даје вредност једном ми заправо сам
стечен оно што смо очекивали.
Прошетајмо кроз њега.
>> Приметимо овде прво, док петља почиње.
Приметимо да имамо следећу линију кода да заправо позива ГетСтринг,
и чува повратну вредност у променљива, зове линија, типа стринг.
Затим смо урадите мало проверу исправности.
Ако линија == нулл, онда ми радознало врати ИНТ_МАКС.
>> Сада се испоставља да је ИНТ_МАКС Посебан константа проглашена другом месту
да прецизира највећи могући инт да можете представљати у
Програм овако.
Сада смо произвољно смо одлучили да се врате ИНТ_МАКС као сентинел вредност
врсте, онај који смо као задржана што значи Дошло је до грешке.
Дакле, цена коју плаћамо, наравно, није Затамњена да може очигледно не
заправо вратити број као велики као ИНТ_МАКС, јер чак и ако жели да,
да повратак вредност треба стварно тумачити од стране позиваоца -
ко је користећи Затамњена -
као грешке од неке врсте.
>> Даље, приметио да сам проглашен инт н и ц знак.
У овом наредном линију кода, зовем функција зове ссцанф, пролази у
четири аргумента.
линија, која је ниска корисник је откуцан, "% и% ц", који је формат
стринг који сам очекивао корисник може тип, затим адресу
н, а адреса ц.
Сада ссцанф је сврха у животу је заиста да скенира ниску тражите
Посебно формат који програмер је наведено као тај други аргумент.
У овом случају,% и је у постоји, као што је% ц.
Дакле, ако наиђе на ссцанф инт у улаз корисника, који ће се чувати инт
унутар променљиве зове н, јер обезбедили смо као трећи
Аргумент да ссцанф адресу н.
Што значи да ссцанф заиста може да иде тамо, и ажурирати вредност у њему.
>> Сада, у случају да корисник укуцава у нешто више
од једне или више цифара -
другим речима, цхар нека врста -
да друга променљива Ц, чија адреса смо прошли у ссцанф као њен четврти
Аргумент ће такође бити насељена.
Сада наопако провере за додатни карактер од корисника је
да ако он или она не сарађује, и врсте у више него само инт,
ћемо моћи да га открије у овом начин, јер у том случају, ссцанф
ће да се врати 2, означавајући да оба чувара места су попуњена
са вредностима.
Али, ми се надамо да ссцанф уместо враћа 1, што значи да само корисник
обезбедио инт.
>> Шта да радимо ако ссцанф заиста враћа 1?
Па, ми смо одмах ослободи линију која корисник откуцао у, а онда смо
одмах врати н, имајући стечен инт.
Иначе, ако се не врати ссцанф 1, и корисник због тога не сарађују,
ми смо и даље ослободити линију, али ми сада затражи од корисника да поново.
И зато смо још увек у себи да иначе бесконачна петља, процес
ће поново почети, а можда опет, и можда опет, све док корисник заправо
нам пружа инт.