Jason Hirschhorn: Sveicināti, ikviens, 6 nedēļas. Es esmu priecīgs redzēt jūs visus dzīvs un labi pēc Viktorīna 0, jo es zinu, ka bija nedaudz raupja. Bet par laimi, jūs visi bija neticami labi. Un tā tas ir brīnišķīgi. Ja tu esi manā sadaļā, es esmu devis visvairāk jums atpakaļ jūsu viktorīnas jau. Pāris no jums, es esmu tikšanās pēc klases. Un, ja jūs esat pagarinājums students un neesat saņēmis savu viktorīnas atpakaļ tomēr, jūsu TF, iespējams, pie tā strādājam un šķirošanas to, un saņemt to atpakaļ ar Jums tuvākajā laikā. Tātad mans pagarināšana studenti, kas ir skatoties tieši tagad - cerams dzīvot - Es saņems jūsu viktorīnas īsi, kā arī. Mūsu programma šodien ir šāds. Pirmkārt, mēs esam gatavojas iet pār daži resursi, kas CS50 nodrošina ar jums. Mēs ejam, lai iet pa Viktorīna 0 blakus, un Es atbildētu uz visiem jautājumiem ikvienam ir par konkrētām problēmām. Un tad mums būs iet pa file I / O un problēmu noteikts 5. Šie pēdējie divi temati notiks veido lielāko daļu no sadaļas šodien. Man šo sarakstu uz augšu katru nedēļu atgādinājums jums visiem, bet kodols sadaļā, mums ir tikai 90 minūtes - mēs nespēj aptvert visu, kas man labprāt vēlētos, lai segtu jums puiši. Bet mums ir ton resursu jums izdarīt pēc kā jūs iepazīt materiālu un darbu ar jūsu problēma komplekti. Atgādinājums, ka man ir online teksta kaste, kas izveidota, lai jūs varētu aizpildīt, ja ir kādas atsauksmes par mani, gan pozitīvas, un konstruktīva, aptuveni sadaļā. Ka URL atrodas pa labi uz leju šeit. Tātad, lūdzu, veltiet laiku, ja jums ir atgriezeniskā saite, vai sadaļā laikā vai pēc tam, vai arī pēc tam, kad jūs skatīties video tiešsaistē, lai dotu man jūsu atsauksmes. I really appreciate jebkuru un visu no tā. Tāpēc es esmu ar maziem sarunas ar daudz manu studentiem visā nedēļā - kā es ar roku atpakaļ viktorīnas, runājot par Protams, redzot, kā jūs darāt. Un viena tēma ir jānāk klajā atkal un vairāk runāt - it īpaši - problēma komplekti. Un man ir iekapsulēti šo tēmu uz kuģa tiesības tagad. Būtībā, tur ir atšķirība starp pagrieziena kaut ko, kas ir darīts pareizi un kaut tas tiek darīts labi. Lielākā daļa cilvēku ir darījuši fantastiska attiecībā uz pareizību - 5 ir vai 4 s par visiem psets. Lielākā daļa cilvēku kļūst tiem visu laiku. Tomēr, tikai tāpēc, ka jūs esat darījuši kaut tiesības nenozīmē, ka jūs esat izdarīt kaut ko tik eleganti, vai efektīvi, vai arī tīri kā tu varēja darīt to. Un tas, ko dizains - un mazākā mērā, stils - asis ir par. Tāpēc es esmu stumšanas jums visiem, un citi TFS ir stumšanas jums puiši, ne tikai savukārt lietas, kas ir pareizi, bet savukārt ar lietām, kas ir kodētas labi. Nedara nevajadzīgi cilpas, nav pārrēķinot mainīgos, ja jums nav. Piemēram, atskatoties uz problēmu, noteikt 4, kad ievietojot ķieģeļu ekrāns, katrā rindā - katrs ķieģelis ņemot rinda ir tāds pats y koordinātu - pats augstums koordinātu. Tā, ka y koordinātu nebija nepieciešams aprēķina iekšpusē iekšpusē ligzdotu FOR cilpas, ka jūs, iespējams, izmanto likt šos ķieģeļus uz ekrāna. Tai ir tikai aprēķina katru reizi, kad pārgāja rindu, vai pārcēlās uz leju rindu. Tā teikt, ja ir 10 ķieģeļi ir rinda, katrs ķieģeļu var būt tāds pats y koordinātu, un, ka y-koordinātu var vienkārši aprēķināt reizi par visām no tiem. Tas nav nepieciešams aprēķināt 10 laiku, ne tas, ka aprēķinos ir notikt faktisko funkcija zvans - Jaunā gracked funkcija zvans. Tātad, ja tas bija nedaudz mulsinoši Jūs vairāk vispārīgi, lietas, kas nav nepieciešams, lai notiktu katru reizi jums iet caur cilpa nedrīkst likt iekšā cilpa, un nedrīkst notiks katru reizi, kad iet caur cilpa. Vēl viens labs dizains piemērs mēs redzējām 3 nedēļas 15, jūs varētu saglabāt dziesmu no nulles. Tātad, ja jūs sāktu kuģa, jūs saglabāt - globālā mainīgā, varbūt - x un y-koordināta nulli. Un tad, kad jūs - Jūsu pārvietot funkciju, kad veicat veiksmīgs solis, jums atjaunināt atrašanās vieta nulles. Kas varētu glābt jūs no pienākuma darīt ligzdotu FOR cilpas, lai meklētu, izmantojot iekāpt katru reizi jūsu pārvietoties funkcijas un atrast nulles, vai arī atrast flīzes, un pēc tam pārbaudiet, kas ir blakus. Tā vietā, jums ir atrašanās vietu nulle, jūs varat skatīties augstāk, tālāk, un pa kreisi un pa labi no tā, lai atrastu flīžu jūs meklējat. Tātad attiecībā uz programmu mēs esam rakstiski, viņi nekad nav pietiekami liels ka daži no šiem dizaina lēmumiem ir patiešām gatavojas traucēt jūsu programmu, vai arī padarīt to darboties lēnāk, vai varbūt pat palaist no atmiņas. Bet mēs joprojām stumšanas jums puiši rakstīt tik elegants un efektīvāku kodu, cik vien iespējams. Tātad, ja jūs galu galā rakstot lietas kas ir ievērojami lielāka jomu, tie tiks rakstīts ar labu izstrādāt papildus ir pareizs. Tāpēc daudzi no jums ir ko tas veic. Tas ir kaut kas, mēs meklējam - kaut mēs turpināsim push jums puiši par. Ja jums kādreiz ir kādi jautājumi par dizains savu programmu, justies brīvi panākt, lai mani, un es esmu laimīgs, lai staigāt pa savu programmu ar jums, un norāda dažus no dizaina lēmumiem veicāt, un sniegt jums dažus ieteikumi par to, kā padarīt vēl labāku dizainu lēmumus. Tātad, mēs ejam, lai pārietu uz runāt par viktorīnā 0. Pirms mēs to darām, vai kāds ir jautājumi par to, kas Es esmu uz līdz šim? [Šalkas TROKSNIS] Jason Hirschhorn: Septiņas sekundes. OK. Parunāsim par Viktorīna 0 mazliet. Lielākā daļa no jums ir jūsu viktorīnā 0 back. Ja jums nav, cerams, atceraties to mazliet. Bet, ja jūs esat pieņēmis Viktorīna 0, tad arī ir pieejami PDF tiešsaistē parauga šķīduma. Vai kāds ir kādi jautājumi, pirms mēs lēkt uz nedēļas materiālu par Īpaša problēma par Viktorīna 0 - kāpēc atbilde ir, kas tas ir? Ir kāds sajaukt par kaut ko? Pat ja jums ir problēma labi, bet tāpat gribētu man paskaidrot to mazliet vairāk, es esmu priecīgs to darīt tagad. Tāpēc es lūdzu jūs guys nāk sagatavoti ar dažiem domas par Viktorīna 0. Tātad, kas vēlētos iegūt mums sākās ar jautājumu, vai komentēt Viktorīna 0? [PAPER šalkas] Jason Hirschhorn: Ne visiem izdarīja perfekti. Tāpēc es zinu, [smejas] tur ir daži jautājumi par viktorīnā 0. OK. Jā. Ompica. OMPICA numurs: 10. Jason Hirschhorn numurs: 10. Kuriem viens bija skaitlis 10? OMPICA: - Jason Hirschhorn: I haven't - OMPICA: ietver - Jason Hirschhorn: Number 10 bija astoņi I - rakstot astoņiem līdz i? OMPICA: Jā. Jason Hirschhorn: OK. Tātad vēl viens jautājums, jums varētu būt jautāja bija man tālredzīgu? Atbilde ir jā. Iedaļā pirms viktorīnu, es jautāju jūs guys kods gan Sterling un astoņiem līdz i. Abas no tām notika parādās uz viktorīnas. Tātad, cerams, tu maksā uzmanību uz to. Un, ja jums bija, tad jums būtu iespējams izdarīt arī par šiem diviem. Bet astoņi līdz i, mēs neesam reāli kods tā klasē, bet tas bija, atkal, lūdza uz viktorīnas. Tāpēc pāris lietas, lai ņemtu atzīmēt, kodēšanas astoņi līdz i. Pirmā lieta, par šo jautājumu, bija kas jums nepieciešama, lai pārbaudītu, vai virkne bija vienāda null. Pāris cilvēki centās, lai pārbaudītu vēlāk programmā, ja s konsole man bija - tik īpašs raksturs, jo string - bija vienāda null. Bet atceries, ka null būtībā - tas ir labi domāt par null kā nulles rādītājs - rādītāju uz nulli - kaut kur atmiņā, kur Jūs nekad nevar piekļūt. Tātad, ja kaut kas ir vienāds ar nulli, jūs zinu, ka tas nav inicializēts, vai arī tur nekā nav. Tā s ir char zvaigzne, s kronšteins i ir char. Tāpēc tas ir jēga, lai salīdzinātu s uz null, bet ne s kronšteins i uz null. Bet atkal - tā, ka bija pirmā lieta, ka jūs vajadzēja darīt - pārbaudiet, lai pārliecinātos, ka jūs faktiski saņēmu reālu virkni. Tālāk, jūs vēlaties, lai iet cauri katrs simbols virknē. Un tā tas būtu, piemēram, u grupā i, piemēram, ja i ir jūsu iteratora. Un veikt šo raksturu, un saņem tā faktisko vērtību. Jūs to saglabāti kā char, bet ASCII vērtība nulles - nulle kā raksturs - faktiski nav vesels skaitlis nulle. Tas ir kādu citu numuru, jūs varat meklēt ASCII tabulā. Tik viens veids, kā labot par to - iespējams, labākais veids, lai koriģētu ka - ir atņemt no tā raksturs vērtības - nulle kā raksturs. Tāpēc mīnus vienu citātu, nulle, cits vienu citātu. , Kas veiks visus numuru, ir kā palijas, un saņemt to ir vienāda ar numurs, kā faktiskā skaitlim. Un tas ir ļoti līdzīga pieejai daudzi cilvēki ņēma Problēma noteikti 2, ar ķeizaru un Viginere - šie ciphers, kad jūs Tika pagriežot tos. Tātad, pēc tam, kad ir tā kā vairākās no nulles līdz deviņas, pēc tam - atkarībā no ja tas iet gala skaita - Jums ir nepieciešams, lai reizināt to ar jaudu 10. Daži cilvēki pārcēlās no muguras uz priekšā, un reizina indivīdu numurs, ar jaudu 10. Daži cilvēki pārcēlās no no priekšpuses uz aizmuguri - un tā notika augstākā kārtas numuru Pirmais - un ļautu ietaupīt tiem, globālo counter mainīgais. Un pēc tam katru reizi, izmantojot paredzēto cilpa, reizināt, ka milzu globālā counter mainīgo ar 10, lai vietas uz nākamo char. Tā, ka bija nedaudz mulsinoši bez man rakstot to uz kuģa. Bet parauga šķīdumu jums ir pieejama. Bet tie bija lielas lietas mēs meklējām. Arī pārbaudi, lai pārliecinātos, ka katrs individuālais raksturs bija patiešām raksturu no nulles līdz deviņiem, un nav kāds cits raksturs, piemēram, A, piemēram. Tie bija lietas, ko mēs meklējām minētajā jautājumā. Tas, ka atbildi uz savu jautājumu? OMPICA: Jā. Jason Hirschhorn: OK. Vai ir kādi citi jautājumi par Viktorīna 0? Kas par apkopojot? Visi apkopojot labi? Nē. Tur bija - [Smejas] Kādi jautājumi par apkopošanas process? Wow. [PAPER šalkas] Jason Hirschhorn: Jā. Michael. MICHAEL: Vai skaitlis 7 - izlases? Jason Hirschhorn: Number 7. Numuru 7 bija iegūt izlases skaitli. Lielisks. Tātad jūs esat dota veselu a un skaitlis b, un jūs vēlaties izlases skaitlis no a un b. Mēs faktiski var rakstīt šo vienu par klāja, jo tas viens bija viena līnija kods - viens veids, kā to darīt. Tāpēc mēs esam dota drand kā funkcija, mēs varētu izmantot. Un ko tas drand - pieņemot, ka tas ir bijis ar sēklām - Kāda drand atgriezties? MICHAEL: pludiņš starp 0.0 un 1.0. Jason Hirschhorn: numurs - jā. Skaitlis starp 0 un 1. Un tāpēc mums ir b un. Un tad mums ir mūsu izlases numuru no 0 līdz 1, ko mums drand. Daži cilvēki centās likt B vai b mīnus , vai kaut kas iekšā, kas iekavās. Tas nozīmētu, ka viņi ir argumenti, lai šo funkciju. drand neveic nekādus argumentus - piemēram getString nav neveic nekādus argumentus. Tātad, tas ir tikai atvērt paren, close paren - un tas pats par sevi ir funkcija zvans. Un tas dod jums vairākas starp 0 un 1. Protams, mums ir vesela virkne ka skaitļi var būt iekšā Teikt, ja b ir 10, un ir 5, mēs patiešām gribu numuru ar virkni 5. Tāpēc nākamā lieta, kas mums jādara, ir reizināt to ar diapazonu b mīnus. Tātad, pieņemot, ka ir palielinājusies. Un tas mums dos numuru noteiktā diapazonā. Un ka īpaša diapazons ir Atšķirība starp b mīnus. Un, visbeidzot, ka būs tikai dot no - saka diapazonu starp b mīnus ir 5, ka došu mums skaitlis no 0 līdz 5. Bet, ja faktiski ir 5, mums ir nepieciešams, lai palielinātu šis diapazons līdz, kur tas ir patiesībā vajadzēja būt, pievienojot. Tā, kas izpaužas loģika tiesības. Un tad tu būtu cits jautājums? MICHAEL: Nē. Es tikai justies patiesi muļķīgi tagad. [Smejas] Jason Hirschhorn: Nē. Nejūtas īsti mēms. Cilvēku skaits cīnījās ar šo jautājumu. Un tad, cits jautājums ir, drand, jūs teicāt, sniedz jums peldēt - atgriež peldēt. Bet šī funkcija tiešām lūdza lai skaitlis jāatdod. Jums nav nepieciešams nodot to skaidri līdz veselam skaitlim, jo ​​šie operācijas pret to, kā viss ir peldēt - kā peldošo punktu skaitu. Tāpat kā šī būs - pat tad, ja tas ir vesels skaitlis, tas jāreizina pareizi. Visi pavairošana darbosies. Jums nav nepieciešams nodot to šeit. Patiesībā, jums nevajadzētu mest. Tas - ja jūs varētu likt numuru , kas ir starp 0 un 1 - izlases numuru, peldošā komata - tad tas būs vai nu tikai 0 vai 1, tā jūs zaudējat visu šo precizitāti. Bet beigās, kad jūs atgrieztos, tas automātiski kļūst nosūtīti atpakaļ kā vesels skaitlis. Tātad jums nav nepieciešams darīt ka liešana sevi. Tātad šī bija atbilde šis jautājums, skaitlis 7. Jebkādi citi jautājumi par Viktorīna 0? Jā, Annie. ANNIE: Kad mēs izmantojam rekursīvs - kad mēs izmantojam iteratīvs cilpas? Jason Hirschhorn: Ja jūs izmantojat rekursīvā - tā plašāk, plusi un mīnusi rekursijas pret iteratīvs pieeja. Var kāds piedāvāt pro vai con? Lūdzu? Nevar kāds. Kas var piedāvāt pro vai con? [PAPER šalkas] STUDENT 1: Rekursīva ir mazāk kodēšana - mazāk rakstīt? Jason Hirschhorn: Tātad kopumā, rekursijas īpaši, funkcija - vai algoritms, piemēram, sapludināšanai kārtot - kas pakļauj sevi uz rekursīvo pieeju - varētu būt vienkāršāka ar kodu rekursīvi. Un tikai daudz lietderīgāk to darīt rekursīvi. Lai būtu pro rekursijas. Citi? Yeah? STUDENT 2: Con līdz rekursijas - Tas aizņem vairāk atmiņas. Jason Hirschhorn: Tātad tieši labi. Rekursīvas funkcijas turpinās pievienojot kaudze rāmji kaudze. Tātad, ja jūs darbojas daudz numurus, un ir, lai izsauktu šo darbojas daudz, tad jums noteikti būs aizņem vairāk atmiņas, bet iteratīvs pieeja būs tikai nodot vienu kaudze rāmi uz steku, jo tas viss notiek vienā funkciju. Jebkuri citi plusi un mīnusi? Jā. STUDENT 3: Pros par rekursijas. Jums nav noteikt iepriekš, cik reizes kods bija jāatkārto. Var būt iepriekš vairākas reizes, ka jums ir atkārtot, tad rekursija ir labāk, jo tā veic šo rezultātu. Jason Hirschhorn: Es domāju, ka ir taisnība. Bet es domāju, ka abos gadījumos Jūs nekad - jūs, iespējams, iegūt kādu informāciju no lietotāja. Vai šī funkcija būtu sava ieeja , kas nosaka, cik reizes vajadzētu darboties. Tātad kopumā, jums nebūtu grūti kods - pat tādā ceļā, - kā daudzas reizes, ka cilpa būtu palaist. Vai jums ir cits jūs bijāt domāt par, Annie? OK. Tātad tie, iespējams, divi - lielākais pro un lielākā con lai rekursīvs pret iteratīvs pieeja. OK. Kaut kas cits uz Viktorīna 0? Pieņemsim pāriet. Failu I / O. Ir brīnišķīgi īsa šonedēļ failu I / O, kas, cerams, jums ir skatīties vairākus reizes, un apbrīnoja. Daudz darba iegāja, un es esmu dzirdēju tas ir insanely noderīga. Es arī ietvēra saiti uz šo slaidu, ja jums nav bijis iespēja skatīties to 10 reizes. Tātad, mēs īsi iet pāri galvenie soļi, lai atvērtu un darba ar failiem, un tad mēs gatavojamies nodoties kodēšanas problēmas, pirms Pētot šo problēmu kopumu. Tātad vēlreiz, es esmu gatavojas īstenot šo līdzi ekrāns, bet es esmu gatavojas runāt par tikai minūti par to, ko mēs esam šeit darāt ar failu I/O-- Ko tas nozīmē? Tas nozīmē, ka mēs varam izveidot mūsu programmām, un tad ir mūsu programmas izejas, un nav veicis nekādas ietekmes uz pasaule ārpus mūsu programmā. Bet, kad mēs sākam strādāt ar failiem - gan lasot tos un veidojot viņiem - mēs varam būt zināma ietekme uz pasaules ārpus mūsu programmā. Tāpat kā, ja Microsoft Word nevarēja veikt jebkādas Word dokumentus, tad pēc tam, kad Microsoft Word atmest, visas jūsu darbs būtu aizgājuši, un tas būtu tiešām ir bezjēdzīgi. Mēs galu galā vēlaties, lai varētu rakstīt programmas, kas var ietekmēt Pasaule ap viņiem, gan uzņemot komplekss ieejas - attiecībā uz failiem un ar failiem, kā arī radot interesantu un pārliecinoši rezultāti - ziņā dažāda veida failus. Tātad, tas ir iemesls, kāpēc mēs sākam uzzināt, kā strādāt ar failiem. Precīzāk, kāda mēs darām, ir šādi. Tas ir ļoti vienkārši. Ir tikai pāris soļi, un tie ir šeit par šo kodeksu. Tāpēc mēs esam gatavojas iet cauri Šis kods pozīcijai. Pirmkārt, jūs redzat uzsvēra - ja jūs strādājat ar failu, neatkarīgi no faila tipa tas ir, Jums ir nepieciešams, lai to atvērtu. Un tas ir ar aicinājumu fopen - tieši šeit. Jūs iekļaut faila nosaukumu. Ja fails nav jūsu direktorijā, vai mape, kurā šī programma dzīvi, tad jums arī nepieciešams iekļaut ceļš, kur tas fails. Mēs esam gatavojas pieņemt, ka tas failu ar nosaukumu "text.txt" - vienkāršs teksta dokuments - ir vienā mapē ar šo programmu ir. Tātad tas ir cita lieta, kas jāpatur prātā - ka, ja jūs vēlaties, lai atvērtu failu kaut kur citur, jums tiešām ir nepieciešams lai iekļautu tās atrašanās vietu. Otrkārt, jūs varat iet par argumentu, lai fopen, un tas, ko jūs vēlaties darīt ar failu. Ir trīs galvenie argumenti, ka jūs gatavojas nodot fopen. Kas var dot man šos trīs? Kas var dot man vienu no tiem? Jā. STUDENT 4: faila nosaukums? Jason Hirschhorn: Sorry. Trīs galvenie argumenti jūs varat iet kā otrais arguments fopen. Tev taisnība - faila nosaukums ir pirmais arguments. Bet otrais arguments fopen ir parasti trīs stīgas, un - jā. Aleja. ALEJA: par pievienot. Jason Hirschhorn:, ja vēlaties pievienot uz failu, kas jau pastāv. STUDENT 5: R lasīt. Jason Hirschhorn: R, ja jūs vēlas lasīt no faila. STUDENT 6: W rakstīt. Jason Hirschhorn: Un, w, ja jums vēlas rakstīt failā. Tātad šajā gadījumā mēs esam rakstiski lietai, tāpēc mums ir w. Atverot to, jums ir arī, lai saglabātu failu kaut kur, un tas ir ar kodu kreisajā pusē uzdevums operators - Es veidoju rādītāju uz failu sauc, šajā gadījumā failu. Mēs nebrauksim jāuztraucas, ko Tas visas cepures FILE lieta ir. Pietiek pateikt, tas ir garš plūsma nuļļu un vieninieku. Un tas, kā mēs gatavojamies darboties un saprast to. Nākamā lieta, kas mums jādara, - un tas ir neticami svarīgi - ikreiz, kad atverat failu - Patiesībā, kad jūs aicināt malloc, lai Piemēram, un iegūt kādu atmiņu un mēģināt un saglabājiet to rādītāju, jūs vienmēr vēlaties pārbaudīt, lai pārliecinātos, ka tas funkcija neatgriezās null. Tātad šajā gadījumā, mēs pārbaudām, pārliecināts, ka mēs faktiski atver failu pareizi, un tur bija nav kļūda mūsu programmā. Tālāk, kad mēs esam jāpārbauda, ​​lai pārliecinātos, ka ka mums ir darba failu, mēs varam rakstīt vai lasīt no, vai pievienot lietai. Šajā gadījumā, es esmu vienkārši drukāšanas viena rinda uz šo failu. Kā es varu zināt, ka? Nu, es esmu, izmantojot šo funkciju sauc fprintf. Visas funkcijas, jums būs, izmantojot rakstot uz vai lasot no, vai manipulējot failus būs līdzīgi funkcijas, jūs esat redzējis, bet sākas ar burtu F, stāvot failu. Un fprintf, atšķirībā no mūsu parasto drukas app, aizņem vienu papildu argumentu, un tas ir fails, kurā vēlaties izdrukāt šo līniju. Man nav nekas tiesības ohai. Man nav trešdaļu arguments printf - vai otrs arguments printf, Trešais arguments fprintf, jo es nav nekādu vietturus šeit. Es neesmu ieskaitot jebkādus mainīgos. Bet atkal, fprintf un visi no šiem materiāliem funkcijas, kas darbojas ar failiem parasti būs nepieciešama failu par kuriem viņi darbojas. Visbeidzot, pēdējā svarīga lieta darīt, ir, lai aizvērtu failu, tāpat kā ar - kad mēs malloc kaut ko, Mēs vēlamies, lai atbrīvotu kaut ko, citādi mēs ir atmiņas noplūde - mēs gribam slēgt savu failu. Ja šī programma iziet neaizverot failu, izredzes ir nekas iet nepareizi, it īpaši, ja tas bija neliels fails. Bet tas noteikti ir labs kodēšanas stils un praksi, lai vienmēr slēgt failu kad esat beidzis to izmanto. Tāpēc, ka ir par failu pamati I / O. Jūs, iespējams, esat redzējis, ka pirms, vai noskatījos to šajā fantastiskajā īss. Vai kāds ir kādi jautājumi, pirms mēs iedziļināties praksē kodēšanas problēmas, par failu I / O vai soļi Es devos pāri? [Ierakstot SOUNDS] Jason Hirschhorn: Vai jūs ir jautājums, Avi? AVI: Nē. Jason Hirschhorn: OK. Es esmu gatavojas jāgaida vēl septiņas sekundes. [Smejas] Tas ir ļoti labs padoms. Jūs puiši vienkārši nepatīk uzdodot jautājumus. Tas ir jauki. OK. Tātad, mūsu pirmais prakse problēma ir tā, mēs esam gatavojas dublēt funkcijas komandrindas rīks, kas jums, iespējams, lieto pirms - kopija - kopiju rīks. Ja jūs tipa CP un pēc tam nodot to divu argumenti, uz savu termināli, jūs varat kopēt failu. Un tas ir tas, ko mēs gatavojamies rakstīt tieši tagad. Tātad vēlreiz, nolasot šo slaidu, es gribētu Jums uzrakstīt programmu, kas ņem divas un tikai divas komandrindas argumenti - avota failu un galamērķa failu - un kopijas saturam avota failu mērķa failā viens baits laikā. Tātad, tas ir daudz prasīt. Atkal, laba pieeja, ir tas, lai nav iet taisni uz C kodu, bet sadalīt pāris soļus. Pirmkārt, domāju par loģiku - precīzi ko es esmu lūdzot jums darīt - un saprast visu soļi, lai šo problēmu. Ne C, tikai dažās pseudocode, vai pat garīgo modelis kas notiek. Tālāk, kad esat pseudocode leju, izdomāt, kā pseudocode kartes pārnešanai rīkus un lietas, ko mēs esam iemācījās lietot C Un visbeidzot, ja jums ir viss, kas kopā, jūs varat kodu problēmu. Aizņem 5 līdz 10 minūtes strādāt pie šīs problēmas. Es nolikšu instrukcijas atpakaļ uz augšu sekundē. Un tad mēs gatavojamies iet pa pseudocode, un kods to dzīvot kā grupa. Ja Jums ir kādi jautājumi, kamēr jūs esat strādā pie tā, justies brīvi, lai palielinātu savu roku, un es nākšu apkārt un atbildēt uz tiem. STUDENT 7: Vai es varu zvēliens papīra? Jason Hirschhorn: Kas notiek? [Ierakstot SOUNDS] Jason Hirschhorn: OK. Iesim pa pseudocode pirmkārt, un tad es došu jums pāris vairāk minūtes, lai pabeigtu kodēšanas. Kuri vēlas sākt mani off ar pirmo līniju pseudocode šo funkciju? STUDENT 8: Pārbaudiet, lai pārliecinātos, ka jums tika dotas divas failus. Jason Hirschhorn: OK. Un, ja mēs ne? STUDENT 8: Es gribētu atgriezties 0. Jason Hirschhorn: Vai mums vajadzētu atgriezties 0? STUDENT 8: Return - nobloķēšanas. Piedodiet. Jason Hirschhorn: Jā. Droši vien ne 0. Tāpēc, ka 0 nozīmē, ka viss bija labi. OK. Tātad tas ir pirmais rindā gada pseudocode. Kas ir otrais rindā pseudocode? STUDENT 9: Atvērta gan failus? Jason Hirschhorn: atveriet abus failus. OK? STUDENT 10: Pārbaudiet, lai redzētu, Ja fails ir NULL? Jason Hirschhorn: Pārbaudiet, Noteikti ne, ir spēkā. Kā malā - slash 0 - ir tas, ka NULL? STUDENT 11: Nē. Jason Hirschhorn: Tas nav NULL. Ka sauc NULL terminatoru. Tas ir faktiski uzrakstīti tikai ar vienu l. Tāpēc pārbaudi kaut ko pret šo - kas ir faktiski raksturs - lai pārbaudītu kaut ko, pret ko nav tāds pats kā pārbaudi, lai noskaidrotu, vai tas vienāds NULL. Un daži cilvēki - par to viktorīnas un to problēmu komplekti - ir ieguvuši divi no tiem sajaukt. Bet divi no tiem ir faktiski atšķiras. Viens beidzas virkni - viens ir rādītājs līdz 0. STUDENT 12: Kāpēc jūs pārbaudīt, lai pārliecinieties, ka faili nav NULL pirms to atvēršanas? Jason Hirschhorn: So atvērts ietaupa kaut kas šajā lietā. Un, ja jūs iet atpakaļ šeit - tāpēc šī pozīcija - fopen - dos Jums adresi un veikalu ka adrese failu, ja tas darbojas. Ja tas nedarbojas, tad saglabās NULL - STUDENT 12: Oh. OK. Got jums. Jason Hirschhorn: failā. Tātad, jūs nevarat pārbaudīt NULL Pirms esat atvēris tos. NULL ir kaut kas nebija strādā pareizi. OK. Tātad, pārliecinieties, neviena no tām nav? Vai ir? Ko mēs domājam? Mēs iet ar to. STUDENT 13: Vai. Jason Hirschhorn: Vai? Ne ir? STUDENT 13: Vai. Jason Hirschhorn: OK. Mēs, šķiet, ir dažas vienprātība par to. Neviena no tām nav NULL. Labi, nākamais līnija pseudocode. Kas man nav devis līnijas vēl? Gaidīsim tevi. Jā. STUDENT 14: Jums ir lasīt no pirmā faila? Jason Hirschhorn: OK. STUDENT 14: Vai mēs izmantojam fscanf vai kaut ko, piemēram, ka pirmā faila? Jason Hirschhorn: Tātad, mēs vēlamies, lai nolasīt no pirmā faila un - pieņemsim, nodot, ka tieši šeit. Nolasīt no avota faila. Un tad, ko mēs darām, kad mēs nolasīt no avota faila? Kāds cits? STUDENT 15: Rakstiet uz mērķa fails? Jason Hirschhorn: Mēs rakstām mērķa fails, un - OK. Ko vēl mēs trūkst? Kāds cits, kas man nav devis līnija koda vēl - no pseudocode. Jā. STUDENT 16: Varbūt jūs vienmēr varat pārbaudīt vai tur ir kaut kas, lai lasīt, piemēram, nākamajā rindā? Tas ir kā nākamajā rindiņā, redzēt, ja tā eksistē. [ELECTRONIC BEEP] Jason Hirschhorn: Hmm. Tas ir mans journaling programmatūru. Yeah? STUDENT 16: Jā. Jason Hirschhorn: Tā sniedz tas man vēl vienu reizi. STUDENT 16: Pārbaudiet, vai tur ir vēl nākamais līnija no avota failu, lai izlasītu. Jason Hirschhorn: OK. Tāpēc mēs nelasām līnijas - lasīja baiti šeit - bet tu esi pareizi. Mēs vēlamies, lai lasīt un rakstīt, kamēr ir ne vairāk baiti. OK. Un tāpēc tie būtu patiešām ir izrobota mazliet, jo viņi ar tur. Tiesības? Kamēr mēs esam no baitu, mēs ejam, lai nolasīt no avota faila un rakstīt uz mērķa failā. Un tad, kas ir pēdējais līnija pseudocode? Kāds, kurš nav sniegta man kaut ko vēl. STUDENT 17: Aizveriet failus? Jason Hirschhorn: Tieši tā. Aizveriet failus. Tātad tur ir mūsu pseudocode. Es esmu gatavojas nodot pseudocode stājas gedit, un pēc pāris minūtēm mēs tiks kodu kopā. OK. Ļaujiet mums sākt kā grupa. Nishant, man ir mana jaunu failu. Esmu tikko atvēra šo augšu. Untitled Document 1. Kas ir pirmā lieta, ko man vajadzētu darīt? Nishant: Iekļaut bibliotēkas? Jason Hirschhorn: OK. Kas bibliotēkas? Nishant: stdio.h, stdlib.h, es ticu? Jason Hirschhorn: OK. Kas ir stdlib atrast? Nishant: Es aizmirsu. Jason Hirschhorn: OK. Tā ietver stdio. Kas man jādara, pat pirms Es sāktu kodēšanas? Nishant: Uzrakstiet header? Jason Hirschhorn: Kā es varu to krāsains? [interposing BALSIS] Nishant: Kā jums tas krāsā? Jason Hirschhorn: Kā es krāsu kodēšanas? Nishant: Es nezinu. Oh. Ietaupīt. Jason Hirschhorn: Save. Jā. Man vajadzētu saglabāt to kā. C. Tāpēc saglabājiet to uz darbvirsmas kā cp.c. Salds. Un, ja es gribu, lai iegūtu pilnu stilu punktus, ko man būtu ietver augšpusē? Nishant: Jūs varētu uzrakstīt savu vārdu, vārdu programmas, un lai programmas, kā arī? Jason Hirschhorn: Izskatās labi. Lielisks. Tātad jūs esat sācis mums off perfekti. # Ietver - mēs arī rakstīt - OK. Tāpēc es domāju, ka es esmu viss, kas iet. Kam ir pirmajā rindā kodu par mani - vai pirmās rindiņas kodu, kas tā veiks, lai apmierinātu mūsu pirmo komentēt pseudocode? Jums. STUDENT 18: Vai tas nebūtu int argc, un tad apdedzina * argv? Jason Hirschhorn: Es domāju, ka tev taisnība. Pieņemsim mainīt to uz int galvenais, atvērt paren, int argc, komats, char * argv? Piemēram, ka? STUDENT 18: iekavās. Jason Hirschhorn: iekavās. Atvērt bracket, tuvu bracket, close vecākiem. Perfekta. Tagad es varētu veikt komandrindas argumentus. OK. Nodrošinātu, ka mēs esam dota divus failus. Jūs varat dot man, ka labi. STUDENT 18: Ja argc - tas viens nav vienāds 3. Jason Hirschhorn: Ja atklātie paren argc nav vienāds 3? STUDENT 18: Jā, jūs atpakaļ 1 vai neko. Jason Hirschhorn: Sorry. STUDENT 18: Atgriešanās 1 vai neko. Jason Hirschhorn: Atgriešanās 1. OK? Lieliski. Atvērt abus failus. Kas var man palīdzēt atvērt abus failus? Kas man nav devis kodu vēl? Kurt? Kurt: Tātad visas caps F-I-L-E star avots. Jason Hirschhorn: Es eju izņemt patskaņi. Tie ir cool. Tas ir tāpat kā Tumblr. STUDENT 18: Vienāds fopen - Jason Hirschhorn: Vienāds fopen? STUDENT 18: Open paren, argv, open kronšteins. Jason Hirschhorn: Pagaidiet. Piedodiet. Atvērt paren. OK. STUDENT 18: Jā. Argv sub 1. Jason Hirschhorn: Sub 1? STUDENT 18: Jā. Argv open kronšteins 1 - Jā. Un tad komats, un tad atveriet dubultā quote, r, dubultā quote, close paren, semikolu. Jason Hirschhorn: Sweet. Un ko par otru? STUDENT 18: Ļoti līdzīgs, bet tā vietā S-R-C, jūs to sauc D-S-T. Jason Hirschhorn: Oo! Man patīk, ka. STUDENT 18: Tikai D-S-T. Jā. Un tad ARGV, atklātu kronšteinu, 2. Jā. Un tad w nevis r. Jā. Jason Hirschhorn: Great. Nākamais pāris līnijām. Arī tad, ja kāds ir lietas, ko pievienot līniju, ko mēs esam darījuši, justies brīvi pievienot tos kā labi. Pārbaudiet, lai pārliecinātos, ka neviena no tām nav NULL. Kas var sniegt man kodu, man ir nepieciešams, lai izpildītu šo līniju pseudocode? Strēlnieks. ARCHER: Ja src vienāds vienāds NULL vai DST vienāds vienāds NULL, tad jūs atpakaļ - Jason Hirschhorn: Kas? ARCHER: Atgriešanās 2? Jason Hirschhorn: Atgriešanās 2. Tātad, ja atklāta paren src vienāds vienāds NULL, vai - lai kas thing's - caurules? Caurule? Mēs to saucam caurules. Caurule, caurules, DST vienāds vienāds NULL, atgriezties 2. OK? Kamēr mēs esam no baitu - mēs veida izlaidis vairāk nekā šajā etapā pseudocode daļa dodas uz šejieni. Bet, kamēr mēs esam no baitu - Ko tas izklausās? Kāda veida C struktūru - bet es nedomāju izmantot vārdu struktūru, jo mēs esam gatavojas sākt lietot ka citos gadījumos - bet C instruments tas, ka izklausās? STUDENT 19: cilpa. Jason Hirschhorn: cilpa. Izklausās cilpu. Tātad, kas var sniegt man pirmo rindiņu no cilpas kodu tieši šeit? Jūs varat arī izvēlēties, kāda veida cilpa, ko vēlaties, ja jūs varētu man šī līnija kodu. Ir trīs veidu. Jums izvēlēties. Es gribētu ieteikt vienu no tiem. Avi. Kuriem viens jūs vēlaties? AVI: PAR. Jason Hirschhorn: PAR. AVI: int i ir vienāds ar nulli. Jason Hirschhorn: OK. AVI: Šī daļa es neesmu pārliecināts par to. Bet i ir mazāks par izmēru gada zvaigžņu avots? Es neesmu pārliecināts par to. Jason Hirschhorn: OK. AVI: Jo jūs vēlaties izmērs failu, vai ne? Jason Hirschhorn: Tātad tas, iespējams, nebūs dod mums izmēru faktisko failu baitos. Tātad, ko vēl mēs varētu darīt? Kas ir cita veida cilpa? Vai mums vajadzētu pieturēties pie cilpa? STUDENT 20: Vai jūs varētu darīt, kamēr cilpa? Un tad, ko jūs vēlaties darīt, ir you'd - jo mums ir char * faila. Tātad, ja mēs tikai glabāt palielināšanai, kas kamēr mēs gribētu atrast NULLES rakstzīmi beigas tā? Vai nē, ir tas, ka nav kā faili darbs? Jason Hirschhorn: Tātad, mēs varam glabāt palielināšanai char * kamēr mēs atrodam nulles - STUDENT 20: Būtībā glabāt notiek raksturu pēc rakstura, kamēr mēs hit faila beigas. Jason Hirschhorn: Jā. Tātad tas, ko mēs vēlamies darīt. Mēs vēlamies, lai saglabātu lasījumā, raksturs pēc rakstura, līdz brīdim, kad mēs nokļūt faila beigas. STUDENT 20: Jā. Atrast - kas ir beigas, vai bremžu signāls beigās teksta failu. Jason Hirschhorn: OK. Tātad, kad mēs nokļūt līdz beigām failu - Kā mēs zinām, mēs esam sasnieguši beigu faila? Ja es esmu aicinot - tāpēc pieņemsim solis atpakaļ. Kas ir funkcija? Iesim uz šo pozīciju šeit. Nolasīt no avota faila. Kas var dot man, ka rindiņu kodu? STUDENT 21: Fscanf? Jason Hirschhorn: Fscanf. OK. Ko darīt, ja es gribu lasīt, ir ļoti Konkrētāk, viens baits? STUDENT 21: Es nezinu. Jason Hirschhorn: OK. Vēl vienkāršāk, nekā fscanf - to, kas ir - Es gribu lasīt no avota faila? Nolasīt no avota faila. Kas ir funkcija - jā. STUDENT 22: Tas ir fread? Jason Hirschhorn: fread. Es domāju, pieņemsim stick ar ka viens tagad. Kādus argumentus tas fread ņemt? STUDENT 22: Iespējams, faila tips, un tad vietu failā? Jason Hirschhorn: Ko es varu ierakstīt šeit , lai noskaidrotu, kāda veida argumentus fread notiek? VAIRĀKAS Studenti: Man fread. Jason Hirschhorn: Man fread un fwrite. Izskatās, ka tie žaut kopā. Tātad fread notiek kā daudz argumentu? STUDENT 23: Four. Jason Hirschhorn: Tas aizņem četri argumenti. Tas aizņem rādītāju, izmēru, un ka lieta, kas ir dīvaini, un daži failu. OK? Pieņemsim lasīt par to šeit. "Funkcija fread lasa n memb elementi datus, katra izmērs baiti garš, no strauta norādīja uz ko plūsma, uzglabājot tos tajā vietā sniedza rādītājs. " Tātad četri argumenti. Kāpēc man vienkārši kopēt to, un ielīmēt to šeit. OK. Tātad, kas var sākt aizpildot šie argumenti par mani? Avi. AVI: Izņemiet tukšumu. Likts tikai src. Izņemt rādītāju un zvaigzne. Put src. Tad - Jason Hirschhorn: Tāpēc es esmu gatavojas pārtraukt jūs tur, jo tas ir nepareizi. Tev taisnība, ar SRC, bet ja būtu src doties? [interposing BALSIS] Jason Hirschhorn: Tas būtu iet vairāk nekā šeit. Tas ir SRC - mūsu SRC ir veids. Apskatīsim šeit. Tas ir lūdzot tipa failu *, mēs faktiski parasti redzēt, piemēram, ka. Tāpēc tas ir lūdzot argumentu tipa FILE * sauc plūsma, kas ir src. OK? Kāda izmēra lietas darīt Mēs vēlamies, lai lasītu? Es tev to problēmas apraksts. STUDENT 24: One baits laikā. Jason Hirschhorn: viens baits. Cik liela ir baitu? Tā izmērs ir baitos, lai to, ko es varu likt tieši tur? STUDENT 25: One. Jason Hirschhorn: One. Tiesības. Tā izmērs ir vienības baitu, tā 1 ir 1 baits. Cik es gribu lasīt laikā. STUDENT 26: Viens? Jason Hirschhorn: Viena lieta. Es gribu lasīt, viena lieta izmēru 1, viens koduma laikā. Un kur es varu likt to, kad es izlasīju to? STUDENT 27: Destination? Jason Hirschhorn: Tāpēc es nevaru likt tas taisni galamērķi. STUDENT 28: Jūs esat gonna likts tā uz trešo rādītājs? STUDENT 27 uz galamērķi. Jason Hirschhorn: OK. Jā. STUDENT 29: Jūs varat paziņot, kaut ko darbojas kā pagaidu uzglabāšanas agrāk. Jason Hirschhorn: OK. Dodiet man to. STUDENT 29: Vēl viens fails rādītājs, varbūt? Jason Hirschhorn: OK. Tāpēc tas nav spēkā zvaigzne - tas ir veids neesošu zvaigzne, tāpēc tā nav jābūt failu rādītājs. Un, ja es lasu vienu baitu, kur varētu būt laba vieta glabāt vienu baitu? STUDENT 29: masīvs? Jason Hirschhorn: masīvs. OK. Un kas vēl ir kaut kas ir tikai izmērs vienu baitu? STUDENT 30: char *? STUDENT 29: Jā. Jason Hirschhorn: char * nav viens baits. STUDENT 29: char. Jason Hirschhorn: char ir viens baits. Tiesības? Tāpēc sauksim šo buferi ir vispārējs nosaukums, ko izmanto, lai šīs lietas uzglabāt kaut uz laiku. Tāpēc es izveidot buferi. Tiesības? Bet tas aizņem tukšumu *. Tātad, varbūt jums ir taisnība, ka tas jābūt bufera izmērs 0. Tāpēc tas saglabā vienu - labi. Jo tas tieši šeit - char buferis ir raksturs, bet tas aizņem tukšumu * - rādītājs. Lai es varētu darīt, un tagad buferis ir rādītājs. Ko vēl es varētu darīt? STUDENT 31: Put zvaigzne blakus char. Jason Hirschhorn: Es varētu ir izveidota tā char *. OK. Kas ir vēl viena lieta, ko es varētu darīt? Vai iesim ar šo vienu. Char * buferis, lai to, ko Vai man šeit? STUDENT 31: Buffer. Jason Hirschhorn: Buffer. Buferis ir pointers uz char. Un šajā vietā, mēs esam liekot viens baits kaut ko mēs esam lasīt. Jā. Avi. AVI: Just a quick jautājumu. Vai jūs vēlaties, lai malloc buferi? Jason Hirschhorn: Kurš var atbildētu uz šo jautājumu? STUDENT 32: Nu, tas nav īsti punkts, lai kaut ko tieši tagad, tāpēc - Jason Hirschhorn: Bet vai mēs gribam malloc to? STUDENT 32: Ja tu būtu to darīt, ka veidā, es domāju, jā, jo jūs nepieciešams kaut kur, lai tā norādītu uz. Jason Hirschhorn: Vai mēs ir malloc to? STUDENT 33: Ja jūs gatavojas izmantot ārpus cilpa. Jason Hirschhorn: Vai mēs gatavojamies izmantot ārpus no cilpas? STUDENT 34: Jā. STUDENT 35: Pagaidiet. Vai mēs gribam to atzīt to cilpa aiz robežām? Jason Hirschhorn: Tāpēc es domāju, ka mums ir daži pseido kamēr cilpa, ka mēs esam mēģina izdomāt, ka mēs neesam gotten vēl. Mums nav nepieciešams malloc to. Mēs esam darbojas galvenokārt, tas ir tikai gatavojas jāizmanto iekšā šo cilpu. Tas nav nepieciešams pastāvēt ārpus tā. Tātad, tas var būt vietējā mainīgs. Jums ir rādītāju uz vietējā mainīgs. STUDENT 36: Bet tas nav norādot uz kaut ko. Jason Hirschhorn: Nē, tas nav inicializēts neko. Bet mēs neesam gatavojas izmantot to arī. Mēs ejam, lai kaut ko tas pirmo reizi mēs to izmantojam. Tāpēc, ka, šķiet OK. Tāpēc mums nav nepieciešams malloc šeit. Un es domāju, ka tas ir OK, kā ir. OK. Mums ir fread līniju. Darīsim nākamo rindiņu. Ja mēs gribam rakstīt uz failu, kas ir labs funkciju izmantot, lai to izdarītu? STUDENT 37: fwrite? STUDENT 38: fprintf? Jason Hirschhorn: fprintf ir viens. Kas ir vēl viens? STUDENT 39: fwrite. Jason Hirschhorn: fwrite. Un par mūsu mērķiem, fwrite, ko mēs šeit redzējām, ir iespējams, labāka izvēle. Tas aizņem četrus argumentus, kā arī. Nishant, jūs varat dot mani argumenti? Nishant: Pirmais, kas notiek būt vienkārši buffer. Jason Hirschhorn: OK. Nishant: Otrais ir tikai būs 1. Trešā būs 1. Un ceturtais būs DST. Jason Hirschhorn: Vai kāds ir kādi jautājumi par šo līniju? Kas izskatās labi. OK. Tāpēc tagad izskatās, ka viena lieta mums esi trūkst - patiesībā, pieņemsim rakstiet šī pēdējā rindā. Aizveriet failus. Kas var pabeigt mūs rakstiski šīs pēdējās divas rindas? Jā. Atvainojiet, kāds ir tavs vārds? LUCY: Lucy. Jason Hirschhorn: Lucy. LUCY: fclose src un pēc tam fclose galamērķi. Jason Hirschhorn: fclose, open paren, SRC, close paren, semikols. Un fclose - yeah? LUCY: Atvērt iekavas, DST un tad semikolu. Jason Hirschhorn: Great. Un ko man vajadzētu iekļaut beigās? LUCY: Atgriešanās 0. Jason Hirschhorn: Atgriešanās 0. Vai man ir? Tikai jautājums. Vai mums ir jāiekļauj atpakaļ 0? VAIRĀKAS STUDENTIEM: Nē. Jason Hirschhorn: Nē. Galvenais tas automātiski Ja jums līdz beigām. Bet es domāju, ka tas ir jauki iekļaut to skaidri. Jo īpaši, ja mēs esam atpakaļ otru lietas, visā programmas laikā. OK. Tas ir tas, ko mēs esam trūkst - KAMĒR ko? Kas var domāt par dažiem - ir kāda jēga par to, kas lietas varētu iet tur? Pat ja tas ir tikai kaut pseudocode tāpat kā valoda? Ko mēs tiešām - ko Vai mēs gribam, lai iet līdz? Jā, Lucy. LUCY: faila beigas. Jason Hirschhorn: faila beigas. Tātad, ko jūs saprotat ar beigām failu? LUCY: Kad jūs sasniedzat faila beigas, stop. Jason Hirschhorn: OK. Tātad, kad mēs sasniedzam beigām failu. Kā mēs zinām, kad mēs esam sasnieguši faila beigas? STUDENT 40: Es domāju, ka buferis tiks iestatīts uz NULL. STUDENT 41: Buffer ir deklarēta iekšpusē cilpa. Jason Hirschhorn: Tātad jūs domājat, ka buferis tiks iestatīts uz NULL. Kāpēc buferis tiks iestatīts uz null? STUDENT 40: Jo, kad jūs fread, jūs mēģināt likt nekas buferī. Jason Hirschhorn: OK. Tātad jūs domājat fread - kad mēs esam sasnieguši fails, kas ir fread gatavojas darīt? Es domāju, ka jautājums mums ir izdomāt. Kāda fread darīt? Vai tas likts Null buferī, vai tas dara kaut ko citu? Kā mēs varam izdomāt, ko tā dara? STUDENT 42: Man. Jason Hirschhorn: Man. Tātad, pieņemsim apskatīt šeit. Atgriešanās vērtību. Par panākumiem, fread un fwrite atpakaļ vienību skaits lasīt vai rakstīto. Šis skaits ir vienāds baitu skaitu nodot tikai tad, ja izmērs ir 1. Ja rodas kļūda, vai beigās fails ir sasniegts, atgriešanās vērtība ir īss postenis skaits vai 0. Tātad, par mūsu mērķiem, ja fread sasniedz faila beigas, un skan no faila beigas, tur nekas pa kreisi izlasīt, kas tas notiek, lai atgrieztos? STUDENT 43: Zero? Jason Hirschhorn: Kas? STUDENT 43: Zero? Jason Hirschhorn: Zero. Tas ir gatavojas atgriezties nulle. Tātad mēs zinām, ka fread, kad mēs esam sasnieguši faila, kas notiek atgriezties nulle. Kā mēs varam izmantot šo, lai mūsu labā? AVI: Jūs varat deklarēt mainīgo ārpuses cilpas sauc pārbaude. Ja pārbaude ir vienāds - tagad - vienu. Jason Hirschhorn: OK. AVI: Un tad jūs varat likt IF paziņojumu uzreiz pēc fread sakot, ja fread vienāds ar nulli - nē. Jason Hirschhorn: Kurš var palīdzēt Avi out? AVI: Kas ir vērtība atpakaļ fread? Jason Hirschhorn: Mēs tikko piegāja to. AVI: Kā jūs to pārstāv? Jason Hirschhorn: Tātad tas atgriežas - pieņemsim meklēt šeit - tas atgriež size_t, kas būtībā vesels skaitlis. Tāpēc tas atgriež skaitlim. Un mūsu gadījumā, tā būs atgriezties 1 vai 0 - 1, ja to lasīt vienu - viens baits, un 0, ja mēs esam sasnieguši. Tātad, ja fread - yeah? STUDENT 45: Nevar jūs vienkārši ielieciet pilnu fread (buffer, 1, 1, SRC) uz kamēr cilpa? Jason Hirschhorn: Tātad jūs ierosināt darot to vērā tur? [interposing BALSIS] Jason Hirschhorn: Pagaidi. Tātad, mēs esam atbrīvojot no tā. Tātad jūs ierosināt nodot fread uz tur? Kas būtu mēs arī virzīties Ja jūs vēlaties to darīt? STUDENT 45: buferis ārpuses. Jason Hirschhorn: Mums vajadzētu arī pārvietot to šeit. STUDENT 45: Bet tas, kas pastāvīgi virzīties uz priekšu? [interposing BALSIS] Jason Hirschhorn: OK. Tātad šis ir tas, ko ierosināts Okshar. Mēs veidojam mūsu buferi. Mēs KAMĒR fread, tad mēs fwrite. Domas par šo? STUDENT 46: Mans vienīgais jautājums ir, būtu tā faktiski izpildīt komandu fread? Jason Hirschhorn: Great jautājums. Kad jūs nodot funkciju zvanu iekšpusē stāvoklī, tas, ka funkcija zvans izpildīt? Mēs esam redzējuši piemērus iepriekš. Tiesības? STUDENT 46: OK. Jā. Tāpēc tas izpildīt. Jason Hirschhorn: Mēs esam redzējuši lietas piemēram, ka pirms, kur mēs esam funkcija zvans iekšpusē stāvoklī. Tas, ka funkcija zvans izpildīt? Jā. Tātad atbilde ir jā. Šī funkcija zvans izpildīt. Bet atkal, tas ir tas, ko mēs gribam? Kas ir viens veids, kā mēs varētu izdomāt , ja tas ir tas, ko mēs gribam? VAIRĀKAS STUDENTIEM: Palaist to? Jason Hirschhorn: Mēs varētu palaist to. Taču, pirms mēs to darām, mēs varētu arī iemesls, izmantojot šo. Ja - saka, ka mums ir viens baits ar mūsu failu, mēs sāksim šeit mēs sāksim šo kodu. Tas darbosies. fread atgriezīsies vienu baitu un uzglabāt to buferī. Un tas novērtē līdz 1, taisnība, kad viņš atgriežas 1. Tāpēc, kamēr 1. Vai tas nozīmē, kodu iekšpusē kamēr cilpa veiks? STUDENT 47: Jā. Tā ir taisnība. Jason Hirschhorn: Jā. 1 ir taisnība. Tas nav 0. Tāpēc kodu iekšā šeit izpildīt. Tāpēc mēs rakstīt to. Mēs pāriet atpakaļ uz šo line vēlreiz. Tagad mums ir - mēs beigās mūsu failu. Mēs lasīt no beigām mūsu failu, jo mums bija tikai vienu baitu tajā. Fread atgriež 0, veikali kaut buferī. Es godīgi nezinu, ko tas saglabā buferī. Mēs droši vien varētu uzmeklēt lai redzētu, ko tā dara. Ka es godīgi nezinu. Mēs nezinām, kas rūpējas, ko tas saglabā buferī? Bet tas atgriezīsies 0. Un kamēr 0 izpildīt? KAMĒR 0 neizpildīs. Tātad, tad mēs uz leju šeit. Tāpēc pieņemsim iegūt paceļot roku, ja tas ir kods, mums ir darboties, vai ja jādara izmaiņas vispirms. Tātad, ja jūs domājat, ka - jums ir jābalso. Ja jūs domājat, ka mums vajadzētu palaist šo kodu kā ir, lūdzu, paceliet roku. OK. Ir viens - Vai jums ir jautājums, bažas? Jā. STUDENT 48: Pēc tam, kad mēs virzāmies buferi ārpus cilpas, mēs ir malloc to? Jason Hirschhorn: Great jautājums. Pēc tam, kad mēs virzāmies bufera ārpus cilpa, vai mums ir malloc to? Šī ir joma jautājums. Ja mēs sāktu buferis ārpus šīs cilpas, tas pastāv iekšpusē cilpas? VAIRĀKAS STUDENTIEM: Jā. Jason Hirschhorn: Jā. Aptverot iekšpusē cilpas, un, tiešām, kaut kas zem tā iekšpusē Šā kodeksa, tostarp lietas iekšā šeit. Tāpēc mums nav nepieciešams malloc to. Tā ir vietējā mainīga, un tās darbības joma joprojām ietilpst cilpa. STUDENT 49: Vai mums ir nepieciešams, lai atbrīvotu to? Jason Hirschhorn: Vai mēs ir bezmaksas buferis? STUDENT 49: Jā, ja mums nav malloc. Jason Hirschhorn: Vai mēs ir bezmaksas buferis? Mums nav. Again, tas ir lokāls mainīgais, tāpēc mums nav nepieciešams, lai atbrīvotu to. OK. Let 's redzēt, kas notiek. Tāpēc tas ir uninitialized. Tas bija tas, ko kaut kas Marcus piedāvā ātrāk. Tāpēc mums ir, ka kļūda, mainīgs buferi tiek neinicializētām lietojot šeit. Kā mēs varam noteikt šo? STUDENT 50: malloc to? STUDENT 51: Vienāds NULL? STUDENT 52: Say buferis vienāds NULL. Jason Hirschhorn: OK. Izskatās labi. Mēs esam tagad. Pieņemsim izveidot kaut ko, lai mēģinātu kopēšanu. Tāpēc mums ir mūsu teksta failu. Kā mēs varam palaist šo programmu? Jā. STUDENT 53: Jūs varat darīt dot slash KP, test.txt. Un tad jūs varat nosaukt vēl vienu failu kas tas veikals into. Jason Hirschhorn: OK. Mēs to saucam out.txt. Cool? Seg vaina. Domas par SEG vaina? Tas ir lieliski. Kā mēs varam uzzināt, kur SEG vaina ir? Kas? STUDENT 54: Gdb. Jason Hirschhorn: Gdb. Mēs palaist gdb rakstot gdb dot slīpsvītru, nosaukums mūsu programmā. Nav komandrindas argumentus tur. Mēs ejam, lai uzstādītu lūzuma punktu pie galvenā. Ja es gribu sākt gdb, ko man darīt? STUDENT 55: R. Jason Hirschhorn: R. Un tad ko? STUDENT 55: Argumenti? Jason Hirschhorn: Tad komandrindas argumentus. Apskatīsim. N ir tikai ņemot man pozīcijai. Es iešu līdz Es varu saņemt savu seg vaina. Tur ir mana seg vaina. Tas izskatās fread izraisa mans seg vaina. Es zinu fread izraisīja manu seg vaina, jo tas bija line mēs vienkārši izpildīts. Un vienīgā lieta, kas bija notiek šajā līnijā - divas lietas notiktu. Fread bija iet, un tad mēs bijām darot daži vienlaikus pārbaudot. Es esmu gatavs derēt, ka KAMĒR pārbaude netika rada manu seg vaina. Visticamāk, fread bija izraisot manu seg vaina. Es arī redzu kaut ko šeit, memcopy. Atmiņas kopija. Izklausās pārvietojas atmiņu no vienas vietas uz otru. Izklausās kaut kas notiktu in fread, varbūt daži atmiņa pārvietojas no šejienes līdz šejienei. Iesim caur to vēlreiz. Kā es varu sākt to pār un palaist to no jauna? Jā. STUDENT 56: Vai jums ir nepieciešams, lai Ampersand pirms buferis? Jason Hirschhorn: So Ampersand pirms bufera dotu man adresi buferis, kas ir char *. Pieņemsim palaist caur šo vēl vienu reizi. Kā es varu palaist caur to vēl vienu reizi? STUDENT 57: Vai jūs vienkārši tipa palaist vēlreiz? Jason Hirschhorn: Vienkārši ierakstiet palaist vēlreiz. Tāpēc mēs nebrauksim izpildīt šo līniju. Tāpēc buferis ir NULL rādītājs. Labot? Tā ir vērsta uz - redzēsim. Ja mums ir mūsu - izdarīt ātru priekšstatu par to. Var ikviens redzētu, Es rakstīt vairāk nekā šeit? Tātad kaudze, mēs esam vietējā mainīga un to sauc bufera, un tas ir rādītājs, lai palijas. Kas adrese ir tas char pie? STUDENT 58: 0x0. Jason Hirschhorn: Right. Tas ir, kas tas ir. Šeit, iekšā buferī, tiek glabāti 0x0. Tas ir tas, ko mēs esam - uzstādīšanas mums ir tiesības tagad. Tātad šī pozīcija, fread, liek kaut ko No avota, kur? Šajā kastē vai šajā ailē? Kas kastē? Left kastē vai pareizo izvēli? Šīs tiesības box. No tā izriet, rādītāju, un liek to šeit. Kad mēs cenšamies un pieskārienu atmiņa ir Atrašanās vieta kartē 0, ko mēs saņemam? Segmentāciju vaina. Tas ir kļūda, mums ir tiesības tagad. Jā. STUDENT 59: Vai nav jums ir likt zvaigžņu buferi? Vai nē? Par fread? Jason Hirschhorn: So fread aizņem rādītāju. Tāpēc tas iet buferī. Un tad tas būs de-atskaites tas kaut kur iekšā fread. Bet atkal, mēs redzējām, tas aizņem rādītāju. Mums nav nepieciešams nodot zvaigzne buferi. Tas būtu iet tas kāda ir šeit. Un tas, iespējams, dod mums kļūdu jo mēs esam de norādes to. Tiesības? Kad mēs de-reference šo rādītāju, kad Mēs cenšamies, lai piekļūtu šo vietu, mēs esam kļūst kļūda - Mūsu segmentāciju vaina. Tātad - Ups. Mēs ejam, lai izietu no gdb. Mūsu pozīcija - mūsu problēma - ir labi šeit uz šīs līnijas. Un tā ir problēma, jo Šī līnija. Kā mēs varam izveidot lodziņu, kas Ir pieejams fread. Tiesības? Mums ir nepieciešams, lai izveidotu lodziņu, kas ir viens baitu liels, izmērs char. Bet mums ir nepieciešams, ka kaste ir jābūt pieejamai kad šī funkcija izpilda. Tātad, ja - yeah. Jebkuras idejas? STUDENT 60: Vienkārši kā jebkurš izlases raksturs. Just do Char buferis vienāds raksturs. Un tad, kad jums ir buferis tur - Jason Hirschhorn: Pagaidiet. Char buferis? Līdz ar to nav zvaigzne? STUDENT 60: Jā. Izņemiet zvaigzni. Vienāds izlases raksturs. Jason Hirschhorn: OK. Tāpēc man vienu. STUDENT 60: Like vai kaut ko. Un tad, kad jums ir buferis tur, jūs izmantojat - STUDENT 61: Star? Ak nē, Ampersand. STUDENT 60: Izmantojiet aizvieto & zīmes. Jason Hirschhorn: OK. Un ko par to, kas fwrite? STUDENT 60: Izmantojiet aizvieto & zīmes vēlreiz. Jason Hirschhorn: Nu labi. Tātad jūsu ideja ir, mēs izveidojam char un kaut ko tajā, un pēc tam rakstiet uz šo char. STUDENT 60: Jā. Jason Hirschhorn: Kas cilvēki domā? STUDENT 62: Tas ir spirālveida. Jason Hirschhorn: OK. Pieņemsim izdarīt to ārā. Tāpēc šoreiz, es esmu gatavojas izdarīt šo sarkanā steku šeit, un tad mēs būs - ooh! Piedodiet. Tāpēc šoreiz mums ir kaut kas ko sauc bufera, un tas ir uz grēdas. Labot? Un mēs esam ietaupot tajā ir, sākumā. Tad mums ir mūsu zvanu fread. Kas fread tas ir nepieciešams, baitu no mūsu failu un liek to kaut kur. Tas liek to neatkarīgi lieta ir norādot uz. Nu, pirms mums bija šo adresi - 0x0. Tagad to adrese mums ir? STUDENT 63: Kāds adrese buferis ir. Jason Hirschhorn: Neatkarīgi adrese buferis ir. Tas droši vien būs kaut kā tā. Iespējams, gatavojas sākt ar B un f, un tam ir seši citi heksadecimālcipariem. Nav svarīgi. Daži adresi. Un mēs esam garām šo adresi iekšā Un mēs ejam, lai mūsu vienu baitu lieta šajā adresē. Tāpēc mēs esam gatavojas nodot savu vienu baitu lieta iekšā šeit. Un tad mēs ejam, lai rakstītu no kas ir kādreiz iekšā šeit. Vai kāds ir kādi jautājumi par to? Kas domā, šis kods darbosies? Paaugstināt savu roku, ja jūs domājat, ka šis kods darbosies. Jums ir ieņemt nostāju. Un kurš domā, šis kods nestrādās? Paceliet roku. Visi citi ir paaugstināt savu roku. OK. Michael, kur jūs stāv? MICHAEL: Es nevaru izlemt. Veida vidū. Jason Hirschhorn: Tu esi vidū. Izvēlēties vienu. MICHAEL: Es ticu un saka, ka tas darbosies. Jason Hirschhorn: OK. Jums ir ticība, un saka, ka tas darbojas? Kas notika? [interposing BALSIS] Jason Hirschhorn: Nav seg vaina. Kā mēs varam pārbaudīt, lai redzētu, vai divas lietas ir vienādi? Divi faili ir vienādi. STUDENT 64: Diff. Jason Hirschhorn: Diff. Diff pārbaudes atšķirībām starp divi faili, un, ja tas atgriež nekas, viņi ir identiski. Un, ja mēs atvērt, mēs saņemt mūsu failu. Tā, ka bija pareizs risinājums. Pieņemsim atskatīties uz to vēl vienu reizi. Mēs faktiski nav pat ir nepieciešams, lai sāktu to. Tas, iespējams, izskatīsies mazliet tīrāku, ja jums nav likts kaut izlases tur. Punkts ir, jums nepieciešams, lai izveidotu dažas vietas, lai saglabātu kaut ko no fread un veikt kaut ko no fwrite. Un tas, ka lieta bija jābūt vai nu vietējā mainīgo kaudze - tu varētu esam malloc'd dažas vietas. Lai mēs patiešām varētu būt rakstīts malloc šeit, un kas būtu strādājuši. Un tad mēs būtu glabāšanai mūsu lietas kaut kur uz kaudzes. Bet tas ir patiesībā, iespējams, visvairāk elegants risinājums. Just izveidot dažas vietas uz skursteņa lai šīs lietas iet. Man būtu divi citi komentāri. Ja tu būtu veikt pagriezienu šajā, un Tad get ieguva par to, mani komentāri varētu būt šādi. Šie 1 ir šeit, pie manis, meklēt piemēram, burvju numuru. Šī 1, attiecībā uz fread, jēga. Tas ir vairākas lietas, lasīt vai rakstīt. Bet tas viens tieši šeit vajadzētu iespējams, būs kaut kas cits. Tātad, kas ir viens risinājums? STUDENT 65: lielums baitu. Jason Hirschhorn: piemēram, ka? STUDENT 65: lielums char. Jason Hirschhorn: lielums char. Jā, baitu nav veids. Tā lielums rakstur darbu. Mēs varētu būt, augšā mūsu kods, # definēts to. Sauc kaut BYTE un tas tiešām char. Patiesībā, vēl labāka pieeja varētu būt šī - UINT. Kāds zina, kas tas ir? Piedodiet. Man to atpakaļ. Pagaidiet, nē. Kādā veidā tas iet? Kāds zina, kas tas ir? Jā. STUDENT 67: paredzēts, lai palīdzētu standartizēt pāri sistēmas lietām, kas ir - tāpat neparakstītu integers kas ir 8 baiti? Jason Hirschhorn: Tas ir tieši labi. Uz dažādām mašīnām, lielums char - parasti nav char. Simboli parasti ir viens baits. Bet lielums citu datu tipu ir dažādi izmēri uz 32 bitu mašīna salīdzinot ar 64-bitu mašīna. Uint8_t vienmēr ir 8 biti - vienmēr ir viens baits. Un man ir nepieciešams, lai iekļautu, ka Standarta int header failu. Tāpēc tagad, tas, iespējams, ir Labākais veids, kā rakstīt šo kodu. Tāpēc es varu atbrīvoties no burvju numuru. Un es arī ir daudz loģiskāk rakstiet uz bufera. Tas ir ne tikai char, tas ir baitu, kas ir tas, ko mēs sagaidām, ka tā ir. Un šeit mēs esam patiesībā bijis nedaudz stingrāku. Mēs esam ne aicinot to char, kas - varbūt, kas zina - var būt atšķirīgs lielums uz dažādām mašīnām. Mēs faktiski sakot, tas ir tieši tas, vienu baitu, vienmēr, vienalga ko. Un, ja mēs skatāmies šeit, mēs cp. Uh-oh. Kas notika? STUDENT 68: Tas varētu ieslēgt. Jason Hirschhorn: Kas? STUDENT 69: Vai tas ir? STUDENT 70: Tu nav definēt kā sava veida. STUDENT 71: Bet tas būtu jādefinē standartā. STUDENT 72: Kas notiek? STUDENT 73: jādefinē būt visas cepures? Jason Hirschhorn: Tātad, tas nav # definēt. Patiesībā, šajā gadījumā, es esmu gatavojas izmantot typedef. Tāpēc, ka mēs izmantojam to kā tipa vienā vietā. Tātad šajā gadījumā mēs tiešām gribam, lai typedef, piemēram, mēs esam drukāšanas jauna veida baits, un tas ir būtībā šis. Tas ir nedaudz savādāka nekā # definēt. Un tagad, mūsu kods strādā perfekti. Tātad, atkal, # definēt notiek kaut kas, aizstāj to visur ar cita lieta. Tas ir tikai makro - stenogrāfija atbrīvoties no burvju numuru. Taču šajā gadījumā, jo mēs izmantojot to kā sava veida - tieši šeit - , lai tas darbotos, mums vajag līdz typedef kāds baits ir. Un mēs esam nosakot to tieši šeit. Tas nav struktūrai, tas ir faktiski tikai absolūtā veselā. Tas ir viens baitu garš. Šis kods būs pieejams tiešsaistē, un Jums visiem ir jābūt to tieši tagad. Tāpēc mums ir - perfect - 13 minūtes pa kreisi, lai dotos vairāk problēmu noteikts 5. Es gribu staigāt pa copy.c kopā, un tad mēs runāsim īsi par pārējām daļām Problēmas noteikti. Tāpēc ļaujiet man uzvilkt copy.c. Un cool lieta ir, mēs esam patiesībā jau rakstīts daudz šo kodu. Kods mēs rakstījām burtiski tikko iznāca šeit, kad es biju rakstot šo par savu. Bet tas ir copy.c, veido pamatu pirmajās divās daļās problēma noteikti whodunit.c, kas Jums ir nepieciešams, lai rakstītu, un resize.c. Recover.c, kas ir trešais un pēdējais daļa no problēmas, kas, nav balstīta off par šo failu. Jūs esat dodas uz nepieciešamību rakstīt šo failu, mēs jums veidni, kas failu, bet tas nav nekas darīt ar copy.c. Bet tāpēc, ka copy.c ir pamats pirmās divas daļas, mēs ejam staigāt pa to tagad, tāpēc jums ir labu sajūtu par to, ko tā dara. Un komentārus sniegt dažas no tā prom. Mēs esam jau rakstīts daži par to. Pirmkārt, mēs esam pārliecinoties mēs trīs argumentus. Tālāk, mēs atcerēties faila nosaukumu. Tāpēc mēs izlaidis šo soli, ja mēs kodēti mūsu lieta - kad mūsu cp. Bet šeit, viņi padarot tas mazliet tīrāks. Viņi pārbaudes, lai pārliecinātos, ka abi faili ir laba, papildus atverot tos. Mēs rakstījām visu šo kodu tikai tagad, tāpēc es esmu nav gatavojas pakavēties pie šo kodu. Nākamais ir daži sīkumi, kas ir raksturīgas veidi failu mēs esam, izmantojot, kas ir bitkartes failus. Bitmap failus ir dažas metadati saistīts ar tiem. Tātad pirmais pāris baitu pastāstīt par failu. Tie nav krāsas pikseļu šajā attēlā. Viņi pastāstīs par failu. Un, ja jūs lasīt caur problēmu kopumu, Jums būs daudz vairāk informācijas par kāda veida metadatu struktūru ir iekļauti ar bitkartes. Bet tas ir iemesls, kāpēc mums ir šī pirmā kopumu - šo kodu šeit. Mēs lasām metadatus - divi gabali metadatu - failu header un info galvenes. Un mēs pārbaudīt dažas tā daļas, lai pārliecinieties, ka tā ir taisnība, bitkartes failu pirms turpināt. Un atkal, tie ir informācija mums nav nepieciešams iedziļināties tagad. Ja jums izlasīt problēmu kopumu, jūs saprotat šos. Long stāsts īss, tie ir tikai saku, tas ir bitmap file, un apstiprinot, ka. Tālāk, mēs esam rakstiski tiem uz File. Mēs redzam, ka šeit. Mēs rakstām, lai out rādītāju. Tālāk, mēs esam nosakot polsterējums. Tātad vēlreiz, kā tas ir īpatnība, ar bitmap fails, dažas līnijas ietver polsterējums beigās. Un, ja jūs lasīt caur problēmu kopumu, jūs varēsiet uzzināt vairāk par polsterējumu. Tā ir formula, lai atrastu polsterējums. Svarīgi atcerēties - mainot izmēru bitkarte failu, polsterējums izmaiņas. Mainot lielumu failu, polsterējums izmaiņas. Tas nekad nebūs lielāka par 3 - tas būs no 0 līdz 3, ieskaitot. Bet, ja jūs mainīt izmēru kaut ko, tad apdare izmaiņas. Ja man ir tikai vienu pikseli šajā rindā, es vajag trīs baiti polsterējumu, jo katra rinda ir jābūt dalās ar četrām baiti ilgi bitkartes failu. Bet, ja es dubultā to, lai iet no viena pikseļa līdz diviem pikseli, kas katrs teiksim, ir baitu, tad man ir nepieciešams divi baiti polsterējuma, lai padarītu , kas ir vienāds ar četri. Tātad, kad es mainīt lielumu kaut, Man vajag mainīt summu polsterējumu esmu. Vai tas ir jēga, lai visiem? Tālāk, mēs atkārtot katrā rindā, vai caur visiem rindām. Un tad mēs atkārtot, izmantojot katra kolonna katrā rindā. Mēs ārstējot šo bitmap patīk režģis, kā mēs esam apstrādāti valde 15. Tāpat kā mēs atrisinājām ķieģeļiem, kad mēs uzdrukāts uz ekrāna. Režģis rindās un kolonnās. Tad - mēs redzējām šo. Mēs faktiski tikai kodēta šo. Mēs izveidojām dažas pagaidu uzglabāšanu. Mēs lasām tur, un pēc tam mēs rakstām to ārā. Tas ir tieši tas, ko mēs tikko izdarījām. Tālāk, jo es teicu, katra līnija beidzas kādā polsterējumu, mēs izlaist šo polsterējumu - vecās polsterējums. Un tad mēs pievienot to atpakaļ. Šajā gadījumā, mēs veidojot pats precīzu faila. Mēs esam tikai kopējot to. Tāpēc šī līnija ir sava veida dumjš. Mēs varētu burtiski tikko nodot polsterējums iekšā Bet, ja jūs maināt faila izmēru, Vai jūs joprojām vēlaties šo līniju? Tātad, ja mēs mainītu izmēru failu, mēs joprojām gribam, lai izlaistu pār veco polsterējumu? STUDENT 74: Jā. Jason Hirschhorn: Tātad mēs darām. Tāpēc Tas atkal piedāvājumus ar avota failu. Mums nerūp polsterējumu no avota faila. Mēs vēlamies, lai dotos uz nākamo rindiņu. Bet mums nav vienkārši likt atpakaļ vecais summu polsterējumu. Mums ir nepieciešams, lai atpakaļ Jaunā summa polsterējumu. Tad, kad mēs esam mainot izmēru failu, mēs joprojām gribam izlaist polsterējums vecajā failā - ko mēs esam lasījums no. Bet tas, ko mēs rakstām, lai mēs ejam kas nepieciešams, lai atkal daži atšķiras skaits polsterējumu, kas mēs esam noteikuši. Jā. STUDENT 75: no šīm divām kārtība līnijas nav svarīgi, vai ne? Jo jūs esat apstrādes dažādi faili. Jason Hirschhorn: Tieši tā. No šīm divām līnijām kārtībā nav svarīgi. Mēs rakstīt šo līniju. Tas ir šeit, lai failu mēs esam rakstiski. Tas ir svarīgi, lai mēs iegūtu tiesības summu polsterējumu. Tas ir, lai risinātu ar failu. Mēs gribam izlaist tiesības pār polsterējumu. Mēs nevēlamies, lai lasītu - ja mēs lasāt baitu laikā, mēs nav jārūpējas par šiem polsterējums baitu. Mēs vēlamies, lai pārietu uz nākamo rindiņu. Visbeidzot, tāpat kā Lucy deva mums, mēs cieši failus un atgriezties 0. Tāpēc tas ir copy.c. Un mēs faktiski wrote - mēs pavadījām lielāko daļu sadaļā rakstot šo, būtībā. Veicāt šo. Tāpēc cerams, jums ir laba humora par to, kas notiek šeit. Liela atšķirība, godīgi, ir tikai šī pirmā daļa, kas nodarbojas ar īpatnības bitkartes failus. Tāpēc man ir kā mana nākamo slaidu, kas mums jādara? Nu, pieņemsim domāt par detektīvromāns. Un kāds, kas lasa caur problēma noteikt, ko mēs jādara, detektīvromāns? Vienkārši. Aleja. ALEJA: Vai jūs izņemt daļu par katru pikseli, kas apzīmē sarkanā krāsā. Un tad - veida? Jason Hirschhorn: OK. Tāpēc izņemt daļu katra pikseļu, kas apzīmē sarkanā krāsā. Tas ir tuvu, bet ne visi no tā. STUDENT 76: Nu, tur ir dažādi veidi, kā to darīt. Jason Hirschhorn: OK. Dodiet man vienā virzienā. STUDENT 76: Izņemiet visus sarkans, un tad uzsvērt zilā un zaļā krāsā. Jason Hirschhorn: OK. Tātad, ņemot vērā, ka šie abi veidi - tas izklausās, mēs arī tā pikseļu, tā ir sarkanā, zilā un zaļā līmeni. Mēs vēlamies, lai mainītu relatīvo līmeni sarkanā, zilā un zaļā krāsā, atkarībā no šajā pikseļu. Ja šajā kodeksā būtu mēs mainām relatīvais sarkanā, zilā un zaļā krāsā līmenis konkrētā pikseļu. Pēc tam, kad mēs esam to izlasītu - pirms mēs rakstīt? Iedodiet man līnijas numuru. VAIRĀKAS STUDENTIEM: 83. Jason Hirschhorn: 83. Tik labi šeit. Par detektīvromāns, kodu, jums ir nepieciešams, lai rakstīt, ja visi iet labi tur. Un tas ir tikai kods jums ir nepieciešams, lai rakstītu. Jo, kā mēs dzirdējām, viss, kas jums ir nepieciešams, lai jādara, ir mainīt šos relatīvo zils, sarkanā un zaļā līmeņi no katru pikseli. Jūs esat lasīt to, un tagad jūs esat gatavojas rakstīt to ārā. Kā es varu iegūt - ja man ir šī lieta sauc triple, tieši šeit, un tas ir tipa RGBTRIPLE - labi, ja mēs izskatījās bmp.h, kas ir RGBTRIPLE? STUDENT 77: Tas struktūrai. Jason Hirschhorn: RGBTRIPLE ir struktūrai. Mēs redzam, ka tiesības uz leju šeit. Un tāpēc, ja es gribēju, lai piekļūtu, teiksim, sarkans līmenis struktūrai, kā es varu piekļūt sarkano līmeni šai struktūrai? [KLASE murmina] STUDENT 78: RGBTRIPLE.rgbtred? Jason Hirschhorn: Vai tas ir pareizi? STUDENT 79: Būtu triple dot, nevis RGBTRIPLE dot? Jason Hirschhorn: Triple. Triple ir vietējās mainīgais, tāpēc šeit, tur nav norādes šeit. Tāpēc mēs tikai izmantot dot apzīmējumu. Tas dod man līmeni sarkanā krāsā. Ja es vēlos to mainīt, es tikai noteikti ir vienāds ar kaut ko citu. Tātad vēlreiz, šī līnija kodu piekļūst šis mainīgais iekšā šo struct, un mēs varam noteikt to, lai kaut ko jaunu. Tātad detektīvromāns, atkal, tas ir, Būtībā, kas mums jādara. Ļoti vienkārši. Vienkārši mainīt dažus relatīvo līmeni, un tas ir, ja šis kods iet. Izmērus, no otras puses, ir mazliet trickier. Patiesībā, mainīt izmērus, iespējams, sarežģītākajiem daļa no šīs problēmas noteikti. Mums ir trīs minūtes, lai iet pār to. Bet atkal, mēs esam jau rakstīts lielākā daļa šo kodu, lai mēs būtu diezgan pazīstams. Kas ir dažas lietas, ko mēs vēlamies darīt, mainīt, ja esat lasīt vairāk problēma, kas? Ja jums dot viņiem man, mēs var runāt par tiem. Kas ir dažas lietas, ko mēs vēlamies darīt? STUDENT 80: Vertikāli - tāpēc jums ir horizontāli mainīt to, bet vertikāli mainīt tā izmēru, kā arī? Jason Hirschhorn: Tātad, ja mēs esam dota pikseļu, un mēs vēlamies, lai mainītu to, Faktors, saskaņā ar diviem, tagad ir jābūt mainīti horizontāli un mainīti vertikāli. Vai tas ir jēga? Jā. Tātad tas ir iespējams lielākais izaicinājums. Un mēs runājam par to, ka pēc sek. Jā. STUDENT 81: Kā es domāju par to bija jums nepieciešams izdrukāt out - Jason Hirschhorn: Pagaidiet. Nav pateikt mums, ko jūs. Mēs ejam runāt loģiku. STUDENT 81: OK. Kāds bija jautājums? Jason Hirschhorn: Jūs vienkārši izvirzīja savu roku. Nebija ne runas. Ļaujiet man prezentēt to. Ļaujiet man tikai apspriest šo īsi. Tāpēc mēs esam viens pikselis, mēs vēlamies atkārtot to, gan horizontāli, gan vertikāli. Tik ideāli, ko mēs darīt, šeit ir, mēs lasīt mūsu pikseļu, mēs rakstām to Tomēr daudzas reizes. Bet tad mums ir triks šeit, jo tad mēs gribam, lai pārietu uz Nākamais līnija un rakstīt to pie sākas nākamā līnijas. Tātad, ja mēs gribam atkārtot gan horizontāli un vertikāli, kas ir Viens labs veids, kā to darīt - viena laba, lai gan to darīt? Tāpēc mums nav nepieciešams pastāvīgi meklēt ap mūsu failu, lai novietotu lietas. Šis jautājums, iespējams, nav loģiski, bet es domāju, ka atbildēt uz to palīdzēs. STUDENT 82: izveidot masīvu? Jason Hirschhorn: Tātad, pieņemsim domāt katra faila kā kārtas. Padomāsim ziņā rindās. Ja mums ir mūsu pirmo rindu no mūsu mazo attēlu, mēs varam padarīt šo rindu uz lielā rindā no lielu attēlu, un tad atkārtot, ka rindas tomēr Daudzas reizes tas ir nepieciešams atkārtot, nevis iet pixel by pixel, kas izpaužas mulsinoši, kad nodarbojas ar failiem. Jo, ja mums bija - Es skrienu no kosmosa. Ja tas ir mūsu failu, un mums ir, ka viens pikseļu tur, un mēs vēlamies, lai tā labi tur, mums joprojām ir dažas lietas, kas nepieciešams, lai iet tur, kad mēs esam rakstīšanas un radot mūsu jaunu failu - Mūsu failu, kas ir divreiz lielāka. Bet tas ir tiešām grūti ar failu funkcijas izlaist ap jaunām līnijām piemēram, ka, un tad doties atpakaļ šeit un nodot lietas tur. Tas ir gandrīz neiespējami kaut ko darīt piemēram, ka, ja tas ir jēga. Tātad, ja mēs domājam ziņā rindās, mēs varam veikt mūsu rindas, un tad ielieciet to - atkārtot rindas vertikāli. Un tas, kā mēs galā ar izmēru vertikāli, nevis horizontāli. Tas bija sava veida ātri, un nedaudz mulsinoši. Diemžēl mūsu laiks ir beidzies. Es stāvēt ārpus tiem no jums, šeit, kas ir jautājumi par Problēma komplekts, ieskaitot atgūt. Tā ļauj atlikt tagad. Un atkal, ja jums ir kādi jautājumi, mēs varam tērzēt ārā.