JASON Hirschhorn: Xoş gəlmisiniz, Həftənin 6 hər kəs. Mən də diri bütün görmək üçün xoşbəxtəm və Quiz 0 sonra, çünki bilirik ki, bir az kobud idi. Amma şükürlər olsun ki, bütün olduqca yaxşı idi. Və belə ki, gözəldir. Siz mənim bölməsində edirsinizsə, mən ən təqdim etdik Siz artıq sınavlar geri. Siz bir neçə, Mən cavab alıram sinif sonra. Və uzadılması tələbə və əgər geri viktorina almadınızsa hələ, sizin TF yəqin ki, onun üzərində işləyir və grading və onu geri almaq olacaq sizə qısa. Olan Belə ki, mənim məsləhət tələbələr indi seyr - ümid yaşayır - Mən sizin viktorina olacaq qısa həmçinin. Aşağıdakı kimi bizim bu gün üçün gündəmdə. Birincisi, biz bir artıq getmək olacaq CS50 sizə verir ki, resursları. Biz növbəti Quiz 0 artıq getmək, və edirik Mən hər hansı bir sual heç cavab olacaq xüsusi problemləri haqqında var. Və sonra, biz artıq davam edəcək fayl I / O və problem 5 seçin. Bu son iki mövzu olacaq hissəsinin toplu bu gün. Mən kimi hər həftə bu siyahısını qoymaq bütün, lakin əsas xatırlatma bölümünde, biz yalnız 90 dəqiqə var - biz hər şeyi əhatə etmək mümkün deyil ki, mən Siz uşaqlar üçün əhatə üçün sevgi olardı. Amma biz üçün ehtiyatların bir ton var Bildiyiniz almaq kimi sizə cəlb etmək vasitəsilə material və iş Sizin problem edir. Mən online bir mətn var ki, öyüd-nəsihət Əgər doldurmaq üçün sizin üçün qurmaq qutusu, Mənim üçün hər hansı bir Əlaqə var, müsbət və həm də bölmə haqqında, konstruktiv. Bu URL sağ aşağı burada yerləşir. Əgər hər hansı bir varsa, bir an edin Əlaqə, olub bölmə zamanı, və ya sonra, və ya sonra video izləmək online, mənə geribildirim. Mən, həqiqətən, hər hansı bir və bütün üçün təşəkkür edirik. Mən kiçik söhbət malik olduğunuz mənim bir çox həftə ərzində tələbələri - I əl kimi geri sınavlar, haqqında söhbət Əlbəttə ki, siz yapýyorsun necə görüb. Və bir mövzu üzərində gəlmək və üzərində söhbət in - xüsusi - problem edir. Mən ki, mövzu şəkilində var indi board. Əsasən, bir fərq var ki, bir şey dönüş arasında düzgün və bir şey ki, yaxşı edilir. Çoxu fantastik bunu edilmişdir düzgünlüyünə baxımından - Bütün psets 5 və ya 4-. Çoxu alır o zaman bütün. Lakin, yalnız, çünki siz etdiyiniz bir şey doğru var demək deyil kimi zərif bir şey, və ya səmərəli, və ya cleanly sizin kimi onu edə bilərdi. Və nə dizayn - və bir az dərəcəsi, stil - baltalar üçün. Mən sizə bütün basmaqla, və digər TFS edirəm yalnız növbəsində, siz uşaqlar basmaqla olunur doğru, lakin çevirmək ki, hər şeyi yaxşı kodlu olan şeylər. Loops ÜÇÜN lazımsız edir, dəyişənlərin əgər recalculating deyil Siz yoxdur. Məsələn, müəyyən geri problem axtarır 4, haqqında kərpic yerləşdirilməsi ekran, hər satır - bir hər kərpic verilmiş sıra eyni y-koordinat var - Eyni hündürlüyü əlaqələndirmək. Y-koordinasiya etmək lazım deyil ki, belə Daxili daxili hesablanır çox güman ki, istifadə ki, loop ÜÇÜN iç içə ekranda həmin kərpic qoymaq. Bu, yalnız hər hesablanır lazımdır zaman bir sıra işə, və ya bir sıra aşağı köçürülüb. 10 kərpic bir var əgər belə demək satır, hər bir kərpic eyni ola bilər y-koordinatını və y-əlaqələndirmək yalnız hesablanır bilər o bütün bir dəfə. Bu 10 hesablanır lazım deyil dəfə, nə də ki, hesablama ehtiyac faktiki baş funksiyası zəng - yeni gracked funksiyası zəng. Belə ki, bir az çaşdırıcı idi əgər Daha çox ümumi, hər şeyi ki, hər bir zaman baş ehtiyac yoxdur siz olmamalıdır bir ÜZRƏ loop keçmək Bu ÜÇÜN loop daxilində qoymaq və olmamalı Siz getmək hər zaman baş Bu ÜÇÜN loop vasitəsilə. Gördük yaxşı bir dizayn nümunəsidir 15 həftə 3, siz saxlamaq bilər sıfır track. Belə ki, siz board başlamaq zaman saxlamaq - qlobal dəyişən, bəlkə - x və sıfır y-əlaqələndirmək. Və sonra zaman - Sizin hərəkət funksiyası, zaman etmək uğurlu bir addım, siz yeniləmə sıfır yeri. Ki, nə malik sizi xilas edəcək vasitəsilə baxmaq üçün loops üçün iç içə Sizin hərəkət funksiyası hər zaman board və sıfır tapmaq, və ya kafel tapmaq və sonra onun yanında nə yoxlamaq. Bunun yerine, yeri var sıfır, yalnız aşağıda, yuxarıda baxmaq olar və sol və sağ tapmaq üçün aradığınız kafel. Belə ki, biz proqramları baxımından yazı, onlar kifayət qədər böyük heç istəyirik ki, bu dizayn qərarları bəzi həqiqətən mane gedir sizin proqram, və ya, daha yavaş run etmək və ya bəlkə hətta yaddaş tökülmək. Amma biz hələ də uşaqlar məcbur edirik yazmaq kimi zərif və mümkün qədər səmərəli kodu. Belə ki, əgər şeyi yazılı başa əhəmiyyətli dərəcədə daha böyük var ki, daxilində, onlar yaxşı ilə yazılı olacaq doğru olmaqla yanaşı dizayn. Beləliklə, siz bir sıra ki, çıxardıq. Yəni biz aradığınız bir şey var - biz davam edirik bir şey sizə uşaqlar basın. Əgər haqqında hər hansı bir sualınız varsa, Proqram dizayn, çekinmeyin mənə çatmaq, mən xoşbəxt oldum sizin proqram vasitəsilə gəzmək, və dizayn bəzi qeyd siz etdi və bəzi vermək qərarlar etmək üçün necə təkliflər hətta yaxşı dizayn qərarları. Belə ki, biz hərəkət olacaq Quiz 0 söhbət. Biz bunu əvvəl, heç yoxdur haqqında hər hansı bir sualınız nə Mən bu günə qədər əhatə etdik? [Xışıltı KÜY] JASON Hirschhorn: Seven seconds. OK. Bir az Quiz 0 danışaq. Siz ən Quiz 0 geri var. Siz, inşallah deyilsə Siz bir az xatırlayıram. Amma sonra Quiz 0, siz qəbul etdiyiniz əgər da online PDF etmək imkanı var Nümunə həllər. Heç əvvəl hər hansı sualınız varmı biz həftə material daxil jump Quiz 0 xüsusi problem - niyə cavab nə edir? Heç bir şey haqqında səhv edir? Sağ problem var, hətta əgər yalnız mənə bir az izah etmək istəyirəm daha, mən indi bunu xoşbəxtəm. Mən sizə uşaqlar xahiş bəzi ilə hazırlanmış gəlir Quiz 0 əlaqədar düşüncələrini. Belə ki, kim bizə almaq istəyirəm bir sual və ya başladı Quiz 0 haqqında comment? [Kağız xışıltı] JASON Hirschhorn: Not hamı mükəmməl idi. Mən bilirəm [gülür] bəzi suallar olmaq var Quiz 0 haqqında. OK. Bəli. Ompica. OMPICA: sayı 10. JASON Hirschhorn: sayı 10. Hansı sayı 10 oldu? OMPICA: The - JASON Hirschhorn: I haven't - OMPICA: The daxildir - JASON Hirschhorn: sayı 10 səkkiz idi i - i səkkiz yazılı? OMPICA: Bəli. JASON Hirschhorn: OK. Belə ki, başqa bir sual siz ola bilər Mən Uzaqgörən edirəm idi istədi? Cavab yes deyil. Viktorina əvvəl bölməsində, mən soruşdum Sizlərin Sterlinq həm kod və səkkiz i üçün. İkisi də baş viktorina görünür. Belə ki, ümid edirəm ki, siz ödənilmiş ki, diqqət. Idi, onda siz olardı yəqin ki, o iki yaxşı. Amma səkkiz i üçün, biz həqiqətən kodu Bu sinif, lakin bu, təkrar viktorina istədi. Belə ki, almaq şeyi bir neçə i səkkiz kodlaşdırma zaman qeyd. Ilk şey, sual başına idi yoxlamaq üçün lazım ki, əgər string null bərabər idi. Bir neçə adam sonra yoxlamaq üçün çalışdı Proqramda s əgər bracket i idi - ki, belə bir xüsusi xarakter string - null bərabər olmuşdur. Amma null mahiyyətcə, unutmayın - bu düşünmək yaxşı sıfır göstərici kimi null - sıfır bir göstərici - yaddaşında yerde yerləşir daxil bilməz. Belə ki, əgər bir şey, null bərabərdir bu başlatılmadı deyil bilirik ki, və ya orada heç bir şey yoxdur. Belə ki, s, bir char ulduz S bracket i char. Belə ki, null s müqayisə anlamlı lakin s bracket i null. Amma yenə - belə ki, ilk şey idi Siz idi ki, - əmin olun siz həqiqətən bir real simli var. Next, siz vasitəsilə getmək istədi simli hər bir xarakter. Və belə ki, bir s bracket kimi olacaq i, misal üçün, i sizin iterator edir. Və xarakter almaq, və onun faktiki dəyər almaq. Siz bir char kimi saxlanılır, lakin sıfır üçün ASCII dəyəri - bir xarakter kimi sıfır - əslində tam sıfır deyil. Bu siz ki, bəzi digər sayda var ASCII masa bakma. Belə bir yolu düzəltmək üçün - düzəltmək üçün yəqin ki, ən yaxşı yol ki, - bu çıxmaq edir karakter dəyəri - bir xarakter kimi sıfır. Belə ki, minus bir quote, sıfır, başqa bir quote. Yəni siz nə nömrəsi olacaq bir char kimi və bərabər almaq faktiki tam kimi sayı. Və bu yanaşma çox oxşardır insanların bir çox aldı problem Sezar ilə, set 2 və Viginere - o ciphers, zaman onlara fırlanan edilmişdir. Siz bir sıra kimi belə sonra sıfır doqquz, sonra - asılı olaraq Bu son sayında gedir harada - Siz çoxaltmaq lazımdır 10 bir güc tərəfindən. Bəzi insanlar üçün geri köçürülüb ön və fərdi vurulur 10 bir güc tərəfindən nömrəsi. Bəzi insanlar köçürülüb geri ön - və ən yüksək aldı ilk nömrələri sifariş - və bu saxlamaq olardı qlobal counter dəyişən. Və sonra vasitəsilə hər dəfə loop, çoxaltmaq ki, dünya nəhəngi etmək üçün 10 dəyişən counter növbəti char üçün yer. Belə ki, bir az çaşdırıcı idi Mənə board onu yazılı. Amma nümunə həll sizin üçün mövcuddur. Lakin həmin böyük şeylər idi biz aradığınız. Həmçinin əmin hər etmək üçün bir çek fərdi xarakter həqiqətən idi sıfır və doqquz, və arasında xarakter A kimi bəzi digər xarakterli, məsələn. O biz aradığınız şeylər idi ki, söz mövzusu. Ki, sual cavab verirmi? OMPICA: Bəli. JASON Hirschhorn: OK. Hər hansı digər suallar var Quiz 0 haqqında? Nə tərtib haqqında? Hər kəs doğru tərtib? No Bir var idi - [Gülür] Haqqında hər hansı bir sualınız tərtibi prosesi? Wow. [Kağız xışıltı] JASON Hirschhorn: Bəli. Michael. MICHAEL: - təsadüfi sayı 7 mı? JASON Hirschhorn: sayı 7. Sayı 7 təsadüfi tam almaq idi. Əla. Belə ki, bir tam bir və edirik tam b, və bir təsadüfi istəyirəm a və b arasında tam. Biz, həqiqətən, bu barədə yaza bilərsiniz board, çünki bu bir kodu bir line idi - bunu etmək üçün bir yol. Beləliklə, biz bir kimi drand sunulur funksiyası istifadə edə bilər. Və nə drand etmir - Bu seeded edilmişdir fərz - nə qayıtmaq drand edir? MICHAEL: 0.0 ilə 1.0 arasındakı A float. JASON Hirschhorn: A nömrəsi - Bəli. 0 və 1 arasında bir sıra. Və belə ki, biz b və bir var. Və sonra biz təsadüfi sıra 0 və 1 arasında drand bizə verdiyi. Bəzi insanlar b qoymaq üçün cəhd, və ya b minus içəridə bir, və ya bir şey parantez. Yəni onlar o deməkdir ki, Bu funksiya arqumentlər. drand hansı arqumentlər etmir - getString nə kimi hansı arqumentlər deyil. Belə ki, yaxın, yalnız açıq paren var paren - və ki, özü deyil, funksiyası zəng. Və bir sıra verir 0 və 1 arasında. Əlbəttə ki, biz bir sıra var ədəd daxil ola bilər ki, B 10 və 5 əgər, biz, həqiqətən, demək 5 bir sıra ilə bir sıra istəyirəm. Beləliklə, biz nə etmək lazımdır növbəti şey sıra b minus a bu çoxaltmaq. Belə ki vurulur var hərfinin. Və bizə bir sıra verəcəyik bir sıra daxilində. Və xüsusi sıra olan b minus a arasındakı fərq. Və nəhayət, yalnız onu vermək lazımdır - b minus a arasında üçündür demək 5, bizə bir verəcəyik olunur 0-dan 5 nömrəsi. Bir fakt 5 olsa, biz artırmaq lazımdır bu olduğu üçün bu sıra up əslində bir əlavə, ehtimal. Belə ki, məntiq hüququ əldə edir. Və sonra, siz var ki, başqa bir sual? MICHAEL: Xeyr Mən yalnız indi həqiqətən lal hiss. [Gülür] JASON Hirschhorn: Xeyr Həqiqətən lal hiss etməyin. Bir sıra insanlar mübarizə Bu məsələ ilə. Və sonra, digər sual, drand, Siz dedi bir float verir - bir float qaytarır. Amma bu funksiyası həqiqətən istədi bir tam geri etmək üçün. Siz açıq-aşkar bu salmaq lazım deyil bir tam, bu, çünki əməliyyatları bütün a kimi müalicə edəcək float - bir üzən point sayı. Bu iradə kimi - hətta bu halda bir tam, bu iradə doğru vurulur. Bütün vurma işləyəcək. Siz burada salmaq lazım deyil. Əslində, siz onu tökmə olmamalıdır. Yəni ki - Bir sıra tökmə əgər ki, 0 və 1 arasında var - bir təsadüfi sayı bir üzən point - o zaman da belə, yalnız 0 və ya 1 olacaq ki, dəqiq bütün itirmək lazımdır. Amma sonunda, siz geri zaman, avtomatik olaraq alır bir tam kimi geri göndərdi. Beləliklə, siz nə etmək lazım deyil ki, özünüzü tökmə. Belə ki, bu cavab idi ki, sual, sayı 7. Quiz 0 hər hansı digər suallar? Bəli, Annie. ANNIE: biz recursive istifadə edirsiniz - zaman biz iterative loops istifadə edirsiniz? JASON Hirschhorn: zaman istifadə edirsiniz recursive - daha çox ümumiyyətlə, recursion qarşı Pros və Eksiler tskrar yanaşma. Heç bir pro və ya bir con təklif edə bilər? Xahiş edirik? Heç bilməz. Kim bir pro və ya bir con təklif edə bilər? [Kağız xışıltı] TƏLƏBƏ 1: Recursive az kodlaşdırma - az yazaraq? JASON Hirschhorn: Belə ki, ümumiyyətlə, recursion xüsusilə, bir funksiyası - və ya birləşmə kimi alqoritm sort - hansı özü verir bir recursive yanaşma - daha sadə ola bilər recursively kod. Və daha çox mənada recursively bunu. Belə ki, recursion bir pro olacaq. Digər? Bəli? STUDENT 2: recursion Con - Daha çox yaddaş istifadə edir. JASON Hirschhorn: Belə ki, məhz sağ. A recursive funksiyası əlavə davam edəcək yığını yığını çərçivəsində. Siz bir çox fəaliyyət edirik ki, əgər nömrələri, və bu zəng etmək bir çox fəaliyyət, o zaman əlbəttə olacaq isə, daha çox yaddaş tutur tskrar yanaşma yalnız bir qoyacaq , yığını çərçivəsində yığını çünki bütün bir funksiyası çərçivəsində olur. Hər hansı digər lehte ve eksiklikleri? Bəli. STUDENT 3: recursion üçün Pros. Siz müəyyən yoxdur inkişaf neçə dəfə kodu təkrar etmək. Siz müəyyən bir sıra ola bilər Əgər təkrarlamaq lazımdır ki dəfə recursion, daha yaxşıdır, çünki ki, nəticə edir. JASON Hirschhorn: Mən doğru olduğunu düşünürəm. Amma hər iki halda hesab edirəm ki, Siz heç vaxt - yəqin ki, bəzi almaq olardı istifadəçi daxil. Və ya bu funksiya bəzi daxil olardı ki, müəyyən necə bir çox dəfə run lazımdır. Belə ki, ümumiyyətlə, siz ağır kodu verməyəcəklərini - hətta bir yanaşma iterativ - necə çox dəfə loop run lazımdır. Siz idi digər var mı Annie, düşünür? OK. Belə ki, o yəqin ki, iki - ən böyük pro və ən böyük qarşı bir recursive üçün con tskrar yanaşma. OK. Quiz 0 başqa bir şey? Üzrə hərəkət edək. Fayl I / O. Gözəl qısa var Bu həftə fayl I / O ümid edirəm Siz çox seyr etdik dəfə, və heyran. Iş bir çox ki, daxil getdi və mən var Bu insanely faydalı eşitdim. Mən də, bu slide linki daxil halda idi bir bunu 10 dəfə izləmək şansı. Belə ki, biz qısa üzərində getmək üçün gedir açılması və iş üçün böyük tədbirlər faylları, və sonra biz gedir əvvəl bir kodlaşdırma problem dalış Bu problem set araşdıraraq. Belə ki, yenə, mən bu qədər qoymaq gedirəm ekran, amma danışmaq üçün gedirəm biz istəyirik nə haqqında bir dəqiqə fayl ilə burada edirik I/O-- ki, nə deməkdir? Yəni biz yarada deməkdir bizim proqramları, və sonra proqramları var exit, və heç bir təsir etdik Bizim proqram dünya xaricində. Amma biz faylları ilə iş başlamaq zaman - həm də onları oxu və yaradılması onlara - biz bəzi təsir edə bilər Bizim proqram xaricində dünya. Just kimi Microsoft Word mümkün deyil, əgər sonra, hər hansı bir Word sənədləri etmək Microsoft Word, sizin bütün çıxmaq dəfə iş getdi ki, və bu ki, həqiqətən faydasız ola bilər. Biz nəticədə etmək istəyirəm təsir göstərə bilər ki, proqramları yazmaq onların ətrafında dünya, həm də alaraq faylları baxımından və - kompleks giriş faylları vasitəsilə, həmçinin maraqlı yaradılması və məcburedici nəticələri - faylları müxtəlif növ baxımından. Biz başlayır nə qədər ki, faylları ilə işləmək üçün necə öyrənmək. Daha konkret desək, nə biz aşağıdakı kimi edirik. Bu, çox sadə. Orada addımlar yalnız bir neçə və onlar bu kodu burada verilmişdir. Belə ki, biz vasitəsilə getmək olacaq xətti ilə bu kodu line. Birincisi, qeyd bax - bir fayl ilə iş, etdiyiniz zaman asılı olmayaraq fayl növü bu, Siz onu açmaq lazımdır. Və fopen zəng ilə - burada. Siz fayl adı daxildir. Fayl, sizin kataloq deyilsə və ya qovluq bu proqram həyatını, sonra da daxil etmək lazımdır ki, fayl olduğu üçün bir yol. Biz güman edirik ki, bu "text.txt" adlı fayl - bir sadə mətn sənəd - edir Bu proqram kimi eyni qovluq deyil. Belə ki, saxlamaq başqa bir şey mind - siz faylı açmaq istəyirsinizsə başqa bir yerdə, siz həqiqətən ehtiyac onun yeri daxil. İkincisi, siz bir dəlil keçə bilər fopen, və siz istədiyiniz nə var fayl ilə. Üç əsas arqumentlər var ki Siz fopen keçmək olacaq. Kim mənə o üç verə bilər? Kim mənə onlardan biri verə bilər? Bəli. TƏLƏBƏ 4: Fayl adı? JASON Hirschhorn: Sorry. Keçə bilər üç əsas arqumentlər İkinci arqument fopen kimi. Haklýsýn - fayl adı ilk dəlildir. Amma fopen ikinci dəlil var adətən üç strings, və - bəli. Aleja. Aleja: a əlavə etmək üçün A. JASON Hirschhorn: A, siz istəyirsinizsə artıq mövcud olan bir fayl əlavə. TƏLƏBƏ 5: oxumaq üçün R. JASON Hirschhorn: R, əgər bir fayl oxumaq istəyirəm. TƏLƏBƏ 6: yazmaq üçün W. JASON Hirschhorn: Və w əgər bir fayl yazmaq istəyirəm. Belə ki, bu halda, biz yazılı edirik fayl, biz w var. Siz onu açmaq, siz də saxlamaq üçün var haradasa fayl, və ki var sol tərəfində kodu tapşırıq operator - Mən bir fayl üçün bir göstərici yaradılması alıram Bu halda, fayl çağırıb. Biz narahat etmək niyyətində deyil nə Bu bütün caps FILE şeydir. Demək kifayətdir ki, bu uzun adet sıfır və olanları stream. Və biz gedir necə fəaliyyət və onu anlamaq. Biz nə etmək lazımdır növbəti şey - və Bu olduqca vacibdir - Bir faylı açmaq zaman - Əslində, siz malloc zəng zaman, üçün Məsələn, bəzi yaddaş almaq və cəhd siz həmişə bir pointer saxlamaq əmin olun ki, yoxlamaq istəyirəm ki, funksiyası null dönmədi. Belə ki, bu halda, biz etmək yoxlanılması olunur Biz, həqiqətən, açılan əmin olun düzgün fayl, və var idi Bizim proqram heç bir səhv. Next, bir dəfə biz əmin işaretlediğinizden biz əlimizdən bir iş fayl var ki, , yazmaq, və ya oxumaq və ya fayl əlavə. Bu halda, mən sadəcə çap edirəm Bu fayl bir xətt. Necə ki, bilirik? Bəli, mən bu funksiyanı istifadə edirəm fprintf çağırıb. Istifadə olunacaq funksiyaları bütün , yazılı və ya, və ya oxuyarkən faylları manipulyasiya oxşar olacaq siz əvvəl görüldü etdik, ancaq funksiyaları F hərfi ilə başlamaq, fayl üçün daimi. Və fprintf, bizim normal çap fərqli app, bir əlavə mübahisə edir, və fayl olduğu bu xətt çap etmək istəyirəm. Mən heç bir şey yoxdur Ohai hüququ. Mən üçüncü yoxdur printf arqument - və ya ikinci arqument printf üçün, Üçüncü dəlil fprintf üçün, çünki mən burada hər hansı bir placeholders yoxdur. Mən heç bir dəyişənlərin deyiləm. Ancaq yenə də, fprintf və bu fayl bütün faylları ilə fəaliyyət funksiyaları ümumiyyətlə fayl lazımdır gedir olan onlar fəaliyyət edirik. Nəhayət, son mühüm şey nə kimi, faylı bağlamaq üçün ilə - biz bir şey malloc zaman, biz biz deyə bir şey pulsuz istəyirəm bir yaddaş sızıntısı var - biz istəyirik fayl yaxın. Bu proqram bağlanması olmadan ayrıldığı varsa fayl, odds bir şey getmək olardı var yanlış, xüsusilə də əgər bu kiçik bir fayl idi. Amma əlbəttə yaxşı coding stili və həmişə faylı bağlamaq təcrübə siz onu istifadə bittiğinde. Belə ki, fayl əsasları I / O. edir Siz yəqin ki, əvvəl görüldü, və ya sonra ki, fantastik qısa onu izlədi. Heç əvvəl, hər hansı bir sualınız varmı biz bəzi təcrübə kodlaşdırma daxil fayl haqqında problemləri, I / O və ya addımlar Mən artıq getdi? [Yazaraq Sesler] JASON Hirschhorn: gəlirmi Bir sual, AVI var? AVI: Xeyr JASON Hirschhorn: OK. Mən başqa gözləmək gedirəm yeddi saniyə. [Gülür] Ki, həqiqətən yaxşı ipucu. Siz uşaqlar yalnız sevmirəm suallar. Ki, gözəl. OK. Belə ki, bizim ilk təcrübə problem biz deyil, funksiyası dublikat gedir bir command line vasitədir ki, yəqin ki, surəti - əvvəl istifadə - surəti vasitədir. Siz cp yazın və sonra keçir iki terminal dəlilləri, siz bir fayl surəti. Və biz gedir nə indi yazmaq üçün. Belə ki, yenə bu slayd off oxu, mən olsam Siz edir ki, bir proqram yazmaq iki və iki command-line yalnız arqumentləri - mənbə fayl və bir hedef fayl - və nüsxə mənbəyi məzmunu hedef fayl fayl bir-bir byte. Belə ki soruşmaq üçün bir çox var. Yenə də, bu yaxşı bir yanaşma deyil C kodu düz getmək deyil, addımlar bir neçə onu qırmaq. Birincisi, düşünmək məntiq - dəqiq nə mən bunu xahiş edirəm - və bütün anlamaq Bu problemin addımlar. Not C, yalnız bəzi pseudocode, və ya hətta bir ruhi model nə olacaq. Next, siz pseudocode aşağı bir dəfə, anlamaq necə pseudocode alətləri və biz etdik əşyalar üzərində xəritələr C. istifadə öyrəndim Və nəhayət, bir dəfə bütün var birlikdə, siz problem kod bilər. 5 10 dəqiqə bu problem üzərində iş. Mən göstəriş qoymaq lazımdır geri ikinci up. Və sonra biz artıq getmək olacaq Bu pseudocode, və kodu bir qrup kimi yaşayır. Siz bile siz hər hansı bir sualınız varsa, Bu iş qaldırmaq çekinmeyin Sizin tərəfdən, və mən gələcək ətrafında və onlara cavab. TƏLƏBƏ 7: I çalmak bilər kağız parçası? JASON Hirschhorn: Nə oldu? [Yazaraq Sesler] JASON Hirschhorn: OK. Ilk pseudocode üzərində gedək, və sonra mən sizə bir neçə daha çox verəcəyik dəqiqə kodlaşdırma başa çatdırmaq üçün. Kim mənə başlamaq istəyirəm ilk xətti ilə bu funksiya üçün pseudocode? TƏLƏBƏ 8: əmin etmək yoxlayın Siz iki faylları verilmişdir. JASON Hirschhorn: OK. Və biz deyilik, əgər? TƏLƏBƏ 8: I 0 qayıtmaq istəyirəm. JASON Hirschhorn: biz 0 qayıtmaq lazımdır? TƏLƏBƏ 8: a qayıt - blanking. Üzr istəyirik. JASON Hirschhorn: Bəli. Yəqin ki, deyil 0. 0 hər şey yaxşı idi deməkdir. OK. Belə ki, ilk xətt var pseudocode. Kim pseudocode ikinci xətti var? TƏLƏBƏ 9: faylları həm Open? JASON Hirschhorn: həm faylları açın. OK? STUDENT 10: yoxlayın fayl NULL əgər? JASON Hirschhorn: olun əmin NULL var nə. Bir kənara kimi - 0 zərbə - ki, NULL edir? STUDENT 11: Xeyr JASON Hirschhorn: Bu NULL deyil. Bu NULL terminator adlanır. Bu, həqiqətən, yalnız bir l ilə yazıldığına var. Belə ki, qarşı bir şey yoxlanılması - ki, əslində bir xarakter var - belə ki, qarşı bir şey yoxlanılması görmək yoxlanılması kimi eyni deyil, əgər NULL bərabərdir. Və bəzi insanlar - onların Quizzes və onların problemi ilə bağlı dəstləri - burada var səhv o iki. Amma o iki müxtəlif əslində. Bir string başa çatıb - bir 0 bir göstəricisidir. STUDENT 12: Niyə yoxlamaq olmaz faylları NULL deyil ki, əmin olun Əgər siz onları açmaq əvvəl? JASON Hirschhorn: Belə açıq saxlayır ki, fayl bir şey. Və burada geri getmək əgər - bu line - fopen - bir ünvanı və mağaza verəcək Bu işləri fayl ki ünvanı. Bu iş deyil, bu, NULL saxlamaq olacaq - STUDENT 12: Oh. OK. Siz var. JASON Hirschhorn: faylında. Beləliklə, siz NULL kontrol edə bilməz Əgər siz onları açdı etdik əvvəl. NULL bir şey vermədi deməkdir düzgün iş. OK. Belə ki, əmin nə etmək yoxlamaq? Və ya? Biz nə düşünürsünüz? Biz ki, ilə getmək lazımdır. STUDENT 13: mı. JASON Hirschhorn: mı? Nə? STUDENT 13: mı. JASON Hirschhorn: OK. Biz bəzi görünür ki konsensus. NULL nə. OK, pseudocode növbəti line. Hələ mənə bir xətt verməyib? Biz sizin üçün gözləyin. Bəli. STUDENT 14: Siz oxumaq lazımdır ilk fayl? JASON Hirschhorn: OK. STUDENT 14: Və ya biz fscanf istifadə və ya ilk fayl kimi bir şey? JASON Hirschhorn: Biz istəyirik ilk faylı oxumaq və - sağ burada qoymaq bildirin. Mənbə faylı oxuyun. Və sonra, biz sonra nə etməliyəm mənbə faylı oxumaq? Başqası? STUDENT 15: yaz daxil hedef fayl? JASON Hirschhorn: Biz yazın hedef fayl, və - OK. Biz nə əskik? Mənə bir olmayan başqası hələ kodu xətt - pseudocode. Bəli. STUDENT 16: Bəlkə həmişə kontrol edə bilərsiniz olub oxumaq üçün bir şey var, növbəti line kimi? Növbəti line kimi ki, mövcud oldu. [ELECTRONIC BEEP] JASON Hirschhorn: Oops. Yəni mənim journaling proqram. Bəli? STUDENT 16: Bəli. JASON Hirschhorn: Belə vermək mənə bir dəfə daha. STUDENT 16: var yoxlayın Bu hələ növbəti line oxumaq üçün mənbə fayl. JASON Hirschhorn: OK. Beləliklə, biz xətləri oxu deyilik - burada bytes oxu - lakin doğru danışırsınızsa. Biz qədər oxumaq və yazmaq istəyirəm heç bir daha çox bytes var. OK. Və bu həqiqətən indented olmalıdır bir bit, onlar orada altında istəyirik, çünki. Sağ? Biz bytes bitti qədər, biz olacaq mənbə faylı oxumaq və yazmaq hedef fayl. Və sonra, son nə pseudocode line? Verilmiş deyil kimsə Mənə bir şey yoxdur. STUDENT 17: faylları bağlayın? JASON Hirschhorn: Exactly. Faylları bağlayın. Belə ki, bizim pseudocode var. Mən daxil pseudocode qoymaq gedirəm gedit, və bir neçə dəqiqə biz birlikdə bu kod olacaq. OK. Bizə bir qrup kimi başlamaq bildirin. Nishant, mən yeni fayl var. Mən yalnız bu qədər açdı etdik. Untitled sənəd 1. Mən nə lazımdır ilk şey nədir? Nishant: kitabxana əlavə? JASON Hirschhorn: OK. Nə kitabxana? Nishant: stdio.h, stdlib.h inanıram? JASON Hirschhorn: OK. Üçün stdlib nədir? Nishant: I unuttum. JASON Hirschhorn: OK. Belə ki, stdio daxildir. Mən hətta əvvəl nə etməliyəm Mən kodlaşdırma başlamaq? Nishant: bir mövzu yaz? JASON Hirschhorn necə rəngli I Qiy [Interposing SƏSLƏRİ] Nishant: Necə rəngli alıram? JASON Hirschhorn necə Mən kodlaşdırma rəng edirsiniz? Nishant: Bilmirəm. Oh. Edin. JASON Hirschhorn: edin. Bəli. Mən. C kimi saxlamaq lazımdır. Belə ki, cp.c. kimi masaüstünüzden qeyd edin Sweet. Və mən tam stil almaq istəyirsinizsə bal, nə olmalıdır mən üst daxildir? Nishant: Siz adı, adı yazmaq bilər proqram, və məqsədi eləcə də proqramın? JASON Hirschhorn: yaxşı görünür. Əla. Belə ki, bizi off açılmış etdik. # Daxildir - biz də yazmaq lazımdır - OK. Mən bütün getmək üçün müəyyən edirəm. Kim mənim üçün kodu ilk xətt var - və kodu ilk xətləri ki, bu, bizim ilk təmin edəcək pseudocode şərh? Siz. STUDENT 18: Bu int olmamalıdır argc, sonra char * argv? JASON Hirschhorn: düşünürəm haklýsýn. Nin əsas, açıq paren int dəyişdirmək edək, int argc, vergül, char * argv? Ki, kimi? STUDENT 18: Brackets. JASON Hirschhorn: Brackets. Open bracket, yaxın bracket, yaxın valideyn. Perfect. İndi komanda-line dəlilləri bilər. OK. Biz iki faylları sunulur olun. Siz həmçinin mənə verə bilər. STUDENT 18: argc varsa - bu bir 3 bərabər deyil. JASON Hirschhorn: Əgər açıq paren 3 argc bərabər deyil? STUDENT 18: Bəli, siz qayıtmaq 1 və ya bir şey. JASON Hirschhorn: Sorry. STUDENT 18: Return 1 və ya bir şey. JASON Hirschhorn: 1 qayıt. OK? Böyük. Həm faylları açın. Kim mənə iki faylları açmaq kömək edə bilər? Hələ mənə kodu verilir deyil? Kurt? KURT: Belə ki, bütün caps F-I-L-E star mənbə. JASON Hirschhorn: Mən gedirəm sait almaq üçün. Həmin sərin var. Bu Tumblr kimi. STUDENT 18: fopen Bərabər - JASON Hirschhorn: fopen Bərabər? STUDENT 18: Open paren, argv, açıq bracket. JASON Hirschhorn: gözləyin. Üzr istəyirik. Open paren. OK. STUDENT 18: Bəli. Argv sub 1. JASON Hirschhorn: Sub 1? STUDENT 18: Bəli. Argv açıq bracket 1 - bəli. Və sonra vergül, sonra açıq ikiqat quote, r, ikiqat quote, yaxın paren, nöqtəli vergül. JASON Hirschhorn: Sweet. Və nə digər biri haqqında? STUDENT 18: çox oxşar, lakin əvəzinə S-R-C, D-S-T zəng ediyorum. JASON Hirschhorn: OO! Mən ki, istəyirəm. STUDENT 18: Just D-S-T. Bəli. Və sonra, 2 açıq bracket argv. Bəli. Və sonra w əvəzinə r. Bəli. JASON Hirschhorn: Great. Xətləri Next neçə. Həmçinin, heç əlavə etmək şeyi var biz etdik ki, xətləri, çekinmeyin eləcə də həmin əlavə edin. Əmin nə NULL etmək yoxlayın. Kim mənə lazım olan kodu verə bilər pseudocode ki line təmin? Archer. ARCHER: src bərabərdir bərabərdir varsa NULL və ya DST bərabərdir bərabərdir NULL, sonra geri - JASON Hirschhorn: Nə? ARCHER: 2 qayıt? JASON Hirschhorn: 2 qayıt. Belə ki, açıq paren src bərabərdir əgər NULL bərabərdir, və ya - ki thing's nə - boru? Boru? Biz boru zəng edəcəyik. Boru, boru, DST bərabərdir bərabərdir NULL, 2 qayıtmaq. OK? Biz bytes bitti qədər - biz növ bu addım üzərində atlandı burada gediş pseudocode hissəsidir. Amma qədər biz bytes bitti - ki, səs kimi nə edir? C hansı növ struktur - amma söz strukturu istifadə etməyin, biz istifadə edərək başlamaq üçün olacaq, çünki digər hallarda - lakin C alət kimi ki, səs edir? STUDENT 19: A loop. JASON Hirschhorn: A loop. Bir loop kimi səslənir. Belə ki, Mənə ilk xətt verə bilər burada loop kodu? Siz həmçinin seçə bilərsiniz hansı növ Siz mənə vermək əgər loop, istədiyiniz kodu bu xətt. Üç növ var. Siz almaq. Mən o biri gəlir ki,. Avi. Hansı biri istəyirsiniz? AVI: ÜÇÜN. JASON Hirschhorn: ÜÇÜN. AVI: i sıfır bərabərdir Int. JASON Hirschhorn: OK. AVI: Mən əmin deyiləm bu hissəsi. Amma ölçüsü azdır star mənbəyi? Mən əmin deyiləm. JASON Hirschhorn: OK. Istədiyiniz Çünki: AVI bir fayl ölçüsü, sağ? JASON Hirschhorn: Belə ki, bu, yəqin ki, deyil bizə faktiki ölçüsü vermək bytes fayl. Beləliklə, biz başqa nə edə bilər? Loop bir növü nədir? Yoxsa biz ÜÇÜN loop ilə qalmaq lazımdır? STUDENT 20: Bir müddət loop edə bilərmi? Və sonra, nə istədiyiniz you'd edir - biz fayl üçün bir char * var. Biz yalnız incrementing saxlamaq belə ki, əgər biz NULL xarakter tapa istədiyiniz qədər bunun sonu? Və ya heç, faylları necə iş deyil ki? JASON Hirschhorn: Biz saxlaya bilərsiniz char * incrementing biz NULL tapmaq qədər - STUDENT 20: Əsasən davam xarakteri ilə xarakter hit qədər fayl sonu. JASON Hirschhorn: Bəli. Belə ki, biz bunu istəyirəm nə. Biz oxu, xarakter saxlamaq istəyirəm xarakteri ilə, biz almaq qədər fayl sonu. STUDENT 20: Bəli. Tap - sonu və ya stop işarəsi nədir Bir mətn faylı sonunda. JASON Hirschhorn: OK. Belə ki, biz fayl sonuna almaq zaman - necə biz əldə etdik bilirik bir fayl sonu? Mən zəng alıram varsa - belə ki, geri addım edək. Bir funksiyası nədir? Sağ, burada bu istiqamətdə gedək. Mənbə faylı oxuyun. Kim mənə kodu ki, xətt verə bilər? STUDENT 21: fscanf? JASON Hirschhorn: fscanf. OK. Mən oxumaq istəyirsinizsə, çox xüsusi bir byte? STUDENT 21: Mən bilmirəm. JASON Hirschhorn: OK. Fscanf daha sadə - bir nə - Mən bir mənbə faylı oxumaq istəyirsiniz? Bir mənbə faylı oxuyun. Bir funksiyası nədir - Bəli. STUDENT 22: Bu fread var? JASON Hirschhorn: fread. Mən ilə qalmaq olaq indi ki, bir. Dəlilləri hansı fread edir? STUDENT 22: Yəqin ki, fayl növü, və sonra fayl yeri? JASON Hirschhorn: Mən burada nə yazın anlamaq dəlilləri hansı növü fread edir? Birden TƏLƏBƏLƏR: Man fread. JASON Hirschhorn: Man fread və fwrite. Onlar birlikdə asmaq kimi görünür. Belə ki, fread neçə dəlillər edir? STUDENT 23: Four. JASON Hirschhorn: Bu edir dörd dəlilləri. Bu göstərici, bir ölçüsü edir ki, qəribə olan şey, və bəzi fayl. OK? Sağ burada bu barədə oxumaq edək. "Funksiyası fread n important oxuyur məlumatların elementləri, hər ölçüsü bytes uzun, dərədən ilə işarə yeri onları saxlanılması sel pointer tərəfindən verilir. " Belə ki, dörd dəlilləri. Niyə yalnız bu surəti yoxdur, və burada yapışdırıb. OK. Belə olan doldurulması başlaya bilərsiniz Mənim üçün bu arqumentlər? Avi. AVI: boşluğu edin. Yalnız src qoyun. Göstərici və ulduz almaq. Src qoyun. Sonra - JASON Hirschhorn: Mən dayandırmaq üçün gedirəm orada ki, yanlış çünki. Siz src ilə sağ istəyirik, lakin src harada getmək lazımdır? [Interposing SƏSLƏRİ] JASON Hirschhorn: Bu olmalıdır burada artıq getmək. Bu src - Bizim src bir növüdür. Burada baxaq. Bu type Resim * üçün xahiş olunur, biz həqiqətən adətən belə onları görmək. Belə ki, bu bir arqument üçün xahiş olunur * src ki, adlı stream fayl növü. OK? Şeylər hansı ölçüsü biz oxumaq istəyirsiniz? Mən sizə bu verdi problem təsviri. STUDENT 24: Bir zaman bir byte. JASON Hirschhorn: One byte. Bir byte necə? Onun ölçüsü bayt edir, belə ki, nə Mən orada qoymaq olar? STUDENT 25: One. JASON Hirschhorn: One. Sağ. Onun ölçüsü vahid byte edir, belə 1 1 byte edir. Mən bir zaman oxumaq necə çox istəyirəm. STUDENT 26: One? JASON Hirschhorn: Bir şey. Mən ölçüsü bir şey oxumaq istəyirəm 1, bir-bir bite. Mən bunu bir dəfə oxuyun və harada onu qoymaq bilərəm? STUDENT 27: Destination? JASON Hirschhorn: Mən qoymaq bilməz düz təyinat. STUDENT 28: Siz mý put istəyirik bir üçüncü göstərici daxil? STUDENT 27: təyinat üçün. JASON Hirschhorn: OK. Bəli. STUDENT 29: Siz bir şey elan edə bilər müvəqqəti saxlama əvvəlki kimi fəaliyyət göstərir. JASON Hirschhorn: OK. Mənə verin. STUDENT 29: Başqa bir fayl pointer, bəlkə? JASON Hirschhorn: OK. Belə ki, bu etibarsız ulduz - bu bir növü etibarsız ulduz var, belə ki, deyil bir fayl pointer olmalıdır. Mən bir byte oxuyuram əgər, yaxşı bir yer olardı bir byte saxlamaq üçün? STUDENT 29: An array? JASON Hirschhorn: An array. OK. Və ki, bir şey başqa nə yalnız bir byte ölçüsü? STUDENT 30: A char *? STUDENT 29: Bəli. JASON Hirschhorn: A char * bir byte deyil. STUDENT 29: A char. JASON Hirschhorn: A char bir byte edir. Sağ? Belə ki, bu bufer zəng edək ümumi edir saxlamaq üçün bu şeylər üçün istifadə adını bir şey müvəqqəti. Mən bir bufer yaratmaq. Sağ? Amma bu * bir boşluq görür. Belə ki, bəlkə, doğru ki, ölçüsü 0 bufer olmalıdır. Belə ki, bir mağazalar - sağ. Çünki burada bu hüququ - char bufer bir xarakter, lakin Bu * boşluq edir - bir göstərici. Mən indi bunu edə bilər bufer bir göstəricisidir. Mən başqa nə edə bilər? STUDENT 31: char yanında bir ulduz qoyun. JASON Hirschhorn: Mən ola bilər Bu * char yaratmışdır. OK. Mən bilər bir şey var? Və ya bu biri ilə gedək. Char * bufer, nə Mən burada qoymaq bilərəm? STUDENT 31: Buffer. JASON Hirschhorn: Buffer. Buffer bir char bir göstəricisidir. Və yeri, biz qoyulması edirik biz oxumaq etdik şey biri byte. Bəli. Avi. AVI: Just tez sual. Siz bufer malloc istəyirsiniz? JASON Hirschhorn: Kim bilər Bu suala cavab? STUDENT 32: Yaxşı, Bu, həqiqətən indi bir şey point, belə ki, - JASON Hirschhorn: Amma bunu biz bunu malloc istəyirsiniz? STUDENT 32: siz bunu olsaydı ki, sizə lazım istədiyiniz çünki, mən, evet, tapmaq Bu qeyd etmək üçün bir yer. JASON Hirschhorn: biz malloc var? STUDENT 33: siz davam edirsinizsə loop kənarda istifadə edin. JASON Hirschhorn: biz gedir loop kənarda istifadə? STUDENT 34: Bəli. STUDENT 35: gözləyin. Biz bunu bəyan etmək istəyirəm etməyin kənarda loop? JASON Hirschhorn: Mən biz tapmaq burada biz istəyirik ki, bəzi yalançı APARARKƏN loop , anlamağa çalışırıq ki, Biz hələ kazanılmış deyil. Biz bunu malloc ehtiyac yoxdur. Biz əsas fəaliyyət edirik, yalnız gedir Bu loop daxilində istifadə ediləcək. Bu mövcud lazım deyil Bu xaricində. Belə ki, yerli dəyişən ola bilər. Siz bir göstərici var yerli dəyişən. STUDENT 36: Lakin bu deyil bir şey işarə. JASON Hirschhorn: Xeyr, deyil bir şey başlatılmış. Amma biz də istifadə etmək fikrində deyilik. Biz bir şey qoymaq olacaq ilk dəfə biz istifadə edin. Belə ki, OK görünür. Beləliklə, biz burada malloc ehtiyac yoxdur. Və mən kimi OK hesab edirəm. OK. Biz fread xətt var. Nin növbəti line edək. Biz bir fayl yazmaq istəyirsinizsə, nə bunu istifadə etmək yaxşı bir funksiyası? STUDENT 37: Fwrite? STUDENT 38: fprintf? JASON Hirschhorn: fprintf biridir. Başqa bir nədir? STUDENT 39: Fwrite. JASON Hirschhorn: Fwrite. Və bizim üçün, fwrite, biz burada gördüm ki, edir yəqin ki, daha yaxşı seçim. Bu həmçinin dörd dəlilləri. Nishant, siz verə bilər dəlilləri me? Nishant: İlk bir davam yalnız bufer olmalıdır. JASON Hirschhorn: OK. Nishant: İkinci üzrə yalnız 1 olacaq. Üçüncü bir 1 olacaq. Və dördüncü bir dst olacaq. JASON Hirschhorn: Heç varmı ki, xətti haqqında hər hansı bir sualınız? Bu yaxşı görünür. OK. Belə ki, indi biz istəyirik bir şey kimi görünür itkin - həqiqətən, yazmaq bildirin bu son line. Faylları bağlayın. Kim yazılı bizə bitirmək bilər Bu son iki xətləri? Bəli. Bağışlayın, sizin adınız nədir? LUCY: Lucy. JASON Hirschhorn: Lucy. LUCY: sonra fclose src və fclose təyinat. JASON Hirschhorn: fclose, açıq paren, src, yaxın paren, nöqtəli vergül. Və fclose - yeah? LUCY: Open parantez, DST və sonra nöqtəli vergül. JASON Hirschhorn: Great. Mən sonunda nə daxil olmalıdır? LUCY: 0 qayıt. JASON Hirschhorn: 0 qayıt. Mən var? Bir sual. Biz qaytarılması 0 daxil var? Birden TƏLƏBƏLƏR: Xeyr JASON Hirschhorn: Xeyr Main avtomatik olaraq bunu edir siz sonuna almaq əgər. Amma bu gözəl hesab edirəm aydın şəkildə onu daxildir. Biz digər qaytarılması etdiyiniz xüsusilə proqram boyunca şeylər. OK. Bu əskik etdiyiniz nə - Nə APARARKƏN? Olan bəzi hesab edə bilər - bəzi hissi var hər şeyi orada getmək bilər? Bu yalnız bir pseudocode belə dil kimi? Biz, həqiqətən, hansılardır - nə biz qədər getmək istəyirsiniz? Bəli, Lucy. LUCY: fayl sonu. JASON Hirschhorn: Faylın sonu. Belə ki, fayl sonuna nə deməkdir? LUCY: Siz çatmaq fayl sonu dayandırmaq. JASON Hirschhorn: OK. Belə ki, bir dəfə biz fayl sonuna çatmaq. Biz əldə etdiyiniz zaman necə bilirik fayl sonu? STUDENT 40: I bufer hesab Null müəyyən olunacaq. STUDENT 41: Buffer elan edilir loop daxilində. JASON Hirschhorn: Belə düşünürsünüz bufer null müəyyən olunacaq. Niyə null müəyyən edilə bufer olardı? STUDENT 40: zaman Çünki fread, siz qoymaq çalışdığınız bufer daxil heç bir şey. JASON Hirschhorn: OK. Beləliklə, siz fread düşüncə etdiyiniz - biz sonunda əldə etdiyiniz zaman fayl, nə fread nə olacaq? Mən sual edirəm biz anlamaq lazımdır. Fread nə edir? Bu bufer NULL qoymaq, və ya etmir Bu başqa bir şey deyil? Biz necə nə anlamaq olar? STUDENT 42: Man. JASON Hirschhorn: Man. Belə ki, burada baxaq. Dəyər qayıt. Uğurlar, fread və qayıtmaq fwrite burada oxumaq və ya yazılı maddələrin sayı. Bu sayı bayt sayı bərabərdir ölçüsü 1 yalnız köçürülür. Bir səhv baş, və ya sonu əgər fayl əldə, qaytarılması dəyəri edir qısa maddə count ya 0. Belə ki, bizim üçün, əgər fread çatır fayl sonu və oxuyur fayl sonu, sol heç bir şey var oxumaq, nə geri olacaq? STUDENT 43: Zero? JASON Hirschhorn: Nə? STUDENT 43: Zero? JASON Hirschhorn: Zero. Bu sıfır geri olacaq. Belə ki, biz etdik ki fread bilirik fayl sona gəlindi gedir sıfır qayıtmaq üçün. Necə biz üstünlüyü üçün istifadə edə bilərsiniz? AVI: Siz xaricində bir dəyişən elan edə bilər check adlı loop. Çek bərabərdir varsa - indi - bir. JASON Hirschhorn: OK. AVI: Və sonra bir qoymaq bilər sağ fread dedikdən sonra bəyanat əgər fread sıfır bərabərdir - no. JASON Hirschhorn: Kim avi həyata kömək edə bilər? AVI: nə dəyəri var fread geri? JASON Hirschhorn: Biz yalnız üzərində getdi. AVI: Necə təmsil edir? JASON Hirschhorn: Belə ki, qaytarır - edək burada baxmaq - bir qaytarır mahiyyətcə olan size_t, tam. Belə ki, bir tam qaytarır. Və bizim halda, o, 1 və ya 0 qayıtmaq - 1 bir şey oxumaq - bir byte, 0 biz sonunda əldə etdiyiniz əgər. Belə ki, fread əgər - yeah? STUDENT 45: yalnız tam qoymaq bilməz daxil fread (bufer, 1, 1, src) loop isə? JASON Hirschhorn: Belə ki, təklif orada bu edir? [Interposing SƏSLƏRİ] JASON Hirschhorn: tutun. Beləliklə, biz ki ridding edirik. Beləliklə, siz qoyulması təklif edirik fread orada daxil? Biz də hərəkət etməlidir Bunu etmək istəyirsinizsə? STUDENT 45: xaricində bufer. JASON Hirschhorn: Biz olmalıdır də burada bu hərəkət. STUDENT 45: Amma ki, daim irəli hərəkət? [Interposing SƏSLƏRİ] JASON Hirschhorn: OK. Belə ki, bu Okshar təklif edir. Biz bufer yaratmaq. Biz APARARKƏN fread, sonra biz fwrite. Bu fikir? STUDENT 46: Mənim yalnız sual, onda edir əslində komanda fread icra? JASON Hirschhorn: Böyük sual. Bir funksiyası zəng qoyulması olduğunuz zaman bir şərt daxilində, edir funksiyası zəng icra? Biz əvvəl bu nümunələr gördük. Sağ? STUDENT 46: OK. Bəli. Belə ki, icra edir. JASON Hirschhorn: Biz şeylər gördüm bundan əvvəl biz olduğu kimi bir bir şərt daxilində funksiyası zəng. Ki, funksiyası zəng icra varmı? Bəli. Belə ki, cavab yes deyil. Bu funksiya zəng icra edəcək. Ancaq yenə də, biz istədiyiniz nə deyil? Biz anlamaq bilər bir yolu nədir biz istədiyiniz nə, əgər? Birden TƏLƏBƏLƏR: Run? JASON Hirschhorn: Biz run bilər. Biz bunu əvvəl Lakin, biz bilər bu vasitəsilə səbəb. Varsa - biz bir byte demək bizim Biz burada almaq lazımdır, fayl, biz bu kodu almaq lazımdır. Bu davam edəcək. fread bir byte qayıdacaqlar Bu bufer saxlamayın. Bu, 1 qiymətləndirəcək sağ, sonra 1 qaytarır. Belə ki, APARARKƏN 1. Ki, daxilində kodu deməkdir isə loop icra edəcək? STUDENT 47: Bəli. Doğrudur. JASON Hirschhorn: Bəli. 1 doğrudur. Bu 0 deyil. Belə ki, burada daxili kodu icra edəcək. Belə ki, yazmaq lazımdır. Biz bu geri hərəkət edəcəyik line bir daha. İndi biz var - biz fayl sonunda istəyirik. Biz fayl sonunda oxumaq, biz yalnız bir byte idi. Fread 0, mağazalar qaytarır bufer bir şey. Mən vicdanla bilmirəm Bu bufer saklar. Biz yəqin ki, baxmaq bilər nə görmək. Mən vicdanla bilmirəm. Biz nə umurunda bilmirəm Bu bufer mağazalar? Amma bu 0 qayıtmaq deyil. 0 icra İKƏN olacaq? 0 icra edəcək. Beləliklə biz burada hərəkət edəcəyik. Belə ki, əlində bir şou almaq qoy əgər biz run, və ya əgər biz olmalıdır kodu ilk dəyişikliklər etməlidir. Sizcə əgər - siz səs var. Əgər biz bu kodu run lazımdır düşünüyorsanız kimi, sizin əl qaldırmaq edin. OK. Bir var - Bir sual, narahatlıq var? Bəli. STUDENT 48: biz tampon hərəkət sonra loop kənarda, biz malloc var? JASON Hirschhorn: Böyük sual. Biz kənarda bufer hərəkət sonra loop, biz bunu malloc var? Bu həcmi məsələdir. Biz kənarda bufer başlamaq əgər Bu loop, bu mövcud olacaq loop daxilində? Birden TƏLƏBƏLƏR: Bəli. JASON Hirschhorn: Bəli. Onun həcmi, loop daxilində əhatə edir və, həqiqətən, bir şey daxili aşağıda o cümlədən bu kodu ki, burada daxili şeylər. Belə ki, biz bunu malloc ehtiyac yoxdur. Bu yerli dəyişən, və onun əhatə dairəsi hələ loop daxildir. STUDENT 49: biz onu azad etmək lazımdır? JASON Hirschhorn: biz pulsuz bufer lazımdır? STUDENT 49: Bəli, biz malloc deyilsə. JASON Hirschhorn: biz pulsuz bufer lazımdır? Biz bunu etmirik. Yenə də, bu yerli dəyişən, belə ki, biz onu azad etmək lazım deyil. OK. Nə görmək edək. Belə ki, uninitialized edir. Ki, nə bir şey idi ki, Marcus əvvəllər təklif. Belə ki, səhv, dəyişən bufer var Burada istifadə uninitialized edir. Biz bu necə düzəltmək olar? STUDENT 50: malloc? STUDENT 51: NULL Bərabər? STUDENT 52: bufer NULL bərabərdir söyləyin. JASON Hirschhorn: OK. Yaxşı görünür. Biz indi var. Nin çıxarmaq cəhd bir şey yaratmaq edək. Belə ki, biz mətn faylı var. Biz bu proqram run bilər? Bəli. STUDENT 53: Siz dot edə bilərsiniz cp, test.txt doğramaq. Və sonra başqa bir fayl olar onu saxlamaq olacaq. JASON Hirschhorn: OK. Biz bunu out.txt zəng edəcəyik. Cool? Seg günah. Seqmentlərin günah haqqında düşüncələr Bu, böyük deyil. Necə tapa bilərsiniz seqmentlərin günah? Nə? STUDENT 54: gdb. JASON Hirschhorn: gdb. Biz gdb dot çizgi yazmaqla gdb run Bizim proqram adı. Heç bir command line dəlilləri. Biz müəyyən olacaq əsas da breakpoint. Mən gdb başlamaq istəyirsinizsə, mən nə etməliyəm? STUDENT 55: R. Sonra R. Və nə: JASON Hirschhorn? STUDENT 55: The arqumentlər? JASON Hirschhorn: Sonra command-line dəlilləri. Vasitəsilə gəzmək edək. N yalnız xətti ilə mənə line edir. Mən getmək üçün gedirəm qədər Mən seg günah almaq. Mənim seg günah var. Fread səbəb kimi görünür mənim günah seg. Mən fread mənim seg günah səbəb bilirik ki, idi, çünki line biz yalnız icra. Idi ki, yalnız bir şey ki, xətt baş - iki şeylər baş idi. Fread gedirdi, sonra biz idi bəzi APARARKƏN yoxlanılması edir. Mən bahis istəyən Ben ki APARARKƏN yoxlanılması mənim seg günah səbəb deyil. Çox güman ki, fread idi Mənim San günah səbəb olur. Mən də burada bir şey Memcopy görürük. Yaddaş surəti. Olan yaddaş hərəkət kimi səslənir başqa bir yer. Baş ki, bir şey kimi səslənir fread, bəlkə, bəzi yaddaş burada buradan hərəkət. Yenə bu yolu gedək. Nasıl artıq başlamaq yoxdur və yenidən run? Bəli. STUDENT 56: Siz qoymaq lazımdır Bufer əvvəl ampersand? JASON Hirschhorn: Əvvəl işareti bufer mənə Ünvan verəcək * Bir char olan bufer. Bu bir daha vaxt vasitəsilə run edək. Mən bir dəfə daha keçir edirsiniz? STUDENT 57: Can yalnız yenidən run yazın? JASON Hirschhorn: Just yenidən run yazın. Beləliklə, biz fikrində deyilik bu xətti həyata. Belə ki, bufer bir NULL pointer edir. Düzəltmək? Bu işarə edir - nin görək. Biz varsa, bizim - Bu tez şəkil çəkmək. Əgər hamı bilərsiniz Mən burada yazmaq? Belə ki, yığını, biz yerli var dəyişən və bufer adlanır və bu bir char bir göstərici var. Nə ünvanı bu char edir? STUDENT 58: 0x0. JASON Hirschhorn: Right. Yəni bu nə. Burada, bufer daxilində, 0x0 saxlanılır. Ki, biz nə var - biz indi quraşdırma. Belə ki, bu xətt, fread, bir şey qoyur harada mənbəyi? Bu qutu və ya bu qutusuna? Hansı qutusu? Qutusu və ya sağ qutusu sol? Bu sağ qutusu. Bu göstərici aşağıdakı və burada onu qoyur. Biz cəhd və touch yaddaş zaman yeri 0, biz nə əldə edirsiniz? A seqmentasiya günah. Yəni biz indi hata var. Bəli. STUDENT 59: siz yoxdur star bufer qoymaq? Heç bir və ya? Fread üçün? JASON Hirschhorn: Belə fread bir pointer edir. Belə ki, bufer keçir. Və sonra lazımdır de-arayış haradasa fread içərisində. Ancaq yenə də, gördük, bu bir pointer edir. Biz onu star bufer keçmək lazım deyil. Ki, keçən olunacaq burada var nə. Və yəqin ki, bizə bir səhv verəcək biz bunu de-sened edirik, çünki. Sağ? Biz bu göstərici istinad de zaman, zaman biz bu yer daxil olmaq üçün cəhd edin, biz səhv alıyorsanız - bizim seqmentasiya günah. Belə ki, - oops. Biz gdb həyata çıxmaq olacaq. Bizim line - Bizim problem - doğru Burada bu xətt üzrə. Və bir problem çünki Bu xəttin. Necə bir qutusu yaratmaq bilər ki, fread erişilebilir. Sağ? Biz bir ki, bir qutusu yaratmaq lazımdır byte böyük, bir char ölçüsü. Amma biz qutusu əlçatan olmaq lazımdır bu funksiya icra zaman. Belə ki, burada - Bəli. Hər hansı bir fikir? STUDENT 60: Just kimi müəyyən hər hansı bir təsadüfi xarakter. Just char bufer Bərabər etmək karakter. Və sonra, orada bufer zaman - JASON Hirschhorn: gözləyin. Char bufer? Belə ki, heç bir ulduz? STUDENT 60: Bəli. Ulduz almaq. Bir təsadüfi xarakter bərabərdir. JASON Hirschhorn: OK. Belə ki, mənə bir verir. STUDENT 60: Like a və ya bir şey. Və sonra bufer zaman orada, bir istifadə - STUDENT 61: Star? Heç bir Oh, işareti. STUDENT 60: işareti istifadə edin. JASON Hirschhorn: OK. Və nə fwrite haqqında? STUDENT 60: yenidən işareti istifadə edin. JASON Hirschhorn: Bütün hüququ. Belə ki, fikir, biz bir char yaratmaq və o, bir şey qoymaq və ki, char yazın. STUDENT 60: Bəli. JASON Hirschhorn nə insanlar düşünürsünüz? STUDENT 62: Bu convoluted edir. JASON Hirschhorn: OK. Onu cəlb edək. Belə ki, bu dəfə mən bu çəkmək gedirəm biz sonra burada yığını qırmızı, və olacaq - Ooh! Üzr istəyirik. Bu zaman biz deyilən bir şey var bufer və bu yığını var. Düzəltmək? Və biz ilkin, onu qənaət edirik. Sonra biz fread üçün zəng var. Nə fread bu bir byte edir etmir Bizim fayl və yerdə qoyur. Bu nə qoyur şey işarə edir. Bəli, biz bu ünvanı əvvəl - 0x0. İndi biz nə ünvanı var? STUDENT 63: Nə olursa olsun ünvanı bufer. JASON Hirschhorn: Nə olursa olsun ünvanı bufer. Bu yəqin ki, olacaq ki, kimi bir şey. Yəqin ki, bir b ilə başlamaq niyyətindəyik və sonra bir f, və digər altı var hexadecimal rəqəm. Fərqi yoxdur. Bəzi ünvanı. Və biz daxil ki, ünvanını keçən edirik Və biz bir qoymaq olacaq bu ünvanda byte şey. Belə ki, biz bir qoymaq olacaq byte şey burada daxili. Və sonra biz yazmaq olacaq daxilində burada heç nə. Heç bir sualınız varmı ki, haqqında? Kim bu kodu işləyəcək düşünür? Sizcə sizin əl qaldırmaq Bu kodu işləyəcək. Bir münasibət var. Və kim bu kodu işləməyəcək düşünür? Əl qaldırmaq. Başqa hamı olmalıdır əl qaldırmaq. OK. Michael, siz daimi olunur? MICHAEL: Mən qərar verə bilər. Kind ortasında. JASON Hirschhorn: Siz istəyirik ortada. Birini seçin. MICHAEL: I iman lazımdır və bu iş olacaq deyirlər. JASON Hirschhorn: OK. Siz iman və işləyir demək lazımdır? Nə oldu? [Interposing SƏSLƏRİ] JASON Hirschhorn: No seg günah. Necə kontrol edə bilərsiniz əgər iki şeyi bərabər? Iki faylları bərabərdir. TƏLƏBƏ 64: Fərqləri. JASON Hirschhorn: Fərqləri. Arasındakı fərqlərin Fərqləri çek qaytarır iki faylları, və əgər heç bir şey, onlar eyni istəyirik. Biz açmaq əgər, biz fayl almaq. Belə ki, doğru həll idi. Bunun bir daha geri nəzər salaq. Biz, həqiqətən, belə gəlməmişdi başlamaq lazımdır. Bu yəqin ki, bir az baxmaq Siz qoymaq olmasaydı təmiz orada təsadüfi bir şey. Bu point olan, yaratmaq üçün lazım bir şey saxlamaq üçün bəzi kosmik fread və bir şey almaq fwrite həyata. Və şey idi yerli ya olmaq yığını dəyişən - Siz bəzi kosmik malloc'd etdik bilər. Belə ki, biz, həqiqətən, ola bilər yazılı burada malloc və ki, çalışıb olardı. Və sonra biz saxlanılması olardı haradasa yığın bizim şeylər. Amma bu, yəqin ki, əslində ən zərif həll. Yalnız yığını bir yer yaratmaq bunlar getmək üçün. Mən iki şərh olardı. Siz bu növbəsində almaq, olsaydı sonra mənim şərh, bu vurdu almaq aşağıdakı kimi olardı. Bu 1 burada, mənə baxmaq sehrli nömrələri kimi. Bu 1, fread baxımından, əhəmiyyət kəsb edir. Ki, hər şeyi sayı var oxumaq və ya yazmaq üçün. Amma burada bu bir olmalıdır yəqin ki, başqa bir şey ola. Belə ki, bir həll nədir? STUDENT 65: byte ölçüsü. JASON Hirschhorn ki kimi? STUDENT 65: char ölçüsü. JASON Hirschhorn: char ölçüsü. Bəli, byte bir növü deyil. Char işlərin Beləliklə ölçüsü. Biz üst ola bilər bizim kodu # ki, müəyyən. Bir şey BYTE adlı bu, həqiqətən bir char var. Əslində, daha yaxşı yanaşma Bu ola bilər - uint. Kimsə Yox Mu ki, nə? Üzr istəyirik. Mən geri var. Heç bir, gözləyin. Hansı yol getmək edir? Kimsə Yox Mu ki, nə? Bəli. STUDENT 67: standartlaşdırmaq kömək alacağımı sistemləri şeyə rast ki, var - imzalanmamış integers kimi 8 bayt var ki? JASON Hirschhorn: var doğru. Müxtəlif maşınlar, bir char ölçüsü - adətən bir char. Chars adətən bir byte var. Amma digər məlumatlar növləri ölçüsü var 32-bit maşın müxtəlif ölçülü 64-bit maşın qarşı. A uint8_t həmişə 8 bit edir - həmişə bir byte. Mən daxil etmək lazımdır ki, standart int header file. Belə ki, indi, bu, yəqin ki olardı Bu kodu yazmaq üçün ən yaxşı yoldur. Mən sehrli nömrələri qurtarmaq. Və mən də bir daha məntiqi var bufer üçün yazın. Bu, bir byte, sadəcə bir char deyil biz onu gözləyirik nə. Və burada, biz, həqiqətən var bir az daha möhkəm olmuşdur. Biz, bir char zəng deyilik - bəlkə, kim bilir - müxtəlif ola bilər müxtəlif maşınlar ölçüsü. Biz, həqiqətən bu dəqiq deyərək edirik bir byte, həmişə, nə olursa olsun. Biz burada baxmaq əgər, biz cp etmək. Ah-oh. Nə oldu? STUDENT 68: Bu işə bilər. JASON Hirschhorn: Nə? STUDENT 69: mi? STUDENT 70: Siz etmədi bir növü kimi müəyyən edir. STUDENT 71: Amma olmalıdır standart müəyyən edilə. STUDENT 72: Nə olub? STUDENT 73: müəyyən lazımdır bütün caps olacaq? JASON Hirschhorn: Belə ki, deyil # müəyyən edir. Əslində, bu halda, mən typedef istifadə etmək olacaq. Biz kimi istifadə edirik, çünki bir yeri bir növü. Belə ki, bu halda, biz, həqiqətən istəyirəm biz yeni bir növü çap etdiyiniz kimi typedef byte, və bu, mahiyyətcə edir. Bu # müəyyən bir az fərqli. İndi, bizim kodu mükəmməl işləyir. Belə ki, daha, # bir şey edir müəyyən, hər yerdə əvəz digər şey ilə. Bu, sadəcə bir makro var - stenoqrafiya sehrli nömrələri qurtarmaq üçün. Lakin bu halda, çünki biz istəyirik bir növü kimi istifadə - burada - ki, işləmək üçün, biz lazım nə byte typedef üçün. Və biz burada müəyyən edirik. Bu həqiqətən, bir struct deyil yalnız bir imzasız tam. Bu, bir byte uzun. Bu kodu online mövcud ola bilər, və bütün indi olmalıdır. Belə ki, biz - mükəmməl - 13 dəqiqə getmək üçün sol üzərində problem 5 seçin. Mən birlikdə copy.c vasitəsilə gəzmək istəyirəm sonra biz qısa danışmaq lazımdır digər hissələri haqqında problemin müəyyən. Mənə copy.c. qoparmaq imkan Və sərin şey biz, həqiqətən var ki, artıq bu kodu bir çox yazılı. Biz sözün yazdı kodu yalnız Mən zaman burada çıxdı öz Bu yazı. Amma bu, copy.c edir əsasını təşkil ilk iki hissələri whodunit.c üçün müəyyən problem olan yazmaq lazımdır, və resize.c. Üçüncü və son olan Recover.c, Bu problem set hissəsi deyil, bu faylı off əsaslanır. Siz fayl yazmaq lazımdır olacaq, biz ki, bir şablon vermək fayl, lakin bir şey var copy.c. ilə Amma copy.c təşkil edir, çünki İlk iki hissələri, gedirik İndi onun vasitəsilə gəzmək, belə ki, var nə yaxşı mənada. Və comments bəzi üz vermək. Biz artıq bu bəzi yazdıq. Birincisi, biz əmin edirik biz üç dəlilləri almaq. Sonra, biz fayl adını xatırlayaraq edirik. Beləliklə, biz bu addımı atmış zaman biz şey kodlu - zaman bizim cp. Amma burada, onlar edirik bir az təmiz bu. Onlar əmin kontrol edirik həm də faylları, yaxşı onların açılması üçün əlavə. Biz yalnız indi bütün bu kodu yazıb, mən deyiləm bu kodu dayanmaq niyyətində deyil. Next xüsusi var ki, bəzi stuff deyil biz, istifadə etdiyiniz faylları növləri olan bitmap faylları var. Bitmap faylları bəzi metadata onlarla bağlı. Belə ki, bayt ilk bir neçə fayl haqqında sizə. Onlar rəng deyil image piksel. Onlar fayl haqqında sizə. Və siz problem dəsti vasitəsilə oxumaq əgər, daha çox məlumat lazımdır metadata strukturlarının hansı növ bitmaps ilə daxil edilir. Biz bu ilk niyə Amma ki burada bu kodu - müəyyən. Biz metadata oxu - metadata iki ədəd - fayl header və info header. Və biz onun bəzi hissələrini yoxlanılması olunur əmin əsl bitmap fayl etmək davam əvvəl. Və yenə bu detallar biz İndi getmək lazım deyil. Siz problem dəsti vasitəsilə oxumaq əgər, Bu başa düşəcəklər. Uzun hekayə qısa, bu, yalnız söyləyərək, bu bir bitmap fayl və təsdiq. Next, biz bu yazıyoruz həyata fayl. Biz burada görürük. Biz həyata göstərici yazılı edirik. Sonra, biz padding müəyyən edirik. Belə ki, yenə kimi xüsusiyyətləri ilə bir bitmap fayl, bəzi xətləri daxildir sonunda padding. Və siz problem dəsti vasitəsilə oxumaq əgər, Siz padding haqqında daha çox öyrənmək lazımdır. Bu padding tapmaq üçün formula edir. Xatırlamaq vacibdir - Bir bitmap ölçüsünü dəyişdirmək zaman , padding dəyişikliklər fayl. Bir ölçüsünü dəyişdirmək zaman , padding dəyişikliklər fayl. Bu olacaq heç 3 daha çox - Bu, 3 daxil 0 olacaq. Amma ölçüsünü dəyişdirmək zaman bir şey, padding dəyişikliklər. Mən yalnız sıra bir pixel varsa, mən , padding üç bayt lazımdır, çünki hər bir satır dörd Multiples var bir bitmap fayl uzun bayt. Amma mən bunu ikiqat əgər, bir pixel getmək üçün iki pixel, hər biri, deyək, bir byte, sonra ehtiyac etmək üçün padding iki bytes dörd bərabər. Mən bir şey ölçüsünü dəyişdirmək zaman, Mən məbləği dəyişdirmək lazımdır padding Mən. Hər kəsə mənada edirmi? Sonra, biz hər cərgə üzərində təkrarlamaq, və ya bütün satır vasitəsilə. Və sonra biz vasitəsilə təkrarlamaq Hər bir sıra hər sütun. Biz kimi bu bitmap müalicə edirik bir grid kimi biz müalicə etdik 15 board. Kimi biz kərpic müalicə zaman Biz ekranda onları çap. Satır ve sütun A grid. Sonra - biz bu gördüm. Biz, həqiqətən, yalnız bu kodlu. Biz bəzi müvəqqəti saxlama yaradılmışdır. Biz sonra oxumaq, və biz onu yazmaq. Bu biz yalnız nə dəqiq deyil. Dedim Next, çünki hər bir line bəzi padding başa çatır, biz ki, padding üzərində keçmək - köhnə padding. Və sonra biz onu geri əlavə edin. Bu halda, biz yaratmaq edirik eyni dəqiq file. Biz yalnız bunu çıxarmaq edirik. Belə ki, bu xətt cür silly edir. Biz bilər sözün yalnız daxil padding qoymaq Amma faylının ölçüsü dəyişdirmək əgər, Siz hələ bu xətt istəyirsiniz? Biz bir fayl ölçüsünü dəyişdirmək əgər, biz hələ keçmək istəyirəm köhnə padding üzərində? STUDENT 74: Bəli. JASON Hirschhorn: Bəs biz nə. Bu, yenə, sövdələşmə Çünki mənbə faylı. Biz padding haqqında qayğı yoxdur mənbə faylı. Biz növbəti line getmək istəyirəm. Amma biz sadəcə geri qoymaq deyil padding köhnə məbləği. Biz geri qoymaq lazımdır padding yeni məbləği. Beləliklə, biz bir ölçüsü dəyişdirilməsi olduğunuz zaman fayl, biz hələ üzərində keçmək istəyirəm köhnə fayl padding - nə biz oxuyursunuz. Amma biz yazılı ne biz gedirik Bəzi müxtəlif geri qoymaq lazımdır padding sayı ki, biz müəyyən etdik. Bəli. STUDENT 75: bu iki qaydası xətləri sağ, fərqi yoxdur? Siz user edirik, çünki müxtəlif faylları. JASON Hirschhorn: Exactly. Bu iki xətləri qaydası fərqi yoxdur. Biz bu xətti yazın. Bu fayl üçün burada biz yazılı edirik. Ki, vacibdir, belə ki, biz almaq padding hüququ məbləği. Bu fayl ilə məşğul var. Biz keçmək istəyirəm padding üzərində. Biz oxumaq istəmirəm - biz bir dəfə bir byte oxu edirsinizsə, biz o padding bayt haqqında qayğı yoxdur. Biz növbəti line hərəkət etmək istəyirəm. Nəhayət Lucy bizim üçün verdi kimi, biz faylları yaxın və 0 qayıtmaq. Belə ki, bu copy.c. edir Və biz həqiqətən yazdı - biz ən sərf mahiyyətcə, bu yazı bölmə. Siz bu etmişdir. Belə ki, inşallah yaxşı bir hissi var Burada neler edir. Böyük fərq, vicdanla, yalnız ilə məşğul ki, bu ilk hissəsi bitmap faylları xüsusiyyətləri. Mən, mənim növbəti slayd kimi var biz nə üçün lazımdır? Yaxşı, whodunit düşünməyə imkan verir. Və kimsə üçün olan vasitəsilə oxumaq Problem set, biz nə whodunit nə etmək lazımdır? Sadəcə. Aleja. Aleja: Siz iştirak edə bilər qırmızı bildirir ki, hər piksel. Və sonra - cür? JASON Hirschhorn: OK. Belə ki, hər hissəsi çıxarmaq qırmızı bildirir ki, pixel. Ki, bütün yaxın, lakin deyil. STUDENT 76: Bəli, var bunu müxtəlif yollarla. JASON Hirschhorn: OK. Mənə bir yol verir. STUDENT 76: bütün qırmızı almaq və sonra vurğulamaq mavi və yaşıl. JASON Hirschhorn: OK. Belə ki, bu yolları, həm də verilir - biz bir pixel vermək kimi, səslənir, bu a, qırmızı, mavi, yaşıl səviyyəsində var. Biz nisbi səviyyəsi dəyişdirmək istədiyiniz Bu asılı olaraq, qırmızı, mavi, yaşıl ki, pixel haqqında. Bu kodu biz dəyişdirmək lazımdır nisbi qırmızı, mavi, yaşıl bir pixel səviyyəsi. Biz oxumaq sonra - biz onu yazmaq əvvəl? Mənə line sıra verir. Birden TƏLƏBƏLƏR: 83. JASON Hirschhorn: 83. Belə ki, burada. Whodunit üçün, kodu sizə lazım write bütün orada getmək lazımdır. Və yalnız kod yazmaq lazımdır. Biz eşitdim kimi, bütün etmək lazımdır, çünki etmək, bu nisbi mavi dəyişdirmək hər pixel qırmızı, yaşıl səviyyəsi. Siz oxumaq etdik və indi istəyirik onu yazmaq üçün gedir. Necə əldə edirsiniz - Mən bu şey varsa burada, üç adlanır və bu, var RGBTRIPLE yazın - yaxşı, biz bmp.h baxdı əgər, RGBTRIPLE nədir? STUDENT 77: Bu struct var. JASON Hirschhorn: RGBTRIPLE yapı'n. Biz aşağı burada görürük. Və mən, demək, çıxış etmək istədiyini, əgər struct qırmızı səviyyəsi, necə Mən bu struct qırmızı səviyyəsi daxil olmaq? [CLASS Murmurs] STUDENT 78: RGBTRIPLE.rgbtred? JASON Hirschhorn: Elədir? STUDENT 79: Bu üç olmalıdır əvəzinə RGBTRIPLE dot dot? JASON Hirschhorn: Triple. Triple yerli dəyişən, belə ki, burada, burada heç bir göstəricilər var. Beləliklə, biz yalnız dot notation istifadə edin. Bu mənə qırmızı səviyyədə verəcək. Mən bunu dəyişmək istəyirsinizsə, mən yalnız müəyyən müxtəlif bir şey bərabərdir. Belə ki, yenə kodu bu xətt çatmaz bu struct daxilində dəyişən, və biz yeni bir şey üçün qura bilərsiniz. Belə ki whodunit üçün, yenidən, bu, əslində, biz nə etmək lazımdır. Çox sadə. Yalnız bəzi nisbi səviyyəsi dəyişdirmək və kod gedir bu deyil. Digər tərəfdən, ölçüsünü, bir az trickier edir. Əslində, ölçüsünü yəqin ki, Bu problemin trickiest hissəsi seçin. Biz artıq getmək üçün üç dəqiqə var. Ancaq yenə də, biz artıq yazdıq Bu kodu çox, belə ki, biz olduqca tanış olmalıdır. Biz nə istədiyim bəzi şeylər hansılardır Siz artıq oxumaq sonra əgər, ölçüsünü Problem set? Sən onları mənə versələr, biz onlar haqqında danışmaq olar. Biz nə istəyirik bəzi şeylər hansılardır? STUDENT 80: Şaquli - belə ki, üfüqi ölçüsünü var lakin şaquli eləcə ölçüsünü? JASON Hirschhorn: Biz sunulur əgər pixel, və biz bir tərəfindən ölçüsünü istəyirəm iki amil, indi olmalıdır üfüqi boyutlandırılır və boyutlandırılır şaquli. Ki, hissi edirmi? Bəli. Belə ki, yəqin ki, var böyük problem. Və biz bir Saniyə ki, haqqında danışmaq lazımdır. Bəli. STUDENT 81: Mən bu fikir yolu Siz çap həyata lazım idi - JASON Hirschhorn: gözləyin. Siz nə bizə deyil. Biz məntiq danışmaq olacaq. STUDENT 81: OK. Sual nə idi? JASON Hirschhorn: Siz yalnız Sizin əl qaldırdı. Heç bir sual var idi. Mənə təqdim edək. Mənə yalnız bu qısa müzakirə edək. Belə ki, biz, biz bir pixel istəyirəm həm üfüqi, onu kopya və şaquli. Belə ki, ideal nə biz burada, biz Bizim pixel oxumaq, biz onu yazmaq dəfə lakin çox. Amma sonra biz, burada oyun var, çünki sonra biz keçmək istəyirəm növbəti line və yazmaq növbəti xətti başlayan. Beləliklə, biz həm kopya etmək istəyirsinizsə üfüqi və şaquli, nə Bunu etmək üçün yaxşı bir yol - yaxşı bir olsa bunu? Beləliklə, biz daim axtarmaq lazım deyil Bizim fayl ətrafında şeyi yerləşdirmək. Bu sual ola bilər mənada, amma düşünürəm ona cavab kömək edəcək. STUDENT 82: bir sıra yaradın? JASON Hirschhorn: Belə edək edirəm bir sıra kimi hər bir fayl. Nin satır baxımından hesab edək. Biz kiçik bizim ilk sıraya varsa şəkil, biz ki, sıra edə bilərsiniz böyük bir şəkil bir böyük sıra daxil, və sonra Lakin ki, sıra kopya bu təkrar etmək lazımdır bir çox dəfə, daha pixel pixel tərəfindən gedən daha, zaman confusing olur faylları ilə məşğul. Biz əgər çünki - I yer həyata çalışan alıram. Bu, bizim fayl və biz var ki, əgər orada bir pixel, və biz bunu qoymaq istəyirəm orada, biz hələ də bəzi şeylər var orada biz olduğunuzda getmək lazımdır ki, yazılı və yeni fayl yaratmaq - Bizim fayl ki, iki dəfə böyük. Amma bu fayl funksiyaları ilə həqiqətən çətindir yeni xətlərin ətrafında keçmək kimi, sonra burada geri və orada şeyi qoymaq. Bu şey üçün demək olar ki, mümkün deyil ki, kimi ki, anlamlı əgər. Biz satır baxımından hesab edirəm ki, belə ki, biz bizim sıra almaq və sonra qoyun - şaquli satır kopya. Və biz boyutlandırma ilə məşğul necə şaquli üfüqi deyil. Bu cür sürətli idi və bir az confusing. Təəssüf ki, bizim vaxt qədər. Mən sizin üçün kənarda durmaq edəcək burada haqqında suallarınız olan bərpa, o cümlədən problem set. Belə ki, indi üçün təxirə bildirin. Və yenə, Hər hansı bir sualınız varsa, Biz kənarda sohbet edə bilərsiniz.