1 00:00:00,000 --> 00:00:02,490 [Powered by Google Translate] [CS50 Library] 2 00:00:02,490 --> 00:00:04,220 [Nate Hardison] [Harvard University] 3 00:00:04,220 --> 00:00:07,260 [Hoc est CS50. CS50.TV] 4 00:00:07,260 --> 00:00:11,510 In CS50 bibliotheca proficuus tool ut nos have installed in MACHINAMENTUM 5 00:00:11,510 --> 00:00:15,870 ut sit facilius pro vobis scribere progressio ut promptus users pro input. 6 00:00:15,870 --> 00:00:21,670 Hoc video, et videte quidnam tentorium puteus recesserunt CS50 in bibliotheca. 7 00:00:21,670 --> 00:00:25,520 >> In video in C libraries, loquuntur de quomodo vos # includunt caput capitis files 8 00:00:25,520 --> 00:00:27,570 de library in vestri source scripta, 9 00:00:27,570 --> 00:00:31,150 tunc vos connectunt cum binariae library file durante retorquentis Phase 10 00:00:31,150 --> 00:00:33,140 de scribendarum processus. 11 00:00:33,140 --> 00:00:36,440 Caput capitis files specificare interface de library. 12 00:00:36,440 --> 00:00:41,280 Hoc est, quod auctor felis sit amet mauris omnia ad usum, 13 00:00:41,280 --> 00:00:45,250 pari munere declarationibus, constantes, quod notitia typus. 14 00:00:45,250 --> 00:00:48,890 Fasciculi elit auctor binariae exsecutionem, 15 00:00:48,890 --> 00:00:54,580 quod compilavit de bibliotheca est scriptor caput capitis lima bibliotheca est. c source codice lima. 16 00:00:54,580 --> 00:00:59,820 >> Binariae library file non est valde interesting aspicere utpote suus ', bene, in binariae. 17 00:00:59,820 --> 00:01:03,300 Itaque in lectus auctor vitae Vestibulum sed ante inspice. 18 00:01:03,300 --> 00:01:07,710 In hoc casu, ibi 'unus caput capitis file vocavit cs50.h. 19 00:01:07,710 --> 00:01:11,040 Weve 'installed is in user includunt presul 20 00:01:11,040 --> 00:01:15,150 cum ceteris system libraries 'caput capitis lima. 21 00:01:15,150 --> 00:01:21,530 >> Unus ex primis rerum animaduertes est quod cs50.h # includit caput capitis files ab aliis libraries - 22 00:01:21,530 --> 00:01:25,670 supernatet, limites, vexillum bool, et vexillum lib. 23 00:01:25,670 --> 00:01:28,800 Item reinventing, ne rotae sequentes, 24 00:01:28,800 --> 00:01:33,490 weve aedificavit CS0 library usura tools ut aliis dummodo pro nobis. 25 00:01:33,490 --> 00:01:38,690 >> Sequitur tibi iam novum genus dicimus in bibliotheca dicitur quod "funem". 26 00:01:38,690 --> 00:01:42,330 Haec linea vere iustus creat alias pro chari * typus, 27 00:01:42,330 --> 00:01:46,000 ita non pulsantes imbuere novum chorda type cum attributa 28 00:01:46,000 --> 00:01:49,650 communiter associatur chorda objecta in aliis linguis 29 00:01:49,650 --> 00:01:50,850 talis ut longitudine. 30 00:01:50,850 --> 00:01:55,180 Et ratio feci hoc est ad protegamur novum programmers a cruentam details 31 00:01:55,180 --> 00:01:57,580 de indicibusque donec haerent paratum. 32 00:01:57,580 --> 00:02:00,130 >> Vestibulum altera pars declarandum fasciculus officia 33 00:02:00,130 --> 00:02:04,410 quod CS50 library providet una cum documentis. 34 00:02:04,410 --> 00:02:06,940 Animadverto campester of detail in ineo hic. 35 00:02:06,940 --> 00:02:10,560 Magna superstitio uti notum est quod huiusmodi. 36 00:02:10,560 --> 00:02:19,150 Annuntiamus, in vicem gerentem suggerere user et reditus chars, duplis supernatat, ints, 37 00:02:19,150 --> 00:02:24,160 diu suspiratur, et chordarum, nostris utentibus chorda typus. 38 00:02:24,160 --> 00:02:26,260 Sequens principium of notitia latibula, 39 00:02:26,260 --> 00:02:31,640 posuimus nostra definitio in separato. c exsequendam file - cs50.c-- 40 00:02:31,640 --> 00:02:35,110 sitam in user source presul. 41 00:02:35,110 --> 00:02:38,040 Assumamus ut diximus lima dum respiceret, 42 00:02:38,040 --> 00:02:41,490 discere, et in diversis instrumentis recompile si placet 43 00:02:41,490 --> 00:02:45,510 in meliorem facere licet adipiscing elit INSTRUMENTUM pro genere. 44 00:02:45,510 --> 00:02:47,580 Usquam, lets 'inspice quam. 45 00:02:49,020 --> 00:02:54,620 >> Functiones GetChar, GetDouble, GetFloat, GetInt, et GetLongLong 46 00:02:54,620 --> 00:02:58,160 in summo sunt aedificia GetString officium. 47 00:02:58,160 --> 00:03:01,510 Quod fit per omnes sequuntur ordine. 48 00:03:01,510 --> 00:03:04,870 Utuntur dum loop suggerere user pro una linea input. 49 00:03:04,870 --> 00:03:08,430 Redeunt specialis valorem, si user inputs inani linea. 50 00:03:08,430 --> 00:03:11,750 Conantur parse user scriptor input sicut congrua typus, 51 00:03:11,750 --> 00:03:15,010 esse eam chari, duplici, a supernatet, etc 52 00:03:15,010 --> 00:03:18,710 Et tunc aut redire eventu si input prospere parsed 53 00:03:18,710 --> 00:03:21,330 aut illi reprompt user. 54 00:03:21,330 --> 00:03:24,230 >> Ad altiorem gradum, nihil est realiter captiosius hic. 55 00:03:24,230 --> 00:03:28,760 Vos vires scripsi similiter exstructa codice teipsum in praeteritum. 56 00:03:28,760 --> 00:03:34,720 Fortasse ultimam crypticus bellus partem est sscanf vocatione parses user scriptor input. 57 00:03:34,720 --> 00:03:38,160 Sscanf est pars input format conversionem familia. 58 00:03:38,160 --> 00:03:42,300 Vivit in vexillum io.h, et ejus officium est ad parse C nervo, 59 00:03:42,300 --> 00:03:46,520 secundum consuetudines alicuius format, thesaurizantes in parse praecessi in variabilis 60 00:03:46,520 --> 00:03:48,720 provisum est a SALUTATOR. 61 00:03:48,720 --> 00:03:53,570 Cum input format conversionem sunt functiones valde utilis et late functiones 62 00:03:53,570 --> 00:03:56,160 qui non sunt superessentialem intuitiva primo, 63 00:03:56,160 --> 00:03:58,300 puteus 'perambulare quomodo sscanf officina. 64 00:03:58,300 --> 00:04:03,330 >> Primum argumentum ad sscanf est chari * - a monstratorem characterem. 65 00:04:03,330 --> 00:04:05,150 Munus recte facere, 66 00:04:05,150 --> 00:04:08,340 Prima ratio talis sit ut C chorda 67 00:04:08,340 --> 00:04:12,270 terminata est de null \ 0, character. 68 00:04:12,270 --> 00:04:15,120 Hoc est nervi ad parse 69 00:04:15,120 --> 00:04:18,269 Secunda ratio ad sscanf est format nervo, 70 00:04:18,269 --> 00:04:20,839 typice Transierunt quasi chorda constans, 71 00:04:20,839 --> 00:04:24,040 et vos Videreque chorda et ante ut usura printf. 72 00:04:24,040 --> 00:04:28,650 A percent signum in format chorda indicat conversionem specie. 73 00:04:28,650 --> 00:04:30,850 Characterem immediate sequens a percent signum, 74 00:04:30,850 --> 00:04:35,430 indicat C type volumus sscanf convertere se ad. 75 00:04:35,430 --> 00:04:40,090 In GetInt, vos animadverto ut illic est a% d et% c. 76 00:04:40,090 --> 00:04:48,690 Is opes ut sscanf probabo ad decimales int - id% d - et chari - in% c. 77 00:04:48,690 --> 00:04:51,510 Pro singulis conversionem species in format nervo, 78 00:04:51,510 --> 00:04:56,620 sscanf expectat, correspondens argumentum postea suo argumentum list. 79 00:04:56,620 --> 00:05:00,850 Illud argumentum demonstrandum erit ad appropriate typed location 80 00:05:00,850 --> 00:05:04,000 quo congregem fructus conversionis. 81 00:05:04,000 --> 00:05:08,910 >> Typicam via hoc faciendi est creare variabilis in ACERVUS ante sscanf vocationem 82 00:05:08,910 --> 00:05:11,440 Quisque eu velit ut nervo pulsante parse 83 00:05:11,440 --> 00:05:15,520 et tunc uti oratio operator - in ampersand - transire indicibusque 84 00:05:15,520 --> 00:05:19,100 ad ea variabiles ad sscanf invoca. 85 00:05:19,100 --> 00:05:22,720 Vos can animadverto ut in GetInt faciemus exacte hoc. 86 00:05:22,720 --> 00:05:28,240 Rectum coram sscanf invocabis, nos indicere; int vocavit n et chari vocatio c in ACERVUS, 87 00:05:28,240 --> 00:05:32,340 et nos transire indicibusque ad illos in sscanf invoca. 88 00:05:32,340 --> 00:05:35,800 Ponatur haec variabiles in ACERVUS praelata est super usura spatium partita 89 00:05:35,800 --> 00:05:39,350 super acervum cum malloc, quoniam tu vitare supra caput de malloc invocabis, 90 00:05:39,350 --> 00:05:43,060 perstillantia cura et memoria non sunt. 91 00:05:43,060 --> 00:05:47,280 Characters non præfinito per percent signum non suggererent conversionis. 92 00:05:47,280 --> 00:05:50,380 Ipsi potius iustus adaugeo ad format specificationem. 93 00:05:50,380 --> 00:05:56,500 >> Nam si esset forma GetInt% d chordam sed 94 00:05:56,500 --> 00:05:59,800 sscanf aspicere vellet littera enim a sequitur int, 95 00:05:59,800 --> 00:06:04,360 int dum convertere conaretur, non est aliud a. 96 00:06:04,360 --> 00:06:07,440 , Exceptione huic est whitespace. 97 00:06:07,440 --> 00:06:11,030 Albus spatium characters in format chorda exaequet quacunque mole whitespace - 98 00:06:11,030 --> 00:06:12,890 etiam nihil omnino. 99 00:06:12,890 --> 00:06:18,100 Ita, ut 'quare ineo commemorat possibly ductu et / vel fluidumque whitespace. 100 00:06:18,100 --> 00:06:22,910 Sic, in hoc puncto is vultus amo nostra sscanf vocatio conabitur, parse user scriptor input chorda 101 00:06:22,910 --> 00:06:25,380 per reprehendo pro possibilis principes whitespace, 102 00:06:25,380 --> 00:06:29,300 secuutus per a int quod convertentur et repono in int variabilis n 103 00:06:29,300 --> 00:06:33,090 whitespace aliquantum deinde secutus rationem 104 00:06:33,090 --> 00:06:35,810 repono in chari variabilis c. 105 00:06:35,810 --> 00:06:37,790 >> Quid de reditu inponere? 106 00:06:37,790 --> 00:06:41,560 Sscanf erit parse in input lineae a committitur ut perficiam 107 00:06:41,560 --> 00:06:44,860 si stetissent in finem moribus aut input 108 00:06:44,860 --> 00:06:49,320 cum forma paria non moribus conversio non potest. 109 00:06:49,320 --> 00:06:52,690 Eam reditum valor est adsuesco assuesco eliget cum intercluditur. 110 00:06:52,690 --> 00:06:55,670 Si obstruatur, quia pervenit ad finem input chorda 111 00:06:55,670 --> 00:07:00,630 ante condita ullus conversionibus et ante deficiente ut compositus partem format nervo, 112 00:07:00,630 --> 00:07:04,840 tunc specialis constans EOF redditur. 113 00:07:04,840 --> 00:07:08,200 Alioquin, redit numerum prospere conversiones, 114 00:07:08,200 --> 00:07:14,380 quod esse posset 0, I, aut II, cum weve postulasti duabus conversionibus. 115 00:07:14,380 --> 00:07:19,000 Nobis volumus typed fac utentis in sola int int. 116 00:07:19,000 --> 00:07:23,370 >> Sic, volumus sscanf redire I. Videre quare? 117 00:07:23,370 --> 00:07:26,850 Si sscanf reversus 0, tunc non conversionibus facta sunt, 118 00:07:26,850 --> 00:07:31,690 ita user typed aliud quam int in principio de input. 119 00:07:31,690 --> 00:07:37,100 Si sscanf redit II, tunc user fecit proprie typus is in procul principio input, 120 00:07:37,100 --> 00:07:41,390 sed tunc typed in aliquo non-whitespace character postea 121 00:07:41,390 --> 00:07:44,940 cum% c conversionem successit. 122 00:07:44,940 --> 00:07:49,570 Wow, ut 'satis prolixam explanationem una vis meminerit,. 123 00:07:49,570 --> 00:07:53,460 Usquam, si vis magis notitia in sscanf et ejus siblings, 124 00:07:53,460 --> 00:07:57,130 Lorem ipsum hominem, ipsum vel est. 125 00:07:57,130 --> 00:07:58,780 Sunt lots of format chorda bene, 126 00:07:58,780 --> 00:08:03,830 et haec possunt salvabit vos multus of labor manualis quando trying ut parse Funiculos in C. 127 00:08:03,830 --> 00:08:07,180 >> Finalis functio in bibliotheca aspicere est GetString. 128 00:08:07,180 --> 00:08:10,310 Evenit quod GetString est involutam praebet functio scribere proprie, 129 00:08:10,310 --> 00:08:14,290 quamvis simile videatur tali simplex, communis labor. 130 00:08:14,290 --> 00:08:16,170 Quare est hoc causam? 131 00:08:16,170 --> 00:08:21,380 Esto quod erant 'iens ut congregem cogitare quomodo linea, figura adipiscing elit 132 00:08:21,380 --> 00:08:23,880 Cum chordae est sequenti chars, 133 00:08:23,880 --> 00:08:26,430 nos vires volo ut reponunt intellegeretur compluras in ACERVUS, 134 00:08:26,430 --> 00:08:31,250 Sed quam longa apparatu opus fore notum nobis. 135 00:08:31,250 --> 00:08:34,030 Item volumus posuit super tumulum 136 00:08:34,030 --> 00:08:38,090 malloc numerus bytes oportet transire volumus reservare 137 00:08:38,090 --> 00:08:39,730 sed hoc est impossibile. 138 00:08:39,730 --> 00:08:42,760 Non habemus idea quot chars user erit typus in 139 00:08:42,760 --> 00:08:46,590 ante user actu dicit typus eos. 140 00:08:46,590 --> 00:08:50,720 >> A SIMPLEX solutio ad problema hoc sit ut iustus reservare a magnus FRUSTUM spatii, dicunt, 141 00:08:50,720 --> 00:08:54,540 obstruet of M chars pro user scriptor input, 142 00:08:54,540 --> 00:08:57,980 Aliquam nec velut filo typus in longum. 143 00:08:57,980 --> 00:09:00,810 Haec ratio mali dupliciter. 144 00:09:00,810 --> 00:09:05,280 Primo enim, licet users typice non typus in tangite, quod diu, 145 00:09:05,280 --> 00:09:07,610 possis consumere multum memoria. 146 00:09:07,610 --> 00:09:10,530 In modern machinas, posset hoc esse non profluvio si hoc facis 147 00:09:10,530 --> 00:09:13,890 semel in quibusdam casibus, 148 00:09:13,890 --> 00:09:17,630 sed si vestri 'accipiens user scriptor input in a loop et thesaurizantes nam postea usum, 149 00:09:17,630 --> 00:09:20,870 Potes cito memoria linguam lambent. 150 00:09:20,870 --> 00:09:24,450 Superaddita, si progressio vestri 'scribens est ad minorem computatrum - 151 00:09:24,450 --> 00:09:28,100 quandam machinam quasi Mauris quis felis vel aliud quid limitatum memoria - 152 00:09:28,100 --> 00:09:32,060 haec solutio faciam problems multus ocius. 153 00:09:32,060 --> 00:09:36,450 Secundum quod est gravius ​​cur non proposuisti nuda relinquit 154 00:09:36,450 --> 00:09:39,710 ad quid vocatur quiddam redundabunt impetum. 155 00:09:39,710 --> 00:09:45,840 In programming, a quiddam memoria est solebat temporarie reponunt input vel output notitia, 156 00:09:45,840 --> 00:09:48,980 quae hoc in casu est noster M-chari stipitem faciunt. 157 00:09:48,980 --> 00:09:53,370 A quiddam redundabunt accidit, cum notitia scriptum est praeteritum finem stipitem faciunt. 158 00:09:53,370 --> 00:09:57,790 >> Puta, si a user actu facit typus in plus quam M chars. 159 00:09:57,790 --> 00:10:01,570 Tibi poterat, experti per accidens per programming cum vestit. 160 00:10:01,570 --> 00:10:05,620 X impositam nubem ints si, dum tu legens, aut scribens, nihil prohibet 161 00:10:05,620 --> 00:10:07,810 15 ta int. 162 00:10:07,810 --> 00:10:10,000 Non sunt compilator monitis aut errores. 163 00:10:10,000 --> 00:10:13,250 Progressio iustus improuida recta videant et aditus memoria 164 00:10:13,250 --> 00:10:18,150 ubi cogitat 15 ta int erit, et hoc potest overwrite tuum alterum variabilium. 165 00:10:18,150 --> 00:10:22,040 Ad deterrima casu, vos can overwrite quidam vestrum progressio internum hominis 166 00:10:22,040 --> 00:10:26,820 control mechanisms, ostentantes vestri progressio ut vere exequi diversis instructions 167 00:10:26,820 --> 00:10:28,340 quam tu intentum. 168 00:10:28,340 --> 00:10:31,360 >> Est autem hoc commune non est accidens, 169 00:10:31,360 --> 00:10:35,150 sed hoc est a iuste communis ars quod mala guys uti ad frangendum progressio 170 00:10:35,150 --> 00:10:39,080 et posuit malitiosi codice super alius populus 'computers. 171 00:10:39,080 --> 00:10:42,910 Ergo utimur sicut surdus non fiant. 172 00:10:42,910 --> 00:10:45,590 Nos postulo a via ut prohibet progressio ab esse vulnerable 173 00:10:45,590 --> 00:10:47,880 ad quiddam redundabunt impetum. 174 00:10:47,880 --> 00:10:51,430 Facere quiddam, quod efficere potest augeri oportet, ut dicitur 175 00:10:51,430 --> 00:10:53,850 plus input a user. 176 00:10:53,850 --> 00:10:57,440 Solutio? Utimur acervum RELATUM quiddam. 177 00:10:57,440 --> 00:10:59,950 Cum nos possimus resize illam per resize in realloc functio, 178 00:10:59,950 --> 00:11:04,580 et nos servo semita of duo numeri - index postero inanis socors in quiddam 179 00:11:04,580 --> 00:11:08,390 et longitudo aut capacitas quiddam. 180 00:11:08,390 --> 00:11:13,210 Legimus in chars a user tempore non usura fgetc muneris. 181 00:11:13,210 --> 00:11:19,360 Argumenti fgetc functio sumit - stdin - respicitur ad vexillum input nervo, 182 00:11:19,360 --> 00:11:23,810 quae est preconnected input alveo quod est adsuesco assuesco transferre user scriptor input 183 00:11:23,810 --> 00:11:26,270 a terminalis ad progressio. 184 00:11:26,270 --> 00:11:29,890 >> Quoties user species in nouum sibi ingenium, nos reprehendo videret si index 185 00:11:29,890 --> 00:11:35,810 ad proximi liberum socors plus I est maior capacitas quiddam. 186 00:11:35,810 --> 00:11:39,690 In I venit in quia si insequentes liberum index est V, 187 00:11:39,690 --> 00:11:44,150 ergo illud nobis quiddam est scriptor longitudine oportet esse VI gratias ad 0 Indexing. 188 00:11:44,150 --> 00:11:48,350 Si weve 'currere ex spatium in quiddam, tunc nos temptauerit resize eam, 189 00:11:48,350 --> 00:11:51,690 ut nos geminata deciderit ad nos pluries resize 190 00:11:51,690 --> 00:11:54,760 si user est typing in a vere diu nervo. 191 00:11:54,760 --> 00:11:57,950 Si chorda evasisse nimis longum uel si currimus ex acervum memoria, 192 00:11:57,950 --> 00:12:01,350 nos liberaret quiddam et reditus nulla. 193 00:12:01,350 --> 00:12:04,170 >> Postremum, additis chari ad quiddam. 194 00:12:04,170 --> 00:12:08,200 Quondam user hits intrare vel revertetur, significantes novum linea, 195 00:12:08,200 --> 00:12:12,050 aut peculiaris chari - control d - quae doceat finem input, 196 00:12:12,050 --> 00:12:16,240 faciemus impeditivae ut videret si user actu typed in quidquam aliud. 197 00:12:16,240 --> 00:12:18,820 Sin autem redierimus nulla. 198 00:12:18,820 --> 00:12:22,280 Alioquin, quia nostra quiddam est forsit maior quam egemus, 199 00:12:22,280 --> 00:12:24,830 in maximis fere duplo opus est casu 200 00:12:24,830 --> 00:12:27,830 cum nos duplicabunt quoties resize, 201 00:12:27,830 --> 00:12:31,840 nos facere novum exemplar chorda usura iustus amount of tractus ut nos postulo. 202 00:12:31,840 --> 00:12:34,220 Addimus an susicivus I ad malloc invocabis, 203 00:12:34,220 --> 00:12:37,810 sic ut illic 'spatium pro speciali null Termino constan - o \ 0, 204 00:12:37,810 --> 00:12:41,990 quae nos appendamus chorda legimus olim effingo in reliquis characteribus, 205 00:12:41,990 --> 00:12:45,060 usura strncpy pro strcpy 206 00:12:45,060 --> 00:12:48,830 ita quod nobis potest specificare exacte quot chars volumus ad imitandum. 207 00:12:48,830 --> 00:12:51,690 Strcpy transcribit donee misellam \ 0. 208 00:12:51,690 --> 00:12:55,740 Deinde nos liberaret quiddam et revertar rescriptum ad SALUTATOR. 209 00:12:55,740 --> 00:12:59,840 >> Qui cognovit tali simplices apparens functio potest ita complicated? 210 00:12:59,840 --> 00:13:02,820 CS50 quod intrat in bibliotheca habes. 211 00:13:02,820 --> 00:13:06,470 >> Est nomen meum Nate Hardison, et hoc est CS50. 212 00:13:06,470 --> 00:13:08,350 [CS50.TV]