>> HIZLARIA 1: Ikus dezagun begirada bat CS50 liburutegian,
zehazki bere GetInt funtzioa.
Hemen benetako iturburua dugu GetInt kodea.
Eta konturatu ez dela luzeegia, eta gehienak, berriz, begizta bat osatzen -
hartan begizta infinitu bat - hori bakarrik balioa itzultzen behin benetan dugu
ahaztuak zer dugu espero.
Dezagun ibiltzeko.
>> Nabarituko hemen lehenik eta behin, begizta hasten da berriz.
Nabarituko hurrengo kode lerro bat dugula benetan deiak GetString,
eta bueltan balioa gordetzen batean aldakorreko, lerro deritzo, mota katea.
Orduan egiten dugu behatu txeke bat apur bat.
Line == null bada, orduan bitxia dugu itzultzeko INT_MAX.
>> Orain bihurtzen da INT_MAX dela bat konstante berezia nonbait deklaratu
posible handiena zehazten int batean zaudela irudikatzeko daiteke
honen antzeko programa.
Orain dugu arbitrarioki itzultzeko erabaki INT_MAX Sentinel balio gisa
ordenatzen, bat jo dugu horretan gordeak Errore bat gertatu da zentzua.
Beraz prezioa ordaindu dugu, noski, ez da GetInt ahal itxuraz ez
benetan itzultzeko kopuru bat bezain handi INT_MAX, nahi bada ere, delako,
itzulitako balioan egin beharko lukete benetan da interpretatu deitzailearen arabera -
duenarentzat da GetInt erabiliz -
Nolabaiteko errore bat.
>> Ondoren, konturatu deklaratu dut int n eta char c a.
Hurrengo kode-lerro honetan, bat deitzen dut funtzioa sscanf deitu, pasatzen
lau argumentu.
line, horrek katea da erabiltzailearen idatzi batean, "% i% c", zein formatu bat da
katea duten erabiltzaileen dezake zain nago mota, helbidea sartu eta jarraian
n, eta c-helbidea.
Orain sscanf bizitzako helburua da, hain zuzen kate bat bilatzen eskaneatu
formatu jakin programatzailea ditu bigarren argumentua duten bezala zehaztu.
Kasu honetan,% i da han,% c da gisa.
En int topaketek hala bada sscanf Erabiltzaile sarrera, int duten bilduko dituen
izeneko n aldagaia, barrutik delako hirugarrenean bezala prestatu ditugu
argumentua n helbide sscanf izateko.
Horrek esan nahi du ezin dela sscanf hain zuzen ere, joan han, eta bertan eguneratu balioa.
>> Orain, kasu horretan, erabiltzaile-mota zerbait gehiago
digituak bat edo gehiago baino -
beste era batera esanda, nolabaiteko char bat -
duten bigarren c aldakorra, zeinen helbide bere laugarren gisa pasatu sscanf sartu dugu
argudioa ere biztanle dira.
Orain bat egiaztatzeko hankaz Erabiltzaileak pertsonaia osagarria da
bada ez du berak lankidetzan aritzea, eta int bat baino gehiagotan mota,
berau atzemateko gai honetan izan dugu eran, zeren kasu horretan, sscanf
2 itzuli da, signifying duten leku-markak izan bai bete ziren
balioekin.
Baina sscanf ordez espero ari gara 1 ematen du, eta horrek erabiltzaileari bakarrik esan nahi
int bat zehaztu.
>> Zer egiten dugu bada sscanf hain zuzen ere, 1 ematen?
Beno, berehala askatzea dela lerroan duen erabiltzaileak idatzitako, eta egin dugu
berehala itzuliko n, beharrik int ahaztuak.
Bestela, sscanf ez badu itzultzeko 1, eta erabiltzaileari beraz ez kooperatu,
oraindik ere, linea libre dugu, baina ditugun orain erabiltzaileari saiatu berriro galdetuko.
Eta barruan, oraindik gaude delako begizta infinitua bestela, prozesua
berriro ere berriro hasiko da, eta, agian, eta agian berriro, erabiltzaileak benetan arte
int bat eskaintzen digu.