2 00:00:00,000 --> 00:00:01,860 >> HIZLARIA 1: Ikus dezagun begirada bat CS50 liburutegian, 3 00:00:01,860 --> 00:00:05,190 zehazki bere GetInt funtzioa. 4 00:00:05,190 --> 00:00:07,820 Hemen benetako iturburua dugu GetInt kodea. 5 00:00:07,820 --> 00:00:12,050 Eta konturatu ez dela luzeegia, eta gehienak, berriz, begizta bat osatzen - 6 00:00:12,050 --> 00:00:15,620 hartan begizta infinitu bat - hori bakarrik balioa itzultzen behin benetan dugu 7 00:00:15,620 --> 00:00:17,400 ahaztuak zer dugu espero. 8 00:00:17,400 --> 00:00:18,700 Dezagun ibiltzeko. 9 00:00:18,700 --> 00:00:21,650 >> Nabarituko hemen lehenik eta behin, begizta hasten da berriz. 10 00:00:21,650 --> 00:00:25,390 Nabarituko hurrengo kode lerro bat dugula benetan deiak GetString, 11 00:00:25,390 --> 00:00:29,620 eta bueltan balioa gordetzen batean aldakorreko, lerro deritzo, mota katea. 12 00:00:29,620 --> 00:00:31,210 Orduan egiten dugu behatu txeke bat apur bat. 13 00:00:31,210 --> 00:00:35,770 Line == null bada, orduan bitxia dugu itzultzeko INT_MAX. 14 00:00:35,770 --> 00:00:40,140 >> Orain bihurtzen da INT_MAX dela bat konstante berezia nonbait deklaratu 15 00:00:40,140 --> 00:00:44,030 posible handiena zehazten int batean zaudela irudikatzeko daiteke 16 00:00:44,030 --> 00:00:45,160 honen antzeko programa. 17 00:00:45,160 --> 00:00:49,430 Orain dugu arbitrarioki itzultzeko erabaki INT_MAX Sentinel balio gisa 18 00:00:49,430 --> 00:00:53,120 ordenatzen, bat jo dugu horretan gordeak Errore bat gertatu da zentzua. 19 00:00:53,120 --> 00:00:56,230 Beraz prezioa ordaindu dugu, noski, ez da GetInt ahal itxuraz ez 20 00:00:56,230 --> 00:01:01,440 benetan itzultzeko kopuru bat bezain handi INT_MAX, nahi bada ere, delako, 21 00:01:01,440 --> 00:01:04,730 itzulitako balioan egin beharko lukete benetan da interpretatu deitzailearen arabera - 22 00:01:04,730 --> 00:01:06,260 duenarentzat da GetInt erabiliz - 23 00:01:06,260 --> 00:01:09,340 Nolabaiteko errore bat. 24 00:01:09,340 --> 00:01:13,840 >> Ondoren, konturatu deklaratu dut int n eta char c a. 25 00:01:13,840 --> 00:01:18,030 Hurrengo kode-lerro honetan, bat deitzen dut funtzioa sscanf deitu, pasatzen 26 00:01:18,030 --> 00:01:18,970 lau argumentu. 27 00:01:18,970 --> 00:01:25,110 line, horrek katea da erabiltzailearen idatzi batean, "% i% c", zein formatu bat da 28 00:01:25,110 --> 00:01:28,850 katea duten erabiltzaileen dezake zain nago mota, helbidea sartu eta jarraian 29 00:01:28,850 --> 00:01:30,920 n, eta c-helbidea. 30 00:01:30,920 --> 00:01:34,860 Orain sscanf bizitzako helburua da, hain zuzen kate bat bilatzen eskaneatu 31 00:01:34,860 --> 00:01:38,700 formatu jakin programatzailea ditu bigarren argumentua duten bezala zehaztu. 32 00:01:38,700 --> 00:01:42,020 Kasu honetan,% i da han,% c da gisa. 33 00:01:42,020 --> 00:01:46,700 En int topaketek hala bada sscanf Erabiltzaile sarrera, int duten bilduko dituen 34 00:01:46,700 --> 00:01:50,270 izeneko n aldagaia, barrutik delako hirugarrenean bezala prestatu ditugu 35 00:01:50,270 --> 00:01:52,810 argumentua n helbide sscanf izateko. 36 00:01:52,810 --> 00:01:56,870 Horrek esan nahi du ezin dela sscanf hain zuzen ere, joan han, eta bertan eguneratu balioa. 37 00:01:56,870 --> 00:01:59,990 >> Orain, kasu horretan, erabiltzaile-mota zerbait gehiago 38 00:01:59,990 --> 00:02:01,220 digituak bat edo gehiago baino - 39 00:02:01,220 --> 00:02:03,570 beste era batera esanda, nolabaiteko char bat - 40 00:02:03,570 --> 00:02:07,940 duten bigarren c aldakorra, zeinen helbide bere laugarren gisa pasatu sscanf sartu dugu 41 00:02:07,940 --> 00:02:10,560 argudioa ere biztanle dira. 42 00:02:10,560 --> 00:02:14,220 Orain bat egiaztatzeko hankaz Erabiltzaileak pertsonaia osagarria da 43 00:02:14,220 --> 00:02:17,360 bada ez du berak lankidetzan aritzea, eta int bat baino gehiagotan mota, 44 00:02:17,360 --> 00:02:20,530 berau atzemateko gai honetan izan dugu eran, zeren kasu horretan, sscanf 45 00:02:20,530 --> 00:02:24,860 2 itzuli da, signifying duten leku-markak izan bai bete ziren 46 00:02:24,860 --> 00:02:25,600 balioekin. 47 00:02:25,600 --> 00:02:30,360 Baina sscanf ordez espero ari gara 1 ematen du, eta horrek erabiltzaileari bakarrik esan nahi 48 00:02:30,360 --> 00:02:31,630 int bat zehaztu. 49 00:02:31,630 --> 00:02:34,480 >> Zer egiten dugu bada sscanf hain zuzen ere, 1 ematen? 50 00:02:34,480 --> 00:02:39,150 Beno, berehala askatzea dela lerroan duen erabiltzaileak idatzitako, eta egin dugu 51 00:02:39,150 --> 00:02:42,670 berehala itzuliko n, beharrik int ahaztuak. 52 00:02:42,670 --> 00:02:47,180 Bestela, sscanf ez badu itzultzeko 1, eta erabiltzaileari beraz ez kooperatu, 53 00:02:47,180 --> 00:02:51,470 oraindik ere, linea libre dugu, baina ditugun orain erabiltzaileari saiatu berriro galdetuko. 54 00:02:51,470 --> 00:02:55,390 Eta barruan, oraindik gaude delako begizta infinitua bestela, prozesua 55 00:02:55,390 --> 00:03:00,190 berriro ere berriro hasiko da, eta, agian, eta agian berriro, erabiltzaileak benetan arte 56 00:03:00,190 --> 00:03:01,500 int bat eskaintzen digu. 57 00:03:01,500 --> 00:03:21,490