[Powered by Google Translate] [CS50 Library]
[Nate Hardison] [Harvard University]
[Hoc est CS50. CS50.TV]
In CS50 bibliotheca proficuus tool ut nos have installed in MACHINAMENTUM
ut sit facilius pro vobis scribere progressio ut promptus users pro input.
Hoc video, et videte quidnam tentorium puteus recesserunt CS50 in bibliotheca.
>> In video in C libraries, loquuntur de quomodo vos # includunt caput capitis files
de library in vestri source scripta,
tunc vos connectunt cum binariae library file durante retorquentis Phase
de scribendarum processus.
Caput capitis files specificare interface de library.
Hoc est, quod auctor felis sit amet mauris omnia ad usum,
pari munere declarationibus, constantes, quod notitia typus.
Fasciculi elit auctor binariae exsecutionem,
quod compilavit de bibliotheca est scriptor caput capitis lima bibliotheca est. c source codice lima.
>> Binariae library file non est valde interesting aspicere utpote suus ', bene, in binariae.
Itaque in lectus auctor vitae Vestibulum sed ante inspice.
In hoc casu, ibi 'unus caput capitis file vocavit cs50.h.
Weve 'installed is in user includunt presul
cum ceteris system libraries 'caput capitis lima.
>> Unus ex primis rerum animaduertes est quod cs50.h # includit caput capitis files ab aliis libraries -
supernatet, limites, vexillum bool, et vexillum lib.
Item reinventing, ne rotae sequentes,
weve aedificavit CS0 library usura tools ut aliis dummodo pro nobis.
>> Sequitur tibi iam novum genus dicimus in bibliotheca dicitur quod "funem".
Haec linea vere iustus creat alias pro chari * typus,
ita non pulsantes imbuere novum chorda type cum attributa
communiter associatur chorda objecta in aliis linguis
talis ut longitudine.
Et ratio feci hoc est ad protegamur novum programmers a cruentam details
de indicibusque donec haerent paratum.
>> Vestibulum altera pars declarandum fasciculus officia
quod CS50 library providet una cum documentis.
Animadverto campester of detail in ineo hic.
Magna superstitio uti notum est quod huiusmodi.
Annuntiamus, in vicem gerentem suggerere user et reditus chars, duplis supernatat, ints,
diu suspiratur, et chordarum, nostris utentibus chorda typus.
Sequens principium of notitia latibula,
posuimus nostra definitio in separato. c exsequendam file - cs50.c--
sitam in user source presul.
Assumamus ut diximus lima dum respiceret,
discere, et in diversis instrumentis recompile si placet
in meliorem facere licet adipiscing elit INSTRUMENTUM pro genere.
Usquam, lets 'inspice quam.
>> Functiones GetChar, GetDouble, GetFloat, GetInt, et GetLongLong
in summo sunt aedificia GetString officium.
Quod fit per omnes sequuntur ordine.
Utuntur dum loop suggerere user pro una linea input.
Redeunt specialis valorem, si user inputs inani linea.
Conantur parse user scriptor input sicut congrua typus,
esse eam chari, duplici, a supernatet, etc
Et tunc aut redire eventu si input prospere parsed
aut illi reprompt user.
>> Ad altiorem gradum, nihil est realiter captiosius hic.
Vos vires scripsi similiter exstructa codice teipsum in praeteritum.
Fortasse ultimam crypticus bellus partem est sscanf vocatione parses user scriptor input.
Sscanf est pars input format conversionem familia.
Vivit in vexillum io.h, et ejus officium est ad parse C nervo,
secundum consuetudines alicuius format, thesaurizantes in parse praecessi in variabilis
provisum est a SALUTATOR.
Cum input format conversionem sunt functiones valde utilis et late functiones
qui non sunt superessentialem intuitiva primo,
puteus 'perambulare quomodo sscanf officina.
>> Primum argumentum ad sscanf est chari * - a monstratorem characterem.
Munus recte facere,
Prima ratio talis sit ut C chorda
terminata est de null \ 0, character.
Hoc est nervi ad parse
Secunda ratio ad sscanf est format nervo,
typice Transierunt quasi chorda constans,
et vos Videreque chorda et ante ut usura printf.
A percent signum in format chorda indicat conversionem specie.
Characterem immediate sequens a percent signum,
indicat C type volumus sscanf convertere se ad.
In GetInt, vos animadverto ut illic est a% d et% c.
Is opes ut sscanf probabo ad decimales int - id% d - et chari - in% c.
Pro singulis conversionem species in format nervo,
sscanf expectat, correspondens argumentum postea suo argumentum list.
Illud argumentum demonstrandum erit ad appropriate typed location
quo congregem fructus conversionis.
>> Typicam via hoc faciendi est creare variabilis in ACERVUS ante sscanf vocationem
Quisque eu velit ut nervo pulsante parse
et tunc uti oratio operator - in ampersand - transire indicibusque
ad ea variabiles ad sscanf invoca.
Vos can animadverto ut in GetInt faciemus exacte hoc.
Rectum coram sscanf invocabis, nos indicere; int vocavit n et chari vocatio c in ACERVUS,
et nos transire indicibusque ad illos in sscanf invoca.
Ponatur haec variabiles in ACERVUS praelata est super usura spatium partita
super acervum cum malloc, quoniam tu vitare supra caput de malloc invocabis,
perstillantia cura et memoria non sunt.
Characters non præfinito per percent signum non suggererent conversionis.
Ipsi potius iustus adaugeo ad format specificationem.
>> Nam si esset forma GetInt% d chordam sed
sscanf aspicere vellet littera enim a sequitur int,
int dum convertere conaretur, non est aliud a.
, Exceptione huic est whitespace.
Albus spatium characters in format chorda exaequet quacunque mole whitespace -
etiam nihil omnino.
Ita, ut 'quare ineo commemorat possibly ductu et / vel fluidumque whitespace.
Sic, in hoc puncto is vultus amo nostra sscanf vocatio conabitur, parse user scriptor input chorda
per reprehendo pro possibilis principes whitespace,
secuutus per a int quod convertentur et repono in int variabilis n
whitespace aliquantum deinde secutus rationem
repono in chari variabilis c.
>> Quid de reditu inponere?
Sscanf erit parse in input lineae a committitur ut perficiam
si stetissent in finem moribus aut input
cum forma paria non moribus conversio non potest.
Eam reditum valor est adsuesco assuesco eliget cum intercluditur.
Si obstruatur, quia pervenit ad finem input chorda
ante condita ullus conversionibus et ante deficiente ut compositus partem format nervo,
tunc specialis constans EOF redditur.
Alioquin, redit numerum prospere conversiones,
quod esse posset 0, I, aut II, cum weve postulasti duabus conversionibus.
Nobis volumus typed fac utentis in sola int int.
>> Sic, volumus sscanf redire I. Videre quare?
Si sscanf reversus 0, tunc non conversionibus facta sunt,
ita user typed aliud quam int in principio de input.
Si sscanf redit II, tunc user fecit proprie typus is in procul principio input,
sed tunc typed in aliquo non-whitespace character postea
cum% c conversionem successit.
Wow, ut 'satis prolixam explanationem una vis meminerit,.
Usquam, si vis magis notitia in sscanf et ejus siblings,
Lorem ipsum hominem, ipsum vel est.
Sunt lots of format chorda bene,
et haec possunt salvabit vos multus of labor manualis quando trying ut parse Funiculos in C.
>> Finalis functio in bibliotheca aspicere est GetString.
Evenit quod GetString est involutam praebet functio scribere proprie,
quamvis simile videatur tali simplex, communis labor.
Quare est hoc causam?
Esto quod erant 'iens ut congregem cogitare quomodo linea, figura adipiscing elit
Cum chordae est sequenti chars,
nos vires volo ut reponunt intellegeretur compluras in ACERVUS,
Sed quam longa apparatu opus fore notum nobis.
Item volumus posuit super tumulum
malloc numerus bytes oportet transire volumus reservare
sed hoc est impossibile.
Non habemus idea quot chars user erit typus in
ante user actu dicit typus eos.
>> A SIMPLEX solutio ad problema hoc sit ut iustus reservare a magnus FRUSTUM spatii, dicunt,
obstruet of M chars pro user scriptor input,
Aliquam nec velut filo typus in longum.
Haec ratio mali dupliciter.
Primo enim, licet users typice non typus in tangite, quod diu,
possis consumere multum memoria.
In modern machinas, posset hoc esse non profluvio si hoc facis
semel in quibusdam casibus,
sed si vestri 'accipiens user scriptor input in a loop et thesaurizantes nam postea usum,
Potes cito memoria linguam lambent.
Superaddita, si progressio vestri 'scribens est ad minorem computatrum -
quandam machinam quasi Mauris quis felis vel aliud quid limitatum memoria -
haec solutio faciam problems multus ocius.
Secundum quod est gravius ​​cur non proposuisti nuda relinquit
ad quid vocatur quiddam redundabunt impetum.
In programming, a quiddam memoria est solebat temporarie reponunt input vel output notitia,
quae hoc in casu est noster M-chari stipitem faciunt.
A quiddam redundabunt accidit, cum notitia scriptum est praeteritum finem stipitem faciunt.
>> Puta, si a user actu facit typus in plus quam M chars.
Tibi poterat, experti per accidens per programming cum vestit.
X impositam nubem ints si, dum tu legens, aut scribens, nihil prohibet
15 ta int.
Non sunt compilator monitis aut errores.
Progressio iustus improuida recta videant et aditus memoria
ubi cogitat 15 ta int erit, et hoc potest overwrite tuum alterum variabilium.
Ad deterrima casu, vos can overwrite quidam vestrum progressio internum hominis
control mechanisms, ostentantes vestri progressio ut vere exequi diversis instructions
quam tu intentum.
>> Est autem hoc commune non est accidens,
sed hoc est a iuste communis ars quod mala guys uti ad frangendum progressio
et posuit malitiosi codice super alius populus 'computers.
Ergo utimur sicut surdus non fiant.
Nos postulo a via ut prohibet progressio ab esse vulnerable
ad quiddam redundabunt impetum.
Facere quiddam, quod efficere potest augeri oportet, ut dicitur
plus input a user.
Solutio? Utimur acervum RELATUM quiddam.
Cum nos possimus resize illam per resize in realloc functio,
et nos servo semita of duo numeri - index postero inanis socors in quiddam
et longitudo aut capacitas quiddam.
Legimus in chars a user tempore non usura fgetc muneris.
Argumenti fgetc functio sumit - stdin - respicitur ad vexillum input nervo,
quae est preconnected input alveo quod est adsuesco assuesco transferre user scriptor input
a terminalis ad progressio.
>> Quoties user species in nouum sibi ingenium, nos reprehendo videret si index
ad proximi liberum socors plus I est maior capacitas quiddam.
In I venit in quia si insequentes liberum index est V,
ergo illud nobis quiddam est scriptor longitudine oportet esse VI gratias ad 0 Indexing.
Si weve 'currere ex spatium in quiddam, tunc nos temptauerit resize eam,
ut nos geminata deciderit ad nos pluries resize
si user est typing in a vere diu nervo.
Si chorda evasisse nimis longum uel si currimus ex acervum memoria,
nos liberaret quiddam et reditus nulla.
>> Postremum, additis chari ad quiddam.
Quondam user hits intrare vel revertetur, significantes novum linea,
aut peculiaris chari - control d - quae doceat finem input,
faciemus impeditivae ut videret si user actu typed in quidquam aliud.
Sin autem redierimus nulla.
Alioquin, quia nostra quiddam est forsit maior quam egemus,
in maximis fere duplo opus est casu
cum nos duplicabunt quoties resize,
nos facere novum exemplar chorda usura iustus amount of tractus ut nos postulo.
Addimus an susicivus I ad malloc invocabis,
sic ut illic 'spatium pro speciali null Termino constan - o \ 0,
quae nos appendamus chorda legimus olim effingo in reliquis characteribus,
usura strncpy pro strcpy
ita quod nobis potest specificare exacte quot chars volumus ad imitandum.
Strcpy transcribit donee misellam \ 0.
Deinde nos liberaret quiddam et revertar rescriptum ad SALUTATOR.
>> Qui cognovit tali simplices apparens functio potest ita complicated?
CS50 quod intrat in bibliotheca habes.
>> Est nomen meum Nate Hardison, et hoc est CS50.
[CS50.TV]