1 00:00:00,000 --> 00:00:07,810 2 00:00:07,810 --> 00:00:09,840 >> ЈАСОН Hirschhorn: Добредојдовте сите, Недела 6. 3 00:00:09,840 --> 00:00:14,790 Јас сум среќен да сите ќе видите жив и здрав по Квиз 0, затоа што знам дека 4 00:00:14,790 --> 00:00:15,810 беше малку груб. 5 00:00:15,810 --> 00:00:18,370 Но, за среќа, се што направи неверојатно добро. 6 00:00:18,370 --> 00:00:21,680 И така тоа е прекрасно. 7 00:00:21,680 --> 00:00:25,840 Ако сте во мојот дел, јас сум со оглед на повеќето од вас се врати вашите квизови веќе. 8 00:00:25,840 --> 00:00:28,050 >> Неколку од вас, јас сум состанок по класа. 9 00:00:28,050 --> 00:00:32,360 И ако сте продолжување студент и вие не ги добиле вашите квиз назад 10 00:00:32,360 --> 00:00:35,490 сепак, вашиот ТФ е веројатно работат на тоа и оценување на тоа, и ќе го добие назад 11 00:00:35,490 --> 00:00:36,490 да ви наскоро. 12 00:00:36,490 --> 00:00:39,650 Па ми продолжување студентите кои се гледање токму сега - се надевам дека живееме - 13 00:00:39,650 --> 00:00:42,880 Јас ќе ја добиете вашата квизови кратко, како и. 14 00:00:42,880 --> 00:00:45,670 >> Нашата агенда за денес е како што следува. 15 00:00:45,670 --> 00:00:50,170 Прво, ние ќе одиме над некои ресурси кои CS50 обезбедува за вас. 16 00:00:50,170 --> 00:00:54,590 Ние ќе одиме во текот Квиз 0 следниот, и Јас ќе одговори на сите прашања никого 17 00:00:54,590 --> 00:00:57,360 има за одредени проблеми. 18 00:00:57,360 --> 00:01:02,050 И тогаш, ние ќе се случува во текот на датотека I / O и проблемот поставени 5. 19 00:01:02,050 --> 00:01:07,360 Оние последните две теми ќе се сочинуваат најголемиот дел од делот денес. 20 00:01:07,360 --> 00:01:11,680 >> Ја ставив оваа листа секоја недела како потсетник за сите вас, но на основни 21 00:01:11,680 --> 00:01:14,650 секција, имаме само 90 минути - ние не се во состојба да ги покрие сè што можам 22 00:01:14,650 --> 00:01:16,280 би сакал да се покријат за вас момци. 23 00:01:16,280 --> 00:01:21,170 Но ние имаме еден тон на ресурсите за можете да се осврне како можете да се запознаете 24 00:01:21,170 --> 00:01:24,000 материјалот и работа преку вашиот проблем поставува. 25 00:01:24,000 --> 00:01:30,810 >> Потсетник дека имам онлајн текст кутија, формиран за да се пополни ако 26 00:01:30,810 --> 00:01:33,250 имате било какви повратни информации за мене, позитивни и 27 00:01:33,250 --> 00:01:35,180 конструктивна, околу секција. 28 00:01:35,180 --> 00:01:38,600 Дека рачно се наоѓа веднаш овде. 29 00:01:38,600 --> 00:01:43,250 Затоа ве молам, земи еден момент ако имате било какви повратни информации, без оглед дали за време на секција, 30 00:01:43,250 --> 00:01:48,030 или по, или откако ќе се види на видео онлајн, за да ми даде вашето мислење. 31 00:01:48,030 --> 00:01:52,100 Јас навистина го цениме и сите од неа. 32 00:01:52,100 --> 00:01:55,730 >> Па јас сум бил имаат мали разговори со многу од моите 33 00:01:55,730 --> 00:01:59,350 студенти во текот на неделата - како јас рака назад квизови, зборувајќи за 34 00:01:59,350 --> 00:02:01,480 Се разбира, гледајќи како правиш. 35 00:02:01,480 --> 00:02:05,120 И една тема има излезе одново и над се зборува за - во 36 00:02:05,120 --> 00:02:05,660 особено - 37 00:02:05,660 --> 00:02:07,710 Проблемот поставува. 38 00:02:07,710 --> 00:02:13,090 И јас се врзуваат таа тема на табла, токму сега. 39 00:02:13,090 --> 00:02:16,630 >> Во суштина, постои разлика помеѓу вртење во нешто што е 40 00:02:16,630 --> 00:02:19,590 направи правилно и нешто што е направено добро. 41 00:02:19,590 --> 00:02:22,920 Повеќето луѓе се прави фантастична во однос на точноста - 42 00:02:22,920 --> 00:02:25,460 5 или 4 за сите psets. 43 00:02:25,460 --> 00:02:27,930 Повеќето луѓе се оние сите на време. 44 00:02:27,930 --> 00:02:31,150 >> Сепак, само затоа што сте го направиле нешто во право, не значи сте 45 00:02:31,150 --> 00:02:34,450 направи нешто како елегантно, или ефикасно, или како чисто како што 46 00:02:34,450 --> 00:02:35,270 може да го направи. 47 00:02:35,270 --> 00:02:36,790 И тоа е она што дизајн - 48 00:02:36,790 --> 00:02:39,230 и во помал степен, стил - 49 00:02:39,230 --> 00:02:40,450 оски се за. 50 00:02:40,450 --> 00:02:45,130 Па јас сум се што туркање, и други TFS се врши притисок вас момци, не само возврат 51 00:02:45,130 --> 00:02:48,320 во работи што се точни, но се претвори во работите кои се кодирани и. 52 00:02:48,320 --> 00:02:53,060 >> Не прави непотребни за петелки, не recalculating променливи ако 53 00:02:53,060 --> 00:02:53,800 вие не мора да се. 54 00:02:53,800 --> 00:02:58,520 На пример, гледајќи назад на проблемот постави 4, при пласирањето на тули на 55 00:02:58,520 --> 00:03:03,070 екран, секој ред - секој тула во дадена ред ги има истите y-координатата - 56 00:03:03,070 --> 00:03:04,390 на иста висина координата. 57 00:03:04,390 --> 00:03:07,930 >> Така што y-координата не треба да се се пресметува во внатрешноста на ентериер 58 00:03:07,930 --> 00:03:11,070 вгнездени ЗА јамка дека најверојатно користи да се стави оние тули на екранот. 59 00:03:11,070 --> 00:03:14,030 Тоа само треба да се пресметува секој време за да преминете ред, или 60 00:03:14,030 --> 00:03:15,200 поместува надолу ред. 61 00:03:15,200 --> 00:03:19,760 Така велат ако има 10 цигли во ред, секој тули може да ги имаат истите 62 00:03:19,760 --> 00:03:22,260 y-координата, а тоа y-координата само може да се пресмета 63 00:03:22,260 --> 00:03:23,550 еднаш за сите од нив. 64 00:03:23,550 --> 00:03:27,810 >> Тоа не треба да се пресметува 10 времиња, ниту пак таа пресметка потреба 65 00:03:27,810 --> 00:03:30,220 да се случи во конкретната повик на функција - 66 00:03:30,220 --> 00:03:33,020 новиот gracked повик функција. 67 00:03:33,020 --> 00:03:37,820 Значи, ако тоа беше малку збунувачки за вас, повеќе генерички, работите кои 68 00:03:37,820 --> 00:03:40,730 не треба да се случи секој пат кога да одите преку ЗА јамка не треба да биде 69 00:03:40,730 --> 00:03:42,900 стави во внатрешноста на ЗА јамка и не треба да се случуваат секој пат кога ќе одам 70 00:03:42,900 --> 00:03:44,080 преку ЗА јамка. 71 00:03:44,080 --> 00:03:49,270 >> Друг добар дизајн пример видовме во Недела 3 15, може да се задржи 72 00:03:49,270 --> 00:03:50,500 ги пратите на нула. 73 00:03:50,500 --> 00:03:53,600 Па кога ќе се иницијализира на одборот, може спаси - во една глобална променлива, можеби - 74 00:03:53,600 --> 00:03:56,140 на x и y-координатата на нула. 75 00:03:56,140 --> 00:03:57,520 И тогаш кога тебе - 76 00:03:57,520 --> 00:04:00,310 во вашиот потег функција, секогаш кога ќе се направи успешна потег, ажурирање на 77 00:04:00,310 --> 00:04:02,040 локацијата на нула. 78 00:04:02,040 --> 00:04:06,240 >> Дека ќе те спаси од тоа да имаат да се направи вгнездени јамки за да се погледне преку 79 00:04:06,240 --> 00:04:10,700 се качат во секое време во вашиот потег функција и да се најде на нула, или најдете плочка, 80 00:04:10,700 --> 00:04:12,460 а потоа се провери што е до него. 81 00:04:12,460 --> 00:04:16,329 Наместо тоа, мора локацијата на нула, можете само да се погледне над, под, 82 00:04:16,329 --> 00:04:21,160 и на лево и десно од него, да се најде плочка сте биле барате. 83 00:04:21,160 --> 00:04:24,970 >> Значи во однос на програмите сме пишување, тие никогаш не се доволно големи 84 00:04:24,970 --> 00:04:28,580 дека некои од овие дизајн одлуки навистина се случува да го попречат вашиот 85 00:04:28,580 --> 00:04:31,670 програма, или може да работи побавно, или можеби дури и снема меморија. 86 00:04:31,670 --> 00:04:35,030 Но ние сме уште сте туркање момци да се напише како елегантен и 87 00:04:35,030 --> 00:04:36,450 ефикасен код што е можно. 88 00:04:36,450 --> 00:04:39,910 >> Значи, ако правиш заврши пишување работи кои имаат значително поголем 89 00:04:39,910 --> 00:04:44,660 обем, тие ќе бидат напишани со добра дизајн во прилог на се точни. 90 00:04:44,660 --> 00:04:46,300 Па голем број од вас имаат донесе тоа. 91 00:04:46,300 --> 00:04:48,560 Тоа е нешто што го барате - нешто ние ќе продолжиме да 92 00:04:48,560 --> 00:04:49,840 притисни вас момци натаму. 93 00:04:49,840 --> 00:04:52,460 >> Ако некогаш имате било какви прашања во врска со дизајн на вашата програма, се чувствуваат слободни 94 00:04:52,460 --> 00:04:56,870 да допрат до мене, и јас сум среќен за да прошетка низ вашата програма со тебе, 95 00:04:56,870 --> 00:05:01,320 и се истакне некои од дизајн одлуки што го направи, и да ви даде некои 96 00:05:01,320 --> 00:05:06,240 предлози за тоа како да се направи дури и подобар дизајн одлуки. 97 00:05:06,240 --> 00:05:08,870 >> Па ние ќе да се движат на да зборуваме за Квиз 0. 98 00:05:08,870 --> 00:05:11,300 Пред тоа го правиме, Дали некој имате било какви прашања во врска со она што 99 00:05:11,300 --> 00:05:14,252 Сум покриен досега? 100 00:05:14,252 --> 00:05:21,500 >> [Шушкава БУЧАВА] 101 00:05:21,500 --> 00:05:22,750 >> ЈАСОН Hirschhorn: Седум секунди. 102 00:05:22,750 --> 00:05:23,250 OK. 103 00:05:23,250 --> 00:05:24,970 Ајде да зборуваме за Квиз 0 за малку. 104 00:05:24,970 --> 00:05:26,700 Повеќето од вас имаат вашите Квиз 0 мрежа. 105 00:05:26,700 --> 00:05:29,820 Ако не, се надевам ќе се сеќава на него малку. 106 00:05:29,820 --> 00:05:34,770 Но, ако сте ги направиле Квиз 0, тогаш ќе исто така имаат пристап до PDF онлајн во 107 00:05:34,770 --> 00:05:35,890 примерокот решенија. 108 00:05:35,890 --> 00:05:39,480 >> Дали некој има било какви прашања пред ние фрламе во материјалот на недела за 109 00:05:39,480 --> 00:05:41,520 посебен проблем на Квиз 0 - 110 00:05:41,520 --> 00:05:44,630 зошто одговорот е што е тоа? 111 00:05:44,630 --> 00:05:47,255 Дали некој збунети околу нешто? 112 00:05:47,255 --> 00:05:50,230 Дури и ако имаш проблем во право, но само би сакал мене да го објаснам малку 113 00:05:50,230 --> 00:05:52,640 повеќе, јас сум среќен да го направи тоа сега. 114 00:05:52,640 --> 00:05:57,800 >> Па сум ги распрашувала вие момци да се подготвени со некои 115 00:05:57,800 --> 00:05:59,440 мисли за Квиз 0. 116 00:05:59,440 --> 00:06:02,660 Па кој би сакале да ни се започна со прашање или 117 00:06:02,660 --> 00:06:04,655 коментира за Квиз 0? 118 00:06:04,655 --> 00:06:07,435 119 00:06:07,435 --> 00:06:10,410 >> [Хартија шушкава] 120 00:06:10,410 --> 00:06:11,470 >> ЈАСОН Hirschhorn: Не секој направи совршено. 121 00:06:11,470 --> 00:06:12,720 Па знам [се смее] 122 00:06:12,720 --> 00:06:15,950 таму треба да биде некои прашања за Квиз 0. 123 00:06:15,950 --> 00:06:27,940 124 00:06:27,940 --> 00:06:28,590 OK. 125 00:06:28,590 --> 00:06:29,210 Да. 126 00:06:29,210 --> 00:06:29,600 Ompica. 127 00:06:29,600 --> 00:06:30,520 >> OMPICA: Број 10. 128 00:06:30,520 --> 00:06:33,560 >> ЈАСОН Hirschhorn: Број 10. 129 00:06:33,560 --> 00:06:35,400 Кои едната беше број 10? 130 00:06:35,400 --> 00:06:35,840 >> OMPICA: На - 131 00:06:35,840 --> 00:06:36,420 >> ЈАСОН Hirschhorn: Јас haven't - 132 00:06:36,420 --> 00:06:37,670 >> OMPICA: На вклучуваат - 133 00:06:37,670 --> 00:06:40,060 134 00:06:40,060 --> 00:06:42,180 >> ЈАСОН Hirschhorn: Број 10 беше осум на i - пишување осум до јас? 135 00:06:42,180 --> 00:06:42,980 >> OMPICA: Да. 136 00:06:42,980 --> 00:06:43,630 >> ЈАСОН Hirschhorn: OK. 137 00:06:43,630 --> 00:06:47,390 Значи уште една прашање што би можеле да имаат праша беше јас видовити? 138 00:06:47,390 --> 00:06:48,630 Одговорот е да. 139 00:06:48,630 --> 00:06:52,060 Во делот пред квиз, го прашав вие момци да кодот двете Стерлинг и 140 00:06:52,060 --> 00:06:52,980 осум до i. 141 00:06:52,980 --> 00:06:54,770 Двете од нив се случи да се појави на квизот. 142 00:06:54,770 --> 00:06:57,510 Па се надевам дека, сте платиле внимание на тоа. 143 00:06:57,510 --> 00:07:02,520 >> И ако сте имале, тогаш вие ќе треба веројатно направи добро на оние двајца. 144 00:07:02,520 --> 00:07:06,030 Но осум до јас, ние всушност не код во класа, но тоа беше, повторно, 145 00:07:06,030 --> 00:07:07,500 праша на квизот. 146 00:07:07,500 --> 00:07:13,270 Па неколку работи кои треба да се земе се забележи кога кодирање осум до i. 147 00:07:13,270 --> 00:07:17,320 Првото нешто, по прашањето, беше дека е потребно да се провери ако стрингот 148 00:07:17,320 --> 00:07:20,300 е еднаква на нула. 149 00:07:20,300 --> 00:07:28,060 >> Неколку луѓе се обидоа да се провери подоцна во програмата, доколку е заградата бев - 150 00:07:28,060 --> 00:07:30,940 па специфичен карактер во кои низа - е еднаква на нула. 151 00:07:30,940 --> 00:07:35,600 Но запомнете, дека нула е во суштина - тоа е добро да се мисли на 152 00:07:35,600 --> 00:07:39,100 нула како нула покажувачот - покажувач на нула - 153 00:07:39,100 --> 00:07:40,920 некаде во меморијата каде што никогаш не можете да пристапите. 154 00:07:40,920 --> 00:07:44,730 >> Па ако нешто е еднаква на нула, ќе знаат дека тоа не е иницијализиран, 155 00:07:44,730 --> 00:07:46,430 или таму нема ништо. 156 00:07:46,430 --> 00:07:50,950 Па и не е знак ѕвезда, S заградата јас е знак. 157 00:07:50,950 --> 00:07:57,410 Па тоа го прави смисла да се споредува s до нула, но не и заградата i за ништовни. 158 00:07:57,410 --> 00:07:59,390 Но, повторно - така што беше првото нешто дека требаше да се направи - 159 00:07:59,390 --> 00:08:03,510 проверете, за да бидете сигурни дека всушност добив вистински стринг. 160 00:08:03,510 --> 00:08:08,020 >> Следно, ќе сакаше да оди преку секој лик во низа. 161 00:08:08,020 --> 00:08:12,500 И така тоа ќе биде како на заградата Јас, на пример, ако јас ти е iterator. 162 00:08:12,500 --> 00:08:17,250 И да ги преземат тој лик, и добие својата вистинска вредност. 163 00:08:17,250 --> 00:08:21,800 Вие сте го чуваат како знак, но вредност ASCII за нула - 164 00:08:21,800 --> 00:08:23,010 нула како лик - 165 00:08:23,010 --> 00:08:25,450 всушност и не е цел број нула. 166 00:08:25,450 --> 00:08:28,700 Тоа е некој друг број, кој може да се гледам нагоре во ASCII табелата. 167 00:08:28,700 --> 00:08:30,790 >> Значи еден од начините да се поправи за тоа - веројатно најдобар начин да се поправи 168 00:08:30,790 --> 00:08:33,760 дека - е да одземе од него ликот вредност - 169 00:08:33,760 --> 00:08:35,140 нула како лик. 170 00:08:35,140 --> 00:08:38,490 Значи минус една понуда, нула, уште една понуда. 171 00:08:38,490 --> 00:08:44,620 Која ќе земе она број кој го имате како знак, и да го еднаква на 172 00:08:44,620 --> 00:08:46,720 бројот како вистински број. 173 00:08:46,720 --> 00:08:50,300 >> И тоа е многу слична на пристап многу луѓе се во 174 00:08:50,300 --> 00:08:52,800 проблем во собата 2, со Цезар и Viginere - 175 00:08:52,800 --> 00:08:55,160 оние шифри, кога ќе беа ги врти. 176 00:08:55,160 --> 00:08:59,210 Значи откако ќе го имате како број од нула до девет, а потоа - во зависност од 177 00:08:59,210 --> 00:09:02,750 каде оди во крајна број - што треба да го усоврши 178 00:09:02,750 --> 00:09:04,120 со сила на 10. 179 00:09:04,120 --> 00:09:07,340 >> Некои луѓе се пресели од назад кон пред, и множи на поединецот 180 00:09:07,340 --> 00:09:08,940 број од силата на 10. 181 00:09:08,940 --> 00:09:11,160 Некои луѓе се пресели од пред да се врати - 182 00:09:11,160 --> 00:09:14,430 и така се на највисоко со цел броеви првиот - 183 00:09:14,430 --> 00:09:18,190 и ќе се спаси оние во глобалната контра променлива. 184 00:09:18,190 --> 00:09:20,880 А потоа секој пат преку ЗА јамка, множете се дека гигант глобалната 185 00:09:20,880 --> 00:09:25,640 се спротивстави на променлива со 10, да се направи простор за следниот знак. 186 00:09:25,640 --> 00:09:28,750 >> Така што беше малку збунувачки, без мене тоа пишување на табла. 187 00:09:28,750 --> 00:09:31,550 Но растворот на мострата е на располагање на вас. 188 00:09:31,550 --> 00:09:32,870 Но тоа беа големи работи ние го барате. 189 00:09:32,870 --> 00:09:36,400 Исто така провери да бидете сигурни дека секој индивидуален карактер беше навистина 190 00:09:36,400 --> 00:09:39,780 карактер помеѓу нула и девет, и не некои други карактер, како А, 191 00:09:39,780 --> 00:09:41,160 на пример. 192 00:09:41,160 --> 00:09:43,150 >> Тоа беа работи што бараа во тоа прашање. 193 00:09:43,150 --> 00:09:46,510 194 00:09:46,510 --> 00:09:47,980 Дали тоа одговори на вашето прашање? 195 00:09:47,980 --> 00:09:49,320 >> OMPICA: Да. 196 00:09:49,320 --> 00:09:50,240 >> ЈАСОН Hirschhorn: OK. 197 00:09:50,240 --> 00:09:53,940 Дали постојат било какви други прашања за Квиз 0? 198 00:09:53,940 --> 00:09:55,440 Што е со составувањето? 199 00:09:55,440 --> 00:09:56,740 Сите составувањето нели? 200 00:09:56,740 --> 00:09:58,370 Бр. 201 00:09:58,370 --> 00:09:58,840 Имаше - 202 00:09:58,840 --> 00:10:01,010 [Се смее] 203 00:10:01,010 --> 00:10:03,265 Било какви прашања во врска со компилација процес? 204 00:10:03,265 --> 00:10:06,050 205 00:10:06,050 --> 00:10:06,966 Wow. 206 00:10:06,966 --> 00:10:11,090 >> [Хартија шушкава] 207 00:10:11,090 --> 00:10:11,520 >> ЈАСОН Hirschhorn: Да. 208 00:10:11,520 --> 00:10:11,700 Мајкл. 209 00:10:11,700 --> 00:10:14,140 >> Мајкл: Дали е број 7 - случаен? 210 00:10:14,140 --> 00:10:16,500 >> ЈАСОН Hirschhorn: Број 7. 211 00:10:16,500 --> 00:10:20,670 Број 7 беше добие случаен цел број. 212 00:10:20,670 --> 00:10:21,110 Одличен. 213 00:10:21,110 --> 00:10:25,630 Значи ти си даде цел број еден и цел број b, и дека сакате случаен 214 00:10:25,630 --> 00:10:28,710 цел број помеѓу a и b. 215 00:10:28,710 --> 00:10:31,740 Ние всушност може да ја напишам оваа една на одборот, бидејќи ова 216 00:10:31,740 --> 00:10:33,320 беше една линија од код - 217 00:10:33,320 --> 00:10:34,390 еден начин да го направи тоа. 218 00:10:34,390 --> 00:10:37,810 >> Па ние сме даден drand како функција што може да се користи. 219 00:10:37,810 --> 00:10:38,820 И она што не drand - 220 00:10:38,820 --> 00:10:40,290 претпоставувајќи дека е се носителка - 221 00:10:40,290 --> 00:10:42,316 што значи drand врати? 222 00:10:42,316 --> 00:10:44,840 >> Мајкл: А плови помеѓу 0.0 и 1.0. 223 00:10:44,840 --> 00:10:45,530 >> ЈАСОН Hirschhorn: Голем број - Да. 224 00:10:45,530 --> 00:10:47,910 A број помеѓу 0 и 1. 225 00:10:47,910 --> 00:10:51,760 И така имаме б и. 226 00:10:51,760 --> 00:10:55,480 А потоа ние имаме случаен број помеѓу 0 и 1 што ни се дава од страна на drand. 227 00:10:55,480 --> 00:11:01,480 228 00:11:01,480 --> 00:11:06,630 Некои луѓе се обидоа да се стави б, или б минус а, или нешто во оние 229 00:11:06,630 --> 00:11:07,960 загради. 230 00:11:07,960 --> 00:11:11,210 Тоа би значело дека тие се аргументи на оваа функција. 231 00:11:11,210 --> 00:11:13,450 >> drand не презема никакви аргументи - како getString не 232 00:11:13,450 --> 00:11:14,330 Не ги преземат сите аргументи. 233 00:11:14,330 --> 00:11:16,600 Па тоа е само отворен paren, во близина paren - и дека, сама по себе, е 234 00:11:16,600 --> 00:11:17,330 на повик на функција. 235 00:11:17,330 --> 00:11:19,770 И кој ви дава голем број помеѓу 0 и 1. 236 00:11:19,770 --> 00:11:22,820 Се разбира, ние имаме цела низа дека бројот може да биде внатре 237 00:11:22,820 --> 00:11:28,470 >> Каже, ако b е 10 и е 5, ние навистина сакаат број со опсег од 5. 238 00:11:28,470 --> 00:11:36,940 Па следниот нешто што ние треба да направите е да размножуваат ова со опсег b минус. 239 00:11:36,940 --> 00:11:40,380 Значи под претпоставка дека е множат. 240 00:11:40,380 --> 00:11:42,590 И тоа ќе ни даде голем број рамките на даден опсег. 241 00:11:42,590 --> 00:11:46,610 И дека одредени фреквенции да биде разликата помеѓу б минус. 242 00:11:46,610 --> 00:11:50,030 >> И конечно, тоа ќе само да го даде од - велат дека се движи помеѓу б минус 243 00:11:50,030 --> 00:11:52,520 е 5, што ќе ни даде број од 0 до 5. 244 00:11:52,520 --> 00:11:56,000 Но, ако е во фактот 5, ние треба да ги зајакне овој опсег до каде тоа е 245 00:11:56,000 --> 00:12:01,380 всушност, би требало да биде, со додавање на. 246 00:12:01,380 --> 00:12:02,580 Така што се добива на логиката право. 247 00:12:02,580 --> 00:12:03,745 И тогаш, ќе имате друго прашање? 248 00:12:03,745 --> 00:12:04,547 >> Мајкл: Не 249 00:12:04,547 --> 00:12:06,010 Јас само се чувствувам навистина неми токму сега. 250 00:12:06,010 --> 00:12:06,405 [Се смее] 251 00:12:06,405 --> 00:12:06,730 >> ЈАСОН Hirschhorn: Не 252 00:12:06,730 --> 00:12:08,640 Не се чувствувам навистина неми. 253 00:12:08,640 --> 00:12:10,560 Голем број на луѓе се бореше со ова прашање. 254 00:12:10,560 --> 00:12:13,920 И тогаш, друго прашање е, drand, што рече ти, ти дава плови - 255 00:12:13,920 --> 00:12:14,940 враќа плови. 256 00:12:14,940 --> 00:12:18,020 Но оваа функција всушност праша за цел број да бидат вратени. 257 00:12:18,020 --> 00:12:23,700 >> Вие не треба да го дадат ова експлицитно цел број, бидејќи овие 258 00:12:23,700 --> 00:12:29,090 операции ќе го третираат како сите на плови - како децимален број. 259 00:12:29,090 --> 00:12:31,570 Вака волја - дури и ако тоа е цел број, тоа ќе 260 00:12:31,570 --> 00:12:32,890 се множи правилно. 261 00:12:32,890 --> 00:12:34,000 Сите множење ќе работат. 262 00:12:34,000 --> 00:12:35,060 Вие не треба да го дадат тука. 263 00:12:35,060 --> 00:12:36,480 Всушност, вие не треба да го дадат. 264 00:12:36,480 --> 00:12:37,310 >> Тоа би - 265 00:12:37,310 --> 00:12:40,750 ако би фрли број дека е помеѓу 0 и 1 - 266 00:12:40,750 --> 00:12:42,680 случаен број, со подвижна запирка - 267 00:12:42,680 --> 00:12:47,850 тогаш или ќе биде само 0 или 1, така што ќе изгубите сето тоа прецизност. 268 00:12:47,850 --> 00:12:50,120 Но, на крајот, кога ќе се вратат, тој автоматски добива 269 00:12:50,120 --> 00:12:51,620 испратен назад како цел број. 270 00:12:51,620 --> 00:12:56,870 Значи, вие не треба да се направи дека кастинг себе. 271 00:12:56,870 --> 00:13:00,810 >> Така што ова беше одговорот на тоа прашање, број 7. 272 00:13:00,810 --> 00:13:02,190 Било какви други прашања на Квиз 0? 273 00:13:02,190 --> 00:13:03,300 Да, Ени. 274 00:13:03,300 --> 00:13:05,050 >> ANNIE: Кога ние ги користиме рекурзивен - 275 00:13:05,050 --> 00:13:07,850 кога ние ги користиме итеративен петелки? 276 00:13:07,850 --> 00:13:10,210 >> ЈАСОН Hirschhorn: Кога го користите рекурзивен - така поопшто, 277 00:13:10,210 --> 00:13:14,110 добрите и лошите страни на рекурзијата наспроти итеративен пристап. 278 00:13:14,110 --> 00:13:17,110 Некој може да понуди про или един? 279 00:13:17,110 --> 00:13:19,460 Ве молам? 280 00:13:19,460 --> 00:13:20,140 Не може никого. 281 00:13:20,140 --> 00:13:22,526 Кои можат да понудат про или един? 282 00:13:22,526 --> 00:13:26,963 >> [Хартија шушкава] 283 00:13:26,963 --> 00:13:29,730 >> СТУДЕНТСКИ 1: Рекурзивни е помалку кодирање - помалку пишување? 284 00:13:29,730 --> 00:13:33,170 >> ЈАСОН Hirschhorn: Значи генерално, рекурзија особено, функција - 285 00:13:33,170 --> 00:13:35,750 или алгоритам како логирате вид - кој помага на самата 286 00:13:35,750 --> 00:13:37,300 да рекурзивен пристап - 287 00:13:37,300 --> 00:13:40,710 може да биде повеќе јасна да кодот рекурзивно. 288 00:13:40,710 --> 00:13:43,940 И само го направи повеќе смисла да го стори тоа рекурзивно. 289 00:13:43,940 --> 00:13:46,230 Така што ќе биде про да рекурзија. 290 00:13:46,230 --> 00:13:46,610 Другите? 291 00:13:46,610 --> 00:13:47,467 Да? 292 00:13:47,467 --> 00:13:49,240 >> СТУДЕНТСКИ 2: Con да рекурзија - 293 00:13:49,240 --> 00:13:50,940 Таа користи повеќе меморија. 294 00:13:50,940 --> 00:13:52,200 >> ЈАСОН Hirschhorn: Значи точно во право. 295 00:13:52,200 --> 00:13:55,720 Рекурзивна функција ќе го задржи додавање на магацинот рамки на магацинот. 296 00:13:55,720 --> 00:13:59,690 Значи, ако сте работат на многу броеви, и треба да се јавите на овој 297 00:13:59,690 --> 00:14:02,560 функционираат многу, а потоа сигурно ќе заземаат повеќе меморија, додека 298 00:14:02,560 --> 00:14:05,810 итеративен пристап само ќе се стави еден магацинот рамка на оџакот, бидејќи 299 00:14:05,810 --> 00:14:08,420 сето тоа се случува во рамките на една функција. 300 00:14:08,420 --> 00:14:11,010 >> Било која друга добрите и лошите страни? 301 00:14:11,010 --> 00:14:11,500 Да. 302 00:14:11,500 --> 00:14:12,550 >> СТУДЕНТСКИ 3: Добрите за рекурзија. 303 00:14:12,550 --> 00:14:15,950 Вие не треба да се утврди во унапредат колку пати 304 00:14:15,950 --> 00:14:17,660 кодот мораше да се повтори. 305 00:14:17,660 --> 00:14:22,810 Ќе може да има однапред број на пати поголема од таа што треба да iterate, тогаш 306 00:14:22,810 --> 00:14:26,420 рекурзијата е подобро, затоа што е потребно тој резултат. 307 00:14:26,420 --> 00:14:27,780 >> ЈАСОН Hirschhorn: Мислам дека тоа е вистина. 308 00:14:27,780 --> 00:14:30,770 Но, мислам дека и во двата случаи Ти никогаш не би - 309 00:14:30,770 --> 00:14:33,290 најверојатно ќе добие некои влез од корисникот. 310 00:14:33,290 --> 00:14:35,990 Или оваа функција ќе има некои влез кои ќе се утврди колку пати 311 00:14:35,990 --> 00:14:36,730 треба да се кандидира. 312 00:14:36,730 --> 00:14:39,520 Значи генерално, вие не би тешко код - дури и во итеративен пристап - како 313 00:14:39,520 --> 00:14:40,940 многу пати, што јамка треба да се кандидира. 314 00:14:40,940 --> 00:14:46,100 315 00:14:46,100 --> 00:14:48,670 >> Дали имаш друг сте биле размислува за, Ени? 316 00:14:48,670 --> 00:14:49,330 OK. 317 00:14:49,330 --> 00:14:51,650 Значи тоа се веројатно две - 318 00:14:51,650 --> 00:14:54,370 најголем про и најголем един да рекурзивен наспроти 319 00:14:54,370 --> 00:14:57,080 итеративен пристап. 320 00:14:57,080 --> 00:14:57,690 OK. 321 00:14:57,690 --> 00:14:59,465 Било што друго на Квиз 0? 322 00:14:59,465 --> 00:15:08,940 323 00:15:08,940 --> 00:15:09,920 >> Ајде да се движат натаму. 324 00:15:09,920 --> 00:15:15,260 Датотека I / O. Има прекрасен краток оваа недела на датотека I / O кои се надевам дека 325 00:15:15,260 --> 00:15:19,270 сте ги гледавме повеќе времиња, и се восхитуваат. 326 00:15:19,270 --> 00:15:22,910 А многу работа замина во тоа, и јас сум Слушнав дека е нездраво корисни. 327 00:15:22,910 --> 00:15:25,740 Јас, исто така се вклучени линк на овој слајд, во случај да не сте имале 328 00:15:25,740 --> 00:15:29,160 шанса да се види 10 пати. 329 00:15:29,160 --> 00:15:35,280 >> Значи, ние ќе се обидеме во кратки црти да одиме во текот на главни чекори за отворање и работа 330 00:15:35,280 --> 00:15:38,400 со датотеки, а потоа ние ќе се нурне во кодирање проблем пред 331 00:15:38,400 --> 00:15:40,400 испитување на проблемот во собата. 332 00:15:40,400 --> 00:15:44,330 Значи, повторно, јас ќе одам да се стави ова горе на на екранот, но јас ќе одам да се зборува за 333 00:15:44,330 --> 00:15:47,630 само една минута за тоа што ние сме овде со датотека I/O-- 334 00:15:47,630 --> 00:15:49,090 што значи тоа? 335 00:15:49,090 --> 00:15:55,280 >> Тоа значи дека можеме да креираме наш програми, а потоа имаат нашите програми 336 00:15:55,280 --> 00:16:00,370 излез, и не дадоа никакви влијание врз светот надвор од нашата програма. 337 00:16:00,370 --> 00:16:04,630 Но, кога ќе почне да работи со датотеки - и двајцата читање и креирање на 338 00:16:04,630 --> 00:16:10,460 нив - може да имаме некаков ефект на свет надвор од нашата програма. 339 00:16:10,460 --> 00:16:15,440 >> Исто како ако Microsoft Word не беше во можност да се направи било Word документи, а потоа 340 00:16:15,440 --> 00:16:18,710 еднаш на Microsoft Word престанам, сите ваши работа ќе се качил, и тоа ќе 341 00:16:18,710 --> 00:16:19,740 навистина се бескорисни. 342 00:16:19,740 --> 00:16:23,620 Ние го правиме на крајот сакаат да бидат во можност да пишуваат програми кои можат да влијаат на 343 00:16:23,620 --> 00:16:31,350 светот околу нив, и со преземање на комплекс влезови - во смисла на датотеки и 344 00:16:31,350 --> 00:16:37,080 преку додадени фајлови, а исто така создавање на интересни и релевантни резултати - 345 00:16:37,080 --> 00:16:39,520 во однос на различни типови на датотеки. 346 00:16:39,520 --> 00:16:43,730 >> Па тоа е причината зошто ние се почнуваат да се научат како да работат со датотеки. 347 00:16:43,730 --> 00:16:47,080 Попрецизно, кои што го правиме е како што следува. 348 00:16:47,080 --> 00:16:47,680 Тоа е многу едноставна. 349 00:16:47,680 --> 00:16:51,530 Постојат само неколку чекори, и тие се наведени тука на овој код. 350 00:16:51,530 --> 00:16:55,130 Па ние ќе да поминат низ оваа кодот линија по линија. 351 00:16:55,130 --> 00:16:57,630 >> Прво, да се види истакна - 352 00:16:57,630 --> 00:17:01,330 кога си работат со датотека, без оглед на типот на датотека е тоа, 353 00:17:01,330 --> 00:17:02,670 што треба да го отворите. 354 00:17:02,670 --> 00:17:05,130 А тоа е со повик за fopen - 355 00:17:05,130 --> 00:17:05,950 токму тука. 356 00:17:05,950 --> 00:17:07,980 Можете да ги содржи името на датотеката. 357 00:17:07,980 --> 00:17:11,930 Ако датотеката не е во вашиот именик, или папката каде што оваа програма 358 00:17:11,930 --> 00:17:15,910 живот, тогаш исто така ќе треба да се вклучат патот до местото каде што датотеката е. 359 00:17:15,910 --> 00:17:19,099 >> Ние ќе се претпостави дека ова датотека наречена "text.txt" - 360 00:17:19,099 --> 00:17:24,220 едноставен текст документ - е во истата папка како оваа програма е. 361 00:17:24,220 --> 00:17:26,859 Па тоа е друга работа да се задржи во ум - дека ако сакате да отворите датотека 362 00:17:26,859 --> 00:17:30,050 некаде на друго место, вие всушност треба да се вклучат нејзината локација. 363 00:17:30,050 --> 00:17:33,520 >> Второ, можете да помине аргумент за fopen, и тоа е она што сакате да го направите 364 00:17:33,520 --> 00:17:34,620 со датотеката. 365 00:17:34,620 --> 00:17:38,450 Постојат три главни аргументи дека сте ќе треба да помине за да fopen. 366 00:17:38,450 --> 00:17:40,060 Кој може да ми даде на оние три? 367 00:17:40,060 --> 00:17:44,960 368 00:17:44,960 --> 00:17:47,130 Кој може да ми даде еден од нив? 369 00:17:47,130 --> 00:17:48,130 Да. 370 00:17:48,130 --> 00:17:50,010 >> СТУДЕНТСКИ 4: Името на датотеката? 371 00:17:50,010 --> 00:17:50,440 >> ЈАСОН Hirschhorn: Извини. 372 00:17:50,440 --> 00:17:55,490 Три главни аргументи може да го положат како втор аргумент за fopen. 373 00:17:55,490 --> 00:17:57,060 Во право си - името на датотеката е првиот аргумент. 374 00:17:57,060 --> 00:18:01,620 Но вториот аргумент за fopen се генерално три жици, и - да. 375 00:18:01,620 --> 00:18:02,210 Aleja. 376 00:18:02,210 --> 00:18:03,490 >> Aleja: A за додавај. 377 00:18:03,490 --> 00:18:06,840 >> ЈАСОН Hirschhorn: А, ако сакате да додадете на датотека која веќе постои. 378 00:18:06,840 --> 00:18:07,810 >> СТУДЕНТСКИ 5: R за читање. 379 00:18:07,810 --> 00:18:09,930 >> ЈАСОН Hirschhorn: A, ако сакаат да читаат од датотека. 380 00:18:09,930 --> 00:18:10,670 >> СТУДЕНТСКИ 6: W за запишување. 381 00:18:10,670 --> 00:18:12,840 >> ЈАСОН Hirschhorn: И W, ако сакате да запишам во датотеката. 382 00:18:12,840 --> 00:18:17,570 Значи во овој случај, ние сме пишување до датотеката, па ние имаме w. 383 00:18:17,570 --> 00:18:22,360 Ќе го отворите, исто така, треба да се спаси поднесе некаде, и тоа е со 384 00:18:22,360 --> 00:18:26,000 кодот на левата страна на операторот за доделување на - 385 00:18:26,000 --> 00:18:31,220 Јас сум создавање на покажувач кон датотека нарекува, во овој случај, на датотеката. 386 00:18:31,220 --> 00:18:36,070 >> Ние не се случува да се грижите што сето ова капи СЛИКА работа е. 387 00:18:36,070 --> 00:18:40,600 Доволно е да се каже, тоа е долга прилив на оние кои и нули. 388 00:18:40,600 --> 00:18:44,970 А тоа е како ние ќе се работат тоа и да го разбере тоа. 389 00:18:44,970 --> 00:18:47,300 >> Следното нешто што треба да направите - и ова е неверојатно важно - 390 00:18:47,300 --> 00:18:49,070 секогаш кога ќе отворите датотека - 391 00:18:49,070 --> 00:18:54,250 Всушност, секогаш кога ќе се јавите Примерок за пример, и да добијат некои меморија и да се обиде 392 00:18:54,250 --> 00:18:57,980 и го зачувате во покажувач, секогаш сакате да се провери да бидете сигурни дека 393 00:18:57,980 --> 00:19:00,230 функција не се врати нула. 394 00:19:00,230 --> 00:19:05,230 >> Значи во овој случај, ние сме проверка за да бидете сигурни дека ние всушност го отвори 395 00:19:05,230 --> 00:19:10,230 поднесе правилно, и имаше грешка во нашата програма. 396 00:19:10,230 --> 00:19:15,160 Следно, откако ќе Сум проверил за да бидете сигурни дека дека имаме работа датотека, може да 397 00:19:15,160 --> 00:19:18,520 пишете, или да прочитате од, или додадете на датотека. 398 00:19:18,520 --> 00:19:24,270 Во овој случај, јас сум едноставно печатење една линија со оваа податотека. 399 00:19:24,270 --> 00:19:25,450 >> Како да знам тоа? 400 00:19:25,450 --> 00:19:27,990 Па, јас сум со користење на оваа функција наречен fprintf. 401 00:19:27,990 --> 00:19:30,970 Сите функции ќе биде со користење на кога пишувате, или читање од, или 402 00:19:30,970 --> 00:19:34,950 манипулацијата со датотеките ќе бидат слични на функции што сте виделе досега, но 403 00:19:34,950 --> 00:19:38,420 започнете со писмо F, стои за датотека. 404 00:19:38,420 --> 00:19:43,440 И fprintf, за разлика од нашата нормална печатење стан, зема една дополнителен аргумент, 405 00:19:43,440 --> 00:19:47,800 а тоа е датотеката каде што ќе сакате да печатите оваа линија да. 406 00:19:47,800 --> 00:19:50,640 >> Јас немам ништо да правото на ohai. 407 00:19:50,640 --> 00:19:52,860 Јас немам третиот аргумент за printf - 408 00:19:52,860 --> 00:19:57,030 или на вториот аргумент на printf, на Третиот аргумент да fprintf, затоа што 409 00:19:57,030 --> 00:19:59,480 немаат никакви променливи тука. 410 00:19:59,480 --> 00:20:01,070 Јас не сум вклучувајќи ги и сите променливи. 411 00:20:01,070 --> 00:20:06,070 Но, повторно, fprintf и сите на овие датотеки функции кои работат со датотеки 412 00:20:06,070 --> 00:20:09,820 обично се случува да треба на датотеката на кој тие си работат. 413 00:20:09,820 --> 00:20:15,960 >> Конечно, последната важна работа да се направите е да се затвори датотеката, исто како и 414 00:20:15,960 --> 00:20:19,530 со - кога ние Примерок нешто, ние сакаме да се ослободи нешто, да не ги 415 00:20:19,530 --> 00:20:22,730 имаат меморија течење - сакаме да ги затвориме нашите датотека. 416 00:20:22,730 --> 00:20:28,180 Ако оваа програма постоеле без затворање датотеката, шансите се ништо не би одат 417 00:20:28,180 --> 00:20:30,050 во ред, особено ако тоа е мал фајл. 418 00:20:30,050 --> 00:20:35,020 >> Но тоа е секако добра кодирање стил и пракса секогаш да ја затворите вашата датотека 419 00:20:35,020 --> 00:20:38,050 кога ќе завршиш негово користење. 420 00:20:38,050 --> 00:20:43,630 Па тоа е основата на датотека I / O. Веројатно сте виделе дека пред, или 421 00:20:43,630 --> 00:20:45,710 гледав во таа фантастична кратко. 422 00:20:45,710 --> 00:20:48,410 Дали некој има било какви прашања, пред одиме во некои пракса кодирање 423 00:20:48,410 --> 00:20:51,800 проблеми, за датотека I / O или чекори што јас само отиде во текот? 424 00:20:51,800 --> 00:21:00,198 425 00:21:00,198 --> 00:21:03,162 >> [Пишување звучи] 426 00:21:03,162 --> 00:21:04,150 >> ЈАСОН Hirschhorn: Дали имате некое прашање, Ави? 427 00:21:04,150 --> 00:21:04,660 >> AVI: Не 428 00:21:04,660 --> 00:21:04,740 >> ЈАСОН Hirschhorn: OK. 429 00:21:04,740 --> 00:21:06,746 Одам да се почека уште седум секунди. 430 00:21:06,746 --> 00:21:07,590 [Се смее] 431 00:21:07,590 --> 00:21:08,620 Тоа е навистина добар совет. 432 00:21:08,620 --> 00:21:10,750 Вие момци само не ми се допаѓа поставување прашања. 433 00:21:10,750 --> 00:21:11,660 Тоа е во ред. 434 00:21:11,660 --> 00:21:12,330 OK. 435 00:21:12,330 --> 00:21:17,620 Значи нашиот прв пракса проблемот е, ние сме ќе се дуплираат функција на 436 00:21:17,620 --> 00:21:22,330 командната линија алатка која можете веројатно користи пред - копија - 437 00:21:22,330 --> 00:21:23,500 копија алатка. 438 00:21:23,500 --> 00:21:28,050 Ако го напишете ср а потоа да го давате два аргументи во вашиот терминал, можете да 439 00:21:28,050 --> 00:21:28,980 копирате датотека. 440 00:21:28,980 --> 00:21:31,220 И тоа е она што се случува да се напише во моментов. 441 00:21:31,220 --> 00:21:35,830 >> Значи, повторно, читање исклучување на овој слајд, јас би можете да се напише програма која зема 442 00:21:35,830 --> 00:21:38,130 два и само два командната линија аргументи - 443 00:21:38,130 --> 00:21:40,750 изворна датотека и дестинација датотека - 444 00:21:40,750 --> 00:21:44,590 и копии од содржината на извор поднесе до дестинацијата датотека 445 00:21:44,590 --> 00:21:46,960 еден бајт во исто време. 446 00:21:46,960 --> 00:21:48,510 Па тоа е многу да се побара. 447 00:21:48,510 --> 00:21:52,200 >> Повторно, добар пристап на ова е да се не одат директно на C код, но 448 00:21:52,200 --> 00:21:54,280 скрши го надолу во неколку чекори. 449 00:21:54,280 --> 00:21:58,400 Прво, мислам за логиката - токму она што јас сум те прашам да се направи - 450 00:21:58,400 --> 00:22:00,620 и да се разбереме сите на чекори на овој проблем. 451 00:22:00,620 --> 00:22:04,410 Не во C, само во некои pseudocode, или дури и ментална модел на 452 00:22:04,410 --> 00:22:06,030 што се случува. 453 00:22:06,030 --> 00:22:10,050 >> Следно, штом еднаш ќе имаат pseudocode надолу, дознаам како pseudocode 454 00:22:10,050 --> 00:22:14,600 мапи врз алатки и нешта ние сме научив да се користи во C. 455 00:22:14,600 --> 00:22:19,070 >> И, конечно, еднаш имаш сето тоа заедно, можете да го кодот на проблемот. 456 00:22:19,070 --> 00:22:23,370 Земете 5 до 10 минути за да се работат на овој проблем. 457 00:22:23,370 --> 00:22:25,800 Јас ќе се стави на инструкции назад во секунда. 458 00:22:25,800 --> 00:22:27,990 А потоа ние ќе одиме во текот на pseudocode, и кодот 459 00:22:27,990 --> 00:22:29,230 го живеат како група. 460 00:22:29,230 --> 00:22:31,640 >> Ако имате било какви прашања, додека сте работат на ова, се чувствуваат слободни да се подигне 461 00:22:31,640 --> 00:22:34,260 вашата рака, и ќе дојдам наоколу и да одговори на нив. 462 00:22:34,260 --> 00:22:37,020 463 00:22:37,020 --> 00:22:39,330 >> СТУДЕНТСКИ 7: Може ли удар парче хартија? 464 00:22:39,330 --> 00:22:41,537 >> ЈАСОН Hirschhorn: Што ти е? 465 00:22:41,537 --> 00:26:46,047 466 00:26:46,047 --> 00:26:48,043 >> [Пишување звучи] 467 00:26:48,043 --> 00:26:48,730 >> ЈАСОН Hirschhorn: OK. 468 00:26:48,730 --> 00:26:51,710 Ајде да одиме во текот на pseudocode прво, и тогаш јас ќе ти дадам уште неколку 469 00:26:51,710 --> 00:26:52,960 минути за да заврши кодирање. 470 00:26:52,960 --> 00:26:55,540 471 00:26:55,540 --> 00:26:58,650 >> Кои би сакале да ми да започнете со првата линија на 472 00:26:58,650 --> 00:27:00,030 pseudocode за оваа функција? 473 00:27:00,030 --> 00:27:03,330 474 00:27:03,330 --> 00:27:05,740 >> СТУДЕНТСКИ 8: Проверете за да бидете сигурни дека сте биле дадени две датотеки. 475 00:27:05,740 --> 00:27:06,990 >> ЈАСОН Hirschhorn: OK. 476 00:27:06,990 --> 00:27:21,270 477 00:27:21,270 --> 00:27:22,990 И ако ние не сме? 478 00:27:22,990 --> 00:27:25,974 >> СТУДЕНТСКИ 8: Би се вратил 0. 479 00:27:25,974 --> 00:27:27,872 >> ЈАСОН Hirschhorn: Треба ли да се врати 0? 480 00:27:27,872 --> 00:27:30,182 >> СТУДЕНТСКИ 8: Врати - 481 00:27:30,182 --> 00:27:30,650 бришење. 482 00:27:30,650 --> 00:27:30,850 Жал. 483 00:27:30,850 --> 00:27:31,210 >> ЈАСОН Hirschhorn: Да. 484 00:27:31,210 --> 00:27:32,710 Веројатно не 0. 485 00:27:32,710 --> 00:27:34,680 Затоа 0 значи сè беше добро. 486 00:27:34,680 --> 00:27:35,030 OK. 487 00:27:35,030 --> 00:27:36,730 Па тоа е на првата линија на pseudocode. 488 00:27:36,730 --> 00:27:38,715 Кој има втора линија на pseudocode? 489 00:27:38,715 --> 00:27:40,630 >> СТУДЕНТСКИ 9: Отворен двете датотеки? 490 00:27:40,630 --> 00:27:41,880 >> ЈАСОН Hirschhorn: Отворете двете датотеки. 491 00:27:41,880 --> 00:27:49,970 492 00:27:49,970 --> 00:27:50,920 Во ред? 493 00:27:50,920 --> 00:27:52,850 >> СТУДЕНТСКИ 10: Проверете за да ја видите ако датотеката е NULL? 494 00:27:52,850 --> 00:28:10,906 495 00:28:10,906 --> 00:28:12,580 >> ЈАСОН Hirschhorn: Проверете сигурни ни се ништовни. 496 00:28:12,580 --> 00:28:15,800 Како настрана - 497 00:28:15,800 --> 00:28:17,540 намали на 0 - 498 00:28:17,540 --> 00:28:18,887 е дека NULL? 499 00:28:18,887 --> 00:28:20,080 >> СТУДЕНТСКИ 11: Не 500 00:28:20,080 --> 00:28:21,190 >> ЈАСОН Hirschhorn: Тоа не е NULL. 501 00:28:21,190 --> 00:28:23,400 Кој е наречен NULL терминатор. 502 00:28:23,400 --> 00:28:25,580 Тоа е всушност напишано со само една л. 503 00:28:25,580 --> 00:28:28,580 Па проверка на нешто против тоа - Тоа е всушност карактер - 504 00:28:28,580 --> 00:28:31,710 па проверка на нешто против што се не е исто како проверка за да види дали таа 505 00:28:31,710 --> 00:28:32,690 еднакво NULL. 506 00:28:32,690 --> 00:28:34,100 >> А некои луѓе - 507 00:28:34,100 --> 00:28:36,040 на нивните тестови и нивниот проблем поставува - доби 508 00:28:36,040 --> 00:28:36,890 две од овие збунети. 509 00:28:36,890 --> 00:28:38,830 Но двете од нив се всушност различни. 510 00:28:38,830 --> 00:28:40,220 Еден завршува низа - 511 00:28:40,220 --> 00:28:43,210 еден е покажувач на 0. 512 00:28:43,210 --> 00:28:46,490 >> СТУДЕНТСКИ 12: Зошто не би се провери да се бидете сигурни дека датотеки не се NULL 513 00:28:46,490 --> 00:28:48,670 пред да ги отвори? 514 00:28:48,670 --> 00:28:54,772 >> ЈАСОН Hirschhorn: Значи отворен заштедува нешто во таа датотека. 515 00:28:54,772 --> 00:28:57,780 И ако се вратиме тука - 516 00:28:57,780 --> 00:28:59,520 па оваа линија - fopen - 517 00:28:59,520 --> 00:29:05,300 ќе ви даде адресата и продавница таа адреса во датотека, ако таа работи. 518 00:29:05,300 --> 00:29:07,650 Ако тоа не функционира, тоа ќе ги чува NULL - 519 00:29:07,650 --> 00:29:08,020 >> СТУДЕНТСКИ 12: О. 520 00:29:08,020 --> 00:29:08,180 OK. 521 00:29:08,180 --> 00:29:08,500 Те. 522 00:29:08,500 --> 00:29:09,050 >> ЈАСОН Hirschhorn: Во датотека. 523 00:29:09,050 --> 00:29:11,990 Па не можете да се провери за NULL пред сте ги отвори. 524 00:29:11,990 --> 00:29:13,520 NULL значи нешто не работи коректно. 525 00:29:13,520 --> 00:29:18,030 526 00:29:18,030 --> 00:29:18,740 OK. 527 00:29:18,740 --> 00:29:22,590 Па провери да бидете сигурни дека ниту е тоа? 528 00:29:22,590 --> 00:29:23,200 Или се? 529 00:29:23,200 --> 00:29:23,770 Што мислите? 530 00:29:23,770 --> 00:29:24,310 Ќе одиме со тоа. 531 00:29:24,310 --> 00:29:24,520 >> СТУДЕНТСКИ 13: Дали е. 532 00:29:24,520 --> 00:29:25,020 >> ЈАСОН Hirschhorn: Дали? 533 00:29:25,020 --> 00:29:25,930 Ниту е? 534 00:29:25,930 --> 00:29:26,350 >> СТУДЕНТСКИ 13: Дали е. 535 00:29:26,350 --> 00:29:26,390 >> ЈАСОН Hirschhorn: OK. 536 00:29:26,390 --> 00:29:28,510 Ние се чини дека има некои консензус за тоа. 537 00:29:28,510 --> 00:29:30,520 Ниту е NULL. 538 00:29:30,520 --> 00:29:32,250 Добро, следната линија на pseudocode. 539 00:29:32,250 --> 00:29:33,600 Кој не ми даде линија сеуште? 540 00:29:33,600 --> 00:29:37,350 541 00:29:37,350 --> 00:29:38,295 Ќе чекаме за вас. 542 00:29:38,295 --> 00:29:39,020 Да. 543 00:29:39,020 --> 00:29:40,895 >> СТУДЕНТСКИ 14: Мора да се прочита од првиот датотека? 544 00:29:40,895 --> 00:29:42,290 >> ЈАСОН Hirschhorn: OK. 545 00:29:42,290 --> 00:29:46,240 >> СТУДЕНТСКИ 14: Или ние ги користиме fscanf или нешто слично на првата датотека? 546 00:29:46,240 --> 00:29:50,650 >> ЈАСОН Hirschhorn: Значи ние сакаме да читаат од првата датотека и - 547 00:29:50,650 --> 00:29:51,900 ајде да се стави дека во право тука. 548 00:29:51,900 --> 00:30:00,600 549 00:30:00,600 --> 00:30:01,880 Чита од изворниот фајл. 550 00:30:01,880 --> 00:30:05,370 И тогаш, што ќе правиме откако ќе чита од изворниот фајл? 551 00:30:05,370 --> 00:30:06,620 Некој друг? 552 00:30:06,620 --> 00:30:09,150 553 00:30:09,150 --> 00:30:12,190 >> СТУДЕНТСКИ 15: Напиши во дестинација датотека? 554 00:30:12,190 --> 00:30:22,080 555 00:30:22,080 --> 00:30:25,620 >> ЈАСОН Hirschhorn: Ние пишуваме да одредишната датотека, и - 556 00:30:25,620 --> 00:30:26,210 OK. 557 00:30:26,210 --> 00:30:30,030 Што друго се што недостасува? 558 00:30:30,030 --> 00:30:32,460 Некој друг кој не ми даде линија код уште - на pseudocode. 559 00:30:32,460 --> 00:30:33,510 Да. 560 00:30:33,510 --> 00:30:36,540 >> СТУДЕНТСКИ 16: Можеби секогаш можете да проверите дали има нешто да се прочита за, 561 00:30:36,540 --> 00:30:37,970 како на следната линија? 562 00:30:37,970 --> 00:30:39,550 Кои се како на следната линија, види дали таа постои. 563 00:30:39,550 --> 00:30:40,660 >> [Електронска ѕвонче] 564 00:30:40,660 --> 00:30:41,095 >> ЈАСОН Hirschhorn: Упс. 565 00:30:41,095 --> 00:30:43,120 Тоа е мојот journaling софтвер. 566 00:30:43,120 --> 00:30:43,580 Да? 567 00:30:43,580 --> 00:30:44,960 >> СТУДЕНТСКИ 16: Да. 568 00:30:44,960 --> 00:30:48,940 >> ЈАСОН Hirschhorn: Па им даде тоа за мене уште еднаш. 569 00:30:48,940 --> 00:30:51,640 >> СТУДЕНТСКИ 16: Проверете дали има уште следната линија од 570 00:30:51,640 --> 00:30:52,920 изворна датотека за читање. 571 00:30:52,920 --> 00:30:53,500 >> ЈАСОН Hirschhorn: OK. 572 00:30:53,500 --> 00:30:56,060 Па ние не читаш линии - беа читање бајти тука - 573 00:30:56,060 --> 00:30:57,590 но ти си точно. 574 00:30:57,590 --> 00:31:00,040 Ние сакаме да читаат и пишуваат додека нема повеќе бајти. 575 00:31:00,040 --> 00:31:11,430 576 00:31:11,430 --> 00:31:11,735 OK. 577 00:31:11,735 --> 00:31:16,940 И така тие навистина треба да биде вовлечен малку, затоа што тие се под таму. 578 00:31:16,940 --> 00:31:17,470 Нели? 579 00:31:17,470 --> 00:31:20,620 Додека ние сме надвор од бајти, ние ќе чита од изворниот фајл и да пишува 580 00:31:20,620 --> 00:31:22,160 до дестинацијата датотека. 581 00:31:22,160 --> 00:31:24,510 >> И тогаш, што е последен линија на pseudocode? 582 00:31:24,510 --> 00:31:26,380 Некој кој не е даден мене уште нешто. 583 00:31:26,380 --> 00:31:29,270 584 00:31:29,270 --> 00:31:30,260 >> СТУДЕНТСКИ 17: Затвори датотеки? 585 00:31:30,260 --> 00:31:31,510 >> ЈАСОН Hirschhorn: Токму така. 586 00:31:31,510 --> 00:31:36,370 587 00:31:36,370 --> 00:31:37,450 Затвори датотеки. 588 00:31:37,450 --> 00:31:38,400 Па таму е нашата pseudocode. 589 00:31:38,400 --> 00:31:41,870 Одам да се стави на pseudocode во gedit, а во неколку минути ние 590 00:31:41,870 --> 00:31:44,626 ќе кодот ова заедно. 591 00:31:44,626 --> 00:33:55,280 592 00:33:55,280 --> 00:33:56,000 >> OK. 593 00:33:56,000 --> 00:33:58,290 Дозволете ни да започнете како група. 594 00:33:58,290 --> 00:33:59,940 Nishant, имам нова датотека. 595 00:33:59,940 --> 00:34:01,130 Јас сум само отвори ова. 596 00:34:01,130 --> 00:34:01,880 Untitled Document 1. 597 00:34:01,880 --> 00:34:05,490 Што е првото нешто што треба да направам? 598 00:34:05,490 --> 00:34:07,040 >> Nishant: Вклучете библиотеки? 599 00:34:07,040 --> 00:34:08,219 >> ЈАСОН Hirschhorn: OK. 600 00:34:08,219 --> 00:34:11,070 Што библиотеки? 601 00:34:11,070 --> 00:34:17,570 >> Nishant: Stdio.h, stdlib.h, верувам? 602 00:34:17,570 --> 00:34:18,000 >> ЈАСОН Hirschhorn: OK. 603 00:34:18,000 --> 00:34:21,592 Што е stdlib за? 604 00:34:21,592 --> 00:34:23,010 >> Nishant: Заборавив. 605 00:34:23,010 --> 00:34:23,219 >> ЈАСОН Hirschhorn: OK. 606 00:34:23,219 --> 00:34:24,179 Така вклучуваат stdio. 607 00:34:24,179 --> 00:34:28,630 Што треба да направам, дури и пред Јас на проектот за кодирање? 608 00:34:28,630 --> 00:34:29,710 >> Nishant: Напишете заглавието? 609 00:34:29,710 --> 00:34:31,830 >> ЈАСОН Hirschhorn: Како можам да добијам тоа обоени? 610 00:34:31,830 --> 00:34:34,060 >> [Ставање ГЛАСОВИ] 611 00:34:34,060 --> 00:34:35,040 >> Nishant: Како да го добиете боја? 612 00:34:35,040 --> 00:34:38,060 >> ЈАСОН Hirschhorn: Како можам боја кодирање? 613 00:34:38,060 --> 00:34:38,570 >> Nishant: Не знам. 614 00:34:38,570 --> 00:34:38,830 Ох. 615 00:34:38,830 --> 00:34:39,389 Спаси. 616 00:34:39,389 --> 00:34:39,929 >> ЈАСОН Hirschhorn: зачувајте. 617 00:34:39,929 --> 00:34:40,270 Да. 618 00:34:40,270 --> 00:34:41,760 Јас треба да го зачувате како. В. 619 00:34:41,760 --> 00:34:46,239 Па го зачувате на работната површина како cp.c. 620 00:34:46,239 --> 00:34:47,280 Слатка. 621 00:34:47,280 --> 00:34:51,199 И ако сакам да се добие целосна стил поени, што треба да 622 00:34:51,199 --> 00:34:53,085 вклучуваат на врвот? 623 00:34:53,085 --> 00:34:58,390 >> Nishant: Можете да напишете вашето име, името на програмата, а целта 624 00:34:58,390 --> 00:34:59,640 на програмата, како? 625 00:34:59,640 --> 00:35:08,400 626 00:35:08,400 --> 00:35:10,040 >> ЈАСОН Hirschhorn: Изгледа добро. 627 00:35:10,040 --> 00:35:10,470 Одличен. 628 00:35:10,470 --> 00:35:12,940 Значи сте ни го започна натпреварот совршено. 629 00:35:12,940 --> 00:35:13,720 # Include - 630 00:35:13,720 --> 00:35:15,365 ние, исто така, ќе пишувам - 631 00:35:15,365 --> 00:35:30,050 632 00:35:30,050 --> 00:35:30,870 OK. 633 00:35:30,870 --> 00:35:33,520 Па мислам дека јас сум сите во собата да одам. 634 00:35:33,520 --> 00:35:38,003 Кој има првата линија на кодот за мене - или првиот линии на код кој 635 00:35:38,003 --> 00:35:41,280 ќе биде потребно да ги задоволи нашите први коментира во pseudocode? 636 00:35:41,280 --> 00:35:41,985 Вас. 637 00:35:41,985 --> 00:35:48,780 >> СТУДЕНТСКИ 18: Не треба да биде int argc, а потоа char * argv? 638 00:35:48,780 --> 00:35:49,490 >> ЈАСОН Hirschhorn: Мислам дека во право си. 639 00:35:49,490 --> 00:35:56,270 Да ги смениме до int главната, отворен paren, int argc, запирка, char * argv? 640 00:35:56,270 --> 00:35:57,150 Како тоа? 641 00:35:57,150 --> 00:35:57,410 >> СТУДЕНТСКИ 18: голема заграда. 642 00:35:57,410 --> 00:35:58,260 >> ЈАСОН Hirschhorn: Голема заграда. 643 00:35:58,260 --> 00:35:59,860 Отворена заграда, блиску заграда, блиску родител. 644 00:35:59,860 --> 00:36:00,240 Совршена. 645 00:36:00,240 --> 00:36:02,160 Сега може да се земе од командната линија аргументи. 646 00:36:02,160 --> 00:36:02,430 OK. 647 00:36:02,430 --> 00:36:04,250 Се обезбеди ние сме дадени две датотеки. 648 00:36:04,250 --> 00:36:07,905 Може да ми даде тоа како добро. 649 00:36:07,905 --> 00:36:09,180 >> СТУДЕНТСКИ 18: Ако argc - 650 00:36:09,180 --> 00:36:11,060 ова не е еднаква на 3. 651 00:36:11,060 --> 00:36:14,360 >> ЈАСОН Hirschhorn: Ако отворен paren argc не еднакви 3? 652 00:36:14,360 --> 00:36:16,970 >> СТУДЕНТСКИ 18: Да, ќе се врати 1 или ништо. 653 00:36:16,970 --> 00:36:17,460 >> ЈАСОН Hirschhorn: Извини. 654 00:36:17,460 --> 00:36:19,120 >> СТУДЕНТСКИ 18: Враќање 1 или ништо. 655 00:36:19,120 --> 00:36:20,270 >> ЈАСОН Hirschhorn: Враќање 1. 656 00:36:20,270 --> 00:36:22,230 Во ред? 657 00:36:22,230 --> 00:36:22,970 Одлично. 658 00:36:22,970 --> 00:36:24,290 Отвори и датотеки. 659 00:36:24,290 --> 00:36:26,160 Кој може да ми помогне да се отвори и датотеки? 660 00:36:26,160 --> 00:36:28,125 Кој не ми даде код уште? 661 00:36:28,125 --> 00:36:31,510 662 00:36:31,510 --> 00:36:32,320 Курт? 663 00:36:32,320 --> 00:36:36,145 >> Курт: Па сите капи F-I-Л-Е ѕвезда извор. 664 00:36:36,145 --> 00:36:39,390 665 00:36:39,390 --> 00:36:40,920 >> ЈАСОН Hirschhorn: Одам да извадиш самогласки. 666 00:36:40,920 --> 00:36:41,570 Оние кои се кул. 667 00:36:41,570 --> 00:36:42,716 Тоа е како Tumblr. 668 00:36:42,716 --> 00:36:44,610 >> СТУДЕНТСКИ 18: еднакво fopen - 669 00:36:44,610 --> 00:36:46,612 >> ЈАСОН Hirschhorn: еднакво fopen? 670 00:36:46,612 --> 00:36:49,870 >> СТУДЕНТСКИ 18: Отворен paren, argv, отворен заграда. 671 00:36:49,870 --> 00:36:50,055 >> ЈАСОН Hirschhorn: Чекај. 672 00:36:50,055 --> 00:36:50,240 Жал. 673 00:36:50,240 --> 00:36:51,050 Отворен paren. 674 00:36:51,050 --> 00:36:51,456 OK. 675 00:36:51,456 --> 00:36:53,080 >> СТУДЕНТСКИ 18: Да. 676 00:36:53,080 --> 00:36:55,110 Argv под 1. 677 00:36:55,110 --> 00:36:55,860 >> ЈАСОН Hirschhorn: Под 1? 678 00:36:55,860 --> 00:36:56,140 >> СТУДЕНТСКИ 18: Да. 679 00:36:56,140 --> 00:36:58,540 Argv отворен заградата 1 - 680 00:36:58,540 --> 00:36:59,730 Да. 681 00:36:59,730 --> 00:37:06,470 А потоа запирка, а потоа отворете двојно понуда, Р наводници, 682 00:37:06,470 --> 00:37:08,250 блиску paren, точка-запирка. 683 00:37:08,250 --> 00:37:09,450 >> ЈАСОН Hirschhorn: Слатка. 684 00:37:09,450 --> 00:37:10,950 А што е со другиот? 685 00:37:10,950 --> 00:37:16,030 >> СТУДЕНТСКИ 18: Многу слично, но наместо тоа, на С-Р-Ц, ќе го наречеме D-С-Т. 686 00:37:16,030 --> 00:37:17,060 >> ЈАСОН Hirschhorn: Oo! 687 00:37:17,060 --> 00:37:17,772 Ми се допаѓа тоа. 688 00:37:17,772 --> 00:37:20,010 >> СТУДЕНТСКИ 18: Само Д-С-Т. Да. 689 00:37:20,010 --> 00:37:23,057 А потоа argv, отворен заградата, 2. 690 00:37:23,057 --> 00:37:23,200 Да. 691 00:37:23,200 --> 00:37:26,720 А потоа W наместо r. 692 00:37:26,720 --> 00:37:27,620 Да. 693 00:37:27,620 --> 00:37:29,630 >> ЈАСОН Hirschhorn: Велики. 694 00:37:29,630 --> 00:37:31,360 Следните неколку линии. 695 00:37:31,360 --> 00:37:34,040 Исто така, ако некој има работи кои треба да додадете во линии кои ние го направивме, се чувствуваат слободни да 696 00:37:34,040 --> 00:37:35,690 додадете оние како добро. 697 00:37:35,690 --> 00:37:37,520 Проверете, за да бидете сигурни дека ниту е NULL. 698 00:37:37,520 --> 00:37:41,450 Кој може да ми даде код јас треба да задоволи таа линија на pseudocode? 699 00:37:41,450 --> 00:37:44,430 700 00:37:44,430 --> 00:37:45,870 Стрелец. 701 00:37:45,870 --> 00:37:58,645 >> ARCHER: Ако src еднаква на еднаквите NULL или DST еднаква на еднаквите 702 00:37:58,645 --> 00:38:04,590 NULL, а потоа ќе се врати - 703 00:38:04,590 --> 00:38:07,130 704 00:38:07,130 --> 00:38:07,976 >> ЈАСОН Hirschhorn: Што? 705 00:38:07,976 --> 00:38:08,890 >> ARCHER: Враќање 2? 706 00:38:08,890 --> 00:38:09,760 >> ЈАСОН Hirschhorn: Враќање 2. 707 00:38:09,760 --> 00:38:14,400 Значи, ако отворена paren src еднаква на еднакво NULL, или - 708 00:38:14,400 --> 00:38:15,590 што и да thing's - цевка? 709 00:38:15,590 --> 00:38:16,346 Цевка? 710 00:38:16,346 --> 00:38:17,140 Ние ќе го наречеме цевка. 711 00:38:17,140 --> 00:38:22,340 Цевка, цевка, DST еднаква на еднаквите NULL, врати 2. 712 00:38:22,340 --> 00:38:23,900 Во ред? 713 00:38:23,900 --> 00:38:26,060 Додека ние сме надвор од бајти - 714 00:38:26,060 --> 00:38:29,820 ние вид на прескокнат во текот на овој чекор од на pseudocode дел да оди, кликнете овде. 715 00:38:29,820 --> 00:38:31,970 >> Но, сè додека ние сме надвор од бајти - она што го прави тоа звучи како? 716 00:38:31,970 --> 00:38:34,680 Каков вид на C структура - 717 00:38:34,680 --> 00:38:36,160 но јас не го користат зборот структура, бидејќи ние се случува да започнат со користење на 718 00:38:36,160 --> 00:38:37,350 дека во други случаи - 719 00:38:37,350 --> 00:38:39,495 но C алатка Дали тоа звучи како? 720 00:38:39,495 --> 00:38:39,970 >> СТУДЕНТСКИ 19: јамка. 721 00:38:39,970 --> 00:38:40,980 >> ЈАСОН Hirschhorn: јамка. 722 00:38:40,980 --> 00:38:43,060 Звучи како јамка. 723 00:38:43,060 --> 00:38:49,670 Па кој може да ми даде првата линија од циклусот код токму тука? 724 00:38:49,670 --> 00:38:56,320 725 00:38:56,320 --> 00:39:01,980 Можете исто така да изберете што вид на јамка сакате, ако ми дадеш 726 00:39:01,980 --> 00:39:03,215 оваа линија код. 727 00:39:03,215 --> 00:39:04,150 Постојат три вида. 728 00:39:04,150 --> 00:39:06,530 Можеш да одбереш. 729 00:39:06,530 --> 00:39:08,080 Јас би предложиле еден од нив. 730 00:39:08,080 --> 00:39:08,410 AVI. 731 00:39:08,410 --> 00:39:09,230 Кои една сакаш? 732 00:39:09,230 --> 00:39:09,960 >> Ави: ЗА. 733 00:39:09,960 --> 00:39:11,460 >> ЈАСОН Hirschhorn: ЗА. 734 00:39:11,460 --> 00:39:15,180 >> Ави: int i е еднаква на нула. 735 00:39:15,180 --> 00:39:17,360 >> ЈАСОН Hirschhorn: OK. 736 00:39:17,360 --> 00:39:18,570 >> Ави: Овој дел не сум сигурен за. 737 00:39:18,570 --> 00:39:29,080 Но јас е помал од големината на ѕвезда извор? 738 00:39:29,080 --> 00:39:31,128 Не сум сигурен за тоа. 739 00:39:31,128 --> 00:39:32,580 >> ЈАСОН Hirschhorn: OK. 740 00:39:32,580 --> 00:39:35,870 >> Ави: Бидејќи сакате големина на датотека, нели? 741 00:39:35,870 --> 00:39:41,090 >> ЈАСОН Hirschhorn: Значи ова веројатно нема ни даде големината на актуелните 742 00:39:41,090 --> 00:39:43,010 поднесе во бајти. 743 00:39:43,010 --> 00:39:47,680 Па што друго би можеле да правиме? 744 00:39:47,680 --> 00:39:48,810 Што е друг вид на јамка? 745 00:39:48,810 --> 00:39:50,180 Или ние треба да се држиме со за телефонска линија? 746 00:39:50,180 --> 00:39:55,350 747 00:39:55,350 --> 00:39:57,900 >> СТУДЕНТСКИ 20: Може ли да се направи додека јамка? 748 00:39:57,900 --> 00:40:01,350 И тогаш, што би направите е you'd - 749 00:40:01,350 --> 00:40:03,930 бидејќи имаме char * за датотеката. 750 00:40:03,930 --> 00:40:07,950 Значи, ако ние само задржи зголемување, што додека ние би ги најдете на NULL карактер 751 00:40:07,950 --> 00:40:08,500 на крајот од него? 752 00:40:08,500 --> 00:40:11,130 Или не, е дека не е како датотеки дело? 753 00:40:11,130 --> 00:40:14,300 >> ЈАСОН Hirschhorn: Значи можеме да ги одржуваме ја зголемува бројката char * 754 00:40:14,300 --> 00:40:16,340 додека ние се најде на NULL - 755 00:40:16,340 --> 00:40:18,580 >> СТУДЕНТСКИ 20: Во суштина продолжувам да одам карактер по карактер, додека ние хит 756 00:40:18,580 --> 00:40:21,250 на крајот на датотеката. 757 00:40:21,250 --> 00:40:21,600 >> ЈАСОН Hirschhorn: Да. 758 00:40:21,600 --> 00:40:22,560 Значи тоа е она што ние сакаме да се направи. 759 00:40:22,560 --> 00:40:24,545 Ние сакаме да се задржи читање, карактер карактер, додека ние да се 760 00:40:24,545 --> 00:40:25,080 на крајот на датотеката. 761 00:40:25,080 --> 00:40:25,375 >> СТУДЕНТСКИ 20: Да. 762 00:40:25,375 --> 00:40:25,860 Најди - 763 00:40:25,860 --> 00:40:28,540 она што е на крајот или стоп знак на крајот од текстуална датотека. 764 00:40:28,540 --> 00:40:28,620 >> ЈАСОН Hirschhorn: OK. 765 00:40:28,620 --> 00:40:30,140 Па кога ќе дојде до крајот на датотеката - како да знаеме што сме достигна 766 00:40:30,140 --> 00:40:33,200 на крајот на датотеката? 767 00:40:33,200 --> 00:40:34,710 Ако јас го повикувам - 768 00:40:34,710 --> 00:40:35,910 па ајде чекор назад. 769 00:40:35,910 --> 00:40:37,550 Што е функција? 770 00:40:37,550 --> 00:40:39,360 Ајде да одиме во оваа линија, токму тука. 771 00:40:39,360 --> 00:40:40,630 Чита од изворниот фајл. 772 00:40:40,630 --> 00:40:41,880 Кој може да ми даде таа линија на кодот? 773 00:40:41,880 --> 00:40:45,592 774 00:40:45,592 --> 00:40:47,590 >> СТУДЕНТСКИ 21: Fscanf? 775 00:40:47,590 --> 00:40:49,110 >> ЈАСОН Hirschhorn: Fscanf. 776 00:40:49,110 --> 00:40:49,510 OK. 777 00:40:49,510 --> 00:40:52,240 Што ако сакам да се чита, многу Поточно, еден бајт? 778 00:40:52,240 --> 00:40:55,012 779 00:40:55,012 --> 00:40:56,860 >> СТУДЕНТСКИ 21: Не знам. 780 00:40:56,860 --> 00:40:57,110 >> ЈАСОН Hirschhorn: OK. 781 00:40:57,110 --> 00:40:59,380 Дури и поедноставно отколку fscanf - она ​​што е - 782 00:40:59,380 --> 00:41:01,890 Сакам да се прочита од изворна датотека? 783 00:41:01,890 --> 00:41:03,720 Читаат од изворна датотека. 784 00:41:03,720 --> 00:41:04,850 Што е во функција - Да. 785 00:41:04,850 --> 00:41:05,380 >> СТУДЕНТСКИ 22: Тоа е fread? 786 00:41:05,380 --> 00:41:06,070 >> ЈАСОН Hirschhorn: fread. 787 00:41:06,070 --> 00:41:07,550 Мислам да се држиме со дека една сега за сега. 788 00:41:07,550 --> 00:41:10,380 789 00:41:10,380 --> 00:41:13,650 Каков вид на аргументи се fread земам? 790 00:41:13,650 --> 00:41:17,410 >> СТУДЕНТСКИ 22: Веројатно типот на датотека, а потоа локација во датотека? 791 00:41:17,410 --> 00:41:19,550 >> ЈАСОН Hirschhorn: Што можам да напишеш тука да дознаам каков тип на аргументи 792 00:41:19,550 --> 00:41:20,950 fread потребно? 793 00:41:20,950 --> 00:41:23,710 >> ПОВЕЌЕ СТУДЕНТИ: Човекот fread. 794 00:41:23,710 --> 00:41:24,740 >> ЈАСОН Hirschhorn: Човекот fread и запишување. 795 00:41:24,740 --> 00:41:25,980 Изгледа како тие закачам заедно. 796 00:41:25,980 --> 00:41:29,589 Па fread зема колку аргументи? 797 00:41:29,589 --> 00:41:30,920 >> СТУДЕНТСКИ 23: Четири. 798 00:41:30,920 --> 00:41:32,690 >> ЈАСОН Hirschhorn: Таа зема четири аргументи. 799 00:41:32,690 --> 00:41:41,100 Таа ги зема покажувач, големина, и дека работа, што е чудно, а некои датотека. 800 00:41:41,100 --> 00:41:42,000 Во ред? 801 00:41:42,000 --> 00:41:43,990 Ајде да прочитате за тоа во право тука. 802 00:41:43,990 --> 00:41:49,370 "Функцијата fread чита N memb елементи на податоци, секоја големина бајти 803 00:41:49,370 --> 00:41:53,840 долго, од потокот посочи од страна на поток, чување нив на местото 804 00:41:53,840 --> 00:41:56,170 дадена од страна на покажувач. " 805 00:41:56,170 --> 00:41:57,960 >> Значи четири аргументи. 806 00:41:57,960 --> 00:42:04,510 Зошто не можам само да ја копирате оваа, и ставете го во право тука. 807 00:42:04,510 --> 00:42:10,060 808 00:42:10,060 --> 00:42:10,770 OK. 809 00:42:10,770 --> 00:42:13,673 Па кој може да започне пополнување овие аргументи за мене? 810 00:42:13,673 --> 00:42:15,840 AVI. 811 00:42:15,840 --> 00:42:17,720 >> Ави: Извадете празнината. 812 00:42:17,720 --> 00:42:20,530 Стави само src. 813 00:42:20,530 --> 00:42:23,142 Извади покажувач и ѕвездата. 814 00:42:23,142 --> 00:42:26,102 Стави src. 815 00:42:26,102 --> 00:42:27,050 Тогаш - 816 00:42:27,050 --> 00:42:28,500 >> ЈАСОН Hirschhorn: Значи, ќе одам да се запре сте таму, бидејќи тоа е неточно. 817 00:42:28,500 --> 00:42:32,590 818 00:42:32,590 --> 00:42:34,710 Во право си со src, но каде src треба да одат? 819 00:42:34,710 --> 00:42:35,960 >> [Ставање ГЛАСОВИ] 820 00:42:35,960 --> 00:42:38,976 821 00:42:38,976 --> 00:42:41,610 >> ЈАСОН Hirschhorn: Требаше одат овде. 822 00:42:41,610 --> 00:42:43,790 Тоа е СРЦ - нашиот src е тип. 823 00:42:43,790 --> 00:42:44,610 Да ги погледнеме тука. 824 00:42:44,610 --> 00:42:49,610 Ова се прашува за тип на датотека *, ние всушност обично ги видите како тоа. 825 00:42:49,610 --> 00:42:57,630 Па ова бара аргумент на тип на датотека * наречена поток кој е src. 826 00:42:57,630 --> 00:42:58,480 Во ред? 827 00:42:58,480 --> 00:43:00,410 >> Што големина на нештата ние сакаме да се чита? 828 00:43:00,410 --> 00:43:03,340 Ви дадов ова во опис на проблемот. 829 00:43:03,340 --> 00:43:04,370 >> СТУДЕНТСКИ 24: Еден бајт во еден момент. 830 00:43:04,370 --> 00:43:05,340 >> ЈАСОН Hirschhorn: Еден бајт. 831 00:43:05,340 --> 00:43:08,205 Колкава е бајт? 832 00:43:08,205 --> 00:43:11,642 Нејзината големина е во бајти, па што можам да се стави таму? 833 00:43:11,642 --> 00:43:12,910 >> СТУДЕНТСКИ 25: Еден. 834 00:43:12,910 --> 00:43:14,730 >> ЈАСОН Hirschhorn: Еден. 835 00:43:14,730 --> 00:43:17,020 Во право. 836 00:43:17,020 --> 00:43:19,940 Нејзината големина е во единица бајт, така 1 е 1 бајти. 837 00:43:19,940 --> 00:43:22,284 Колку сакам да го прочитате во исто време. 838 00:43:22,284 --> 00:43:23,520 >> СТУДЕНТСКИ 26: Еден? 839 00:43:23,520 --> 00:43:24,270 >> ЈАСОН Hirschhorn: Едно нешто. 840 00:43:24,270 --> 00:43:28,540 Сакам да го прочитате една работа на големина 1, еден залак во исто време. 841 00:43:28,540 --> 00:43:32,110 И каде можам да го стави, еднаш јас го чита? 842 00:43:32,110 --> 00:43:35,050 843 00:43:35,050 --> 00:43:36,510 >> СТУДЕНТСКИ 27: Дестинација? 844 00:43:36,510 --> 00:43:39,270 >> ЈАСОН Hirschhorn: Па јас не може да се стави тоа директно во целта. 845 00:43:39,270 --> 00:43:40,800 >> СТУДЕНТСКИ 28: Ти ќе стави тоа во трета покажувач? 846 00:43:40,800 --> 00:43:41,780 >> СТУДЕНТСКИ 27: до целта. 847 00:43:41,780 --> 00:43:42,270 >> ЈАСОН Hirschhorn: OK. 848 00:43:42,270 --> 00:43:42,630 Да. 849 00:43:42,630 --> 00:43:46,820 >> СТУДЕНТСКИ 29: Можете да изјави нешто да дејствува како привремено чување порано. 850 00:43:46,820 --> 00:43:47,350 >> ЈАСОН Hirschhorn: OK. 851 00:43:47,350 --> 00:43:50,080 Дај ми го тоа. 852 00:43:50,080 --> 00:43:53,930 >> СТУДЕНТСКИ 29: Уште еден фајл покажувач, можеби? 853 00:43:53,930 --> 00:43:54,220 >> ЈАСОН Hirschhorn: OK. 854 00:43:54,220 --> 00:43:55,585 Значи ова не е правосилен ѕвезда - 855 00:43:55,585 --> 00:43:57,750 тоа е еден вид празнина ѕвезда, така што не мора да биде датотека покажувач. 856 00:43:57,750 --> 00:44:02,520 И ако читам еден бајт, каде ќе биде добро место 857 00:44:02,520 --> 00:44:03,850 за да ја запази еден бајт? 858 00:44:03,850 --> 00:44:04,660 >> СТУДЕНТСКИ 29: Низа? 859 00:44:04,660 --> 00:44:05,770 >> ЈАСОН Hirschhorn: низа. 860 00:44:05,770 --> 00:44:07,730 OK. 861 00:44:07,730 --> 00:44:14,040 И што друго е нешто што е само големина еден бајт? 862 00:44:14,040 --> 00:44:16,980 863 00:44:16,980 --> 00:44:18,060 >> СТУДЕНТСКИ 30: А char *? 864 00:44:18,060 --> 00:44:18,530 >> СТУДЕНТСКИ 29: Да. 865 00:44:18,530 --> 00:44:19,880 >> ЈАСОН Hirschhorn: А char * не е еден бајт. 866 00:44:19,880 --> 00:44:20,440 >> СТУДЕНТСКИ 29: А знак. 867 00:44:20,440 --> 00:44:21,810 >> ЈАСОН Hirschhorn: А знак е еден бајт. 868 00:44:21,810 --> 00:44:22,920 Нели? 869 00:44:22,920 --> 00:44:26,740 Така да ја наречеме оваа тампон е генерички име што се користи за овие работи кои треба да се сместат 870 00:44:26,740 --> 00:44:27,910 нешто привремено. 871 00:44:27,910 --> 00:44:30,880 Па јас создаде тампон. 872 00:44:30,880 --> 00:44:31,150 Нели? 873 00:44:31,150 --> 00:44:32,990 Но тоа не се празнина *. 874 00:44:32,990 --> 00:44:38,660 Па можеби вие сте во право, дека тоа треба да биде тампон големина 0. 875 00:44:38,660 --> 00:44:41,070 Па тоа продавници еден - 876 00:44:41,070 --> 00:44:41,280 во право. 877 00:44:41,280 --> 00:44:43,560 >> Бидејќи ова право тука - знак тампон е лик, но 878 00:44:43,560 --> 00:44:45,110 ова се неважечки * - 879 00:44:45,110 --> 00:44:45,870 покажувач. 880 00:44:45,870 --> 00:44:50,640 Па можев да го направи ова и сега пуфер е покажувач. 881 00:44:50,640 --> 00:44:53,214 Што друго можев да направам? 882 00:44:53,214 --> 00:44:55,775 >> СТУДЕНТСКИ 31: Ставете ѕвезда до знак. 883 00:44:55,775 --> 00:44:58,380 >> ЈАСОН Hirschhorn: можев направивме тоа char *. 884 00:44:58,380 --> 00:45:00,216 OK. 885 00:45:00,216 --> 00:45:03,131 Што е уште нешто што можев да направам? 886 00:45:03,131 --> 00:45:04,050 Или да одиме со оваа. 887 00:45:04,050 --> 00:45:05,740 Char * тампон, па што да го ставам тука? 888 00:45:05,740 --> 00:45:08,290 889 00:45:08,290 --> 00:45:09,310 >> СТУДЕНТСКИ 31: тампон. 890 00:45:09,310 --> 00:45:10,560 >> ЈАСОН Hirschhorn: тампон. 891 00:45:10,560 --> 00:45:12,640 892 00:45:12,640 --> 00:45:14,500 Тампон е покажувач кон знак. 893 00:45:14,500 --> 00:45:19,480 И во таа локација, ние сме ставање еден бајт на нешто што сте ги прочитале. 894 00:45:19,480 --> 00:45:19,980 Да. 895 00:45:19,980 --> 00:45:20,700 AVI. 896 00:45:20,700 --> 00:45:21,230 >> Ави: Само брз прашање. 897 00:45:21,230 --> 00:45:24,440 Дали сакате да Примерок тампон? 898 00:45:24,440 --> 00:45:25,930 >> ЈАСОН Hirschhorn: Кој може да одговори на тоа прашање? 899 00:45:25,930 --> 00:45:30,210 >> СТУДЕНТСКИ 32: Па, тоа не е навистина точка за ништо во моментов, така - 900 00:45:30,210 --> 00:45:32,610 >> ЈАСОН Hirschhorn: Но, дали ние сакаме да го Примерок? 901 00:45:32,610 --> 00:45:35,600 >> СТУДЕНТСКИ 32: Ако сте биле за да го направи тоа начин, претпоставувам, да, бидејќи ќе треба 902 00:45:35,600 --> 00:45:36,990 некое место за тоа да укаже. 903 00:45:36,990 --> 00:45:38,350 >> ЈАСОН Hirschhorn: Дали ние мора да го Примерок? 904 00:45:38,350 --> 00:45:40,580 >> СТУДЕНТСКИ 33: Ако си оди за да го користите надвор од јамка. 905 00:45:40,580 --> 00:45:42,524 >> ЈАСОН Hirschhorn: Дали ние ќе го користите надвор од јамка? 906 00:45:42,524 --> 00:45:44,392 >> СТУДЕНТСКИ 34: Да. 907 00:45:44,392 --> 00:45:44,860 >> СТУДЕНТСКИ 35: Чекај. 908 00:45:44,860 --> 00:45:46,980 Сакаме да ја прогласи во јамка да се надвор? 909 00:45:46,980 --> 00:45:50,100 >> ЈАСОН Hirschhorn: Па претпоставувам дека имаме некои псевдо додека јамка тука дека ние сме 910 00:45:50,100 --> 00:45:51,950 се обидувам да дознаам, дека ние не сме добиле на уште. 911 00:45:51,950 --> 00:45:54,710 912 00:45:54,710 --> 00:45:56,010 Ние не треба да го Примерок. 913 00:45:56,010 --> 00:45:59,310 Ние сме работат во главната, тоа е само ќе да се користи во овој циклус. 914 00:45:59,310 --> 00:46:00,540 Тоа не треба да постои надвор од овој. 915 00:46:00,540 --> 00:46:02,340 >> Па тоа може да биде локална променлива. 916 00:46:02,340 --> 00:46:03,925 Имате покажувач локална променлива. 917 00:46:03,925 --> 00:46:07,984 918 00:46:07,984 --> 00:46:09,590 >> СТУДЕНТСКИ 36: Но, тоа не е укажувајќи на ништо. 919 00:46:09,590 --> 00:46:11,540 >> ЈАСОН Hirschhorn: Не, тоа не е иницијализиран на ништо. 920 00:46:11,540 --> 00:46:12,790 Но ние нема да го користите, исто така. 921 00:46:12,790 --> 00:46:15,300 Ние ќе се стави нешто во тоа прв пат ние го користиме. 922 00:46:15,300 --> 00:46:16,580 Така што се чини во ред. 923 00:46:16,580 --> 00:46:17,780 Значи ние не треба Примерок тука. 924 00:46:17,780 --> 00:46:19,360 И мислам дека тоа е во ред како што е. 925 00:46:19,360 --> 00:46:24,350 926 00:46:24,350 --> 00:46:25,790 OK. 927 00:46:25,790 --> 00:46:27,190 Имаме fread линија. 928 00:46:27,190 --> 00:46:28,490 Ајде да го направите на следната линија. 929 00:46:28,490 --> 00:46:32,984 >> Ако сакаме да запишам во датотеката, она што е добра функција да ги користите за да го направите тоа? 930 00:46:32,984 --> 00:46:33,770 >> СТУДЕНТСКИ 37: запишување? 931 00:46:33,770 --> 00:46:35,140 >> СТУДЕНТСКИ 38: fprintf? 932 00:46:35,140 --> 00:46:36,010 >> ЈАСОН Hirschhorn: fprintf е еден. 933 00:46:36,010 --> 00:46:37,260 Што е уште еден? 934 00:46:37,260 --> 00:46:37,680 >> СТУДЕНТСКИ 39: запишување. 935 00:46:37,680 --> 00:46:38,510 >> ЈАСОН Hirschhorn: запишување. 936 00:46:38,510 --> 00:46:41,250 И за нашите цели, запишување, која ја видовме тука, е 937 00:46:41,250 --> 00:46:42,500 веројатно подобар избор. 938 00:46:42,500 --> 00:46:51,970 939 00:46:51,970 --> 00:46:53,950 Потребни се четири аргументи, како и. 940 00:46:53,950 --> 00:46:57,570 Nishant, може да ви даде мене аргументи? 941 00:46:57,570 --> 00:47:00,570 >> Nishant: Одење Првиот е да биде само тампон. 942 00:47:00,570 --> 00:47:02,210 >> ЈАСОН Hirschhorn: OK. 943 00:47:02,210 --> 00:47:06,752 >> Nishant: Втората нечиј само ќе биде 1. 944 00:47:06,752 --> 00:47:09,510 Третиот ќе биде 1. 945 00:47:09,510 --> 00:47:11,470 И четвртиот ќе биде DST. 946 00:47:11,470 --> 00:47:18,010 947 00:47:18,010 --> 00:47:19,550 >> ЈАСОН Hirschhorn: Дали некој има било какви прашања во врска со тоа линија? 948 00:47:19,550 --> 00:47:28,370 949 00:47:28,370 --> 00:47:29,130 Што изгледа добро. 950 00:47:29,130 --> 00:47:29,590 OK. 951 00:47:29,590 --> 00:47:34,250 Па сега тоа изгледа како едно нешто сме недостасува - всушност, да се напише 952 00:47:34,250 --> 00:47:35,090 оваа последната линија. 953 00:47:35,090 --> 00:47:36,300 Затвори датотеки. 954 00:47:36,300 --> 00:47:38,880 Кои можат да ни завршам пишувањето овие последните две линии? 955 00:47:38,880 --> 00:47:39,120 Да. 956 00:47:39,120 --> 00:47:39,850 Жал ми е, како се викаш? 957 00:47:39,850 --> 00:47:40,580 >> Луси: Луси. 958 00:47:40,580 --> 00:47:41,580 >> ЈАСОН Hirschhorn: Луси. 959 00:47:41,580 --> 00:47:47,560 >> Луси: запишам src а потоа запишам дестинација. 960 00:47:47,560 --> 00:47:52,430 >> ЈАСОН Hirschhorn: запишам, отворен paren, src, во близина paren, точка-запирка. 961 00:47:52,430 --> 00:47:53,680 И запишам - 962 00:47:53,680 --> 00:47:57,560 963 00:47:57,560 --> 00:47:58,090 Да? 964 00:47:58,090 --> 00:48:01,710 >> Луси: Отворени загради, DST а потоа запирка. 965 00:48:01,710 --> 00:48:02,520 >> ЈАСОН Hirschhorn: Велики. 966 00:48:02,520 --> 00:48:04,338 И што треба да вклучуваат на крајот? 967 00:48:04,338 --> 00:48:05,210 >> Луси: Врати 0. 968 00:48:05,210 --> 00:48:05,570 >> ЈАСОН Hirschhorn: Враќање 0. 969 00:48:05,570 --> 00:48:06,820 Дали треба да се? 970 00:48:06,820 --> 00:48:10,560 971 00:48:10,560 --> 00:48:12,590 Само едно прашање. 972 00:48:12,590 --> 00:48:14,957 Ние мора да вклучуваат поврат 0? 973 00:48:14,957 --> 00:48:16,240 >> ПОВЕЌЕ СТУДЕНТИ: Не 974 00:48:16,240 --> 00:48:16,430 >> ЈАСОН Hirschhorn: Не 975 00:48:16,430 --> 00:48:18,090 Главната тоа го прави автоматски ако се дојде до крајот. 976 00:48:18,090 --> 00:48:20,580 Но, мислам дека е убаво да се вклучат експлицитно. 977 00:48:20,580 --> 00:48:23,860 Особено кога ние сме се враќа други работи во текот на програмата. 978 00:48:23,860 --> 00:48:24,810 OK. 979 00:48:24,810 --> 00:48:26,230 Тоа е она што ние сме недостасува - 980 00:48:26,230 --> 00:48:28,520 Додека она што? 981 00:48:28,520 --> 00:48:31,630 Кој може да се помисли на некои - 982 00:48:31,630 --> 00:48:35,240 има некои смисла на она што би можеле да одат таму? 983 00:48:35,240 --> 00:48:37,350 Дури и ако тоа е само во некои pseudocode како јазик? 984 00:48:37,350 --> 00:48:41,330 >> Што сме ние навистина - што сакаме да се оди до? 985 00:48:41,330 --> 00:48:41,980 Да, Луси. 986 00:48:41,980 --> 00:48:43,240 >> Луси: На крајот на датотеката. 987 00:48:43,240 --> 00:48:44,990 >> ЈАСОН Hirschhorn: На крајот на датотеката. 988 00:48:44,990 --> 00:48:49,280 Па што сакаш да кажеш со крајот на датотеката? 989 00:48:49,280 --> 00:48:50,955 >> Луси: Откако ќе стигнат до крајот на датотеката, да престане. 990 00:48:50,955 --> 00:48:51,240 >> ЈАСОН Hirschhorn: OK. 991 00:48:51,240 --> 00:48:53,460 Па еднаш кога ќе стигнеме на крајот на датотеката. 992 00:48:53,460 --> 00:48:56,893 Како да знаеме кога сме достигна на крајот на датотеката? 993 00:48:56,893 --> 00:48:59,900 >> СТУДЕНТСКИ 40: Мислам дека тампон ќе биде поставено на NULL. 994 00:48:59,900 --> 00:49:01,885 >> СТУДЕНТСКИ 41: Тампон е прогласена во внатрешноста на јамка. 995 00:49:01,885 --> 00:49:03,670 >> ЈАСОН Hirschhorn: Така мислите тампон ќе биде поставено на NULL. 996 00:49:03,670 --> 00:49:05,850 Зошто би тампон да се постави на нула? 997 00:49:05,850 --> 00:49:10,420 >> СТУДЕНТСКИ 40: Затоа што кога ќе fread, ти се обидуваш да се стави 998 00:49:10,420 --> 00:49:13,528 ништо во тампон. 999 00:49:13,528 --> 00:49:13,980 >> ЈАСОН Hirschhorn: OK. 1000 00:49:13,980 --> 00:49:15,550 Значи сте размислување fread - 1001 00:49:15,550 --> 00:49:19,000 кога сме стигнале до крајот на датотека, она што е fread случува да се направи? 1002 00:49:19,000 --> 00:49:21,230 Мислам дека тоа е прашањето ние треба да дознаам. 1003 00:49:21,230 --> 00:49:21,960 Што значи fread направам? 1004 00:49:21,960 --> 00:49:25,640 Не го стави NULL во тампон, или не го прават тоа нешто друго? 1005 00:49:25,640 --> 00:49:27,510 Како можеме да дознаам што го прави тоа? 1006 00:49:27,510 --> 00:49:28,190 >> СТУДЕНТСКИ 42: Човекот. 1007 00:49:28,190 --> 00:49:28,810 >> ЈАСОН Hirschhorn: Човекот. 1008 00:49:28,810 --> 00:49:32,280 Значи, да погледнеме овде. 1009 00:49:32,280 --> 00:49:34,000 Се врати вредност. 1010 00:49:34,000 --> 00:49:39,620 На успех, fread и запишување врати број на предмети се прочита или писмени. 1011 00:49:39,620 --> 00:49:43,700 Овој број е еднаков на бројот на бајти пренесува само кога големина е 1. 1012 00:49:43,700 --> 00:49:47,780 Доколку некоја грешка се случува, или на крајот на Датотеката е постигнат, вратената вредност е 1013 00:49:47,780 --> 00:49:51,490 краток точка пол брои или 0. 1014 00:49:51,490 --> 00:49:57,860 >> Така и за нашите цели, ако fread достигне на крајот на датотеката, и чита од 1015 00:49:57,860 --> 00:50:02,100 на крајот од датотеката, нема ништо лево да се прочита, што е тоа ќе се врати? 1016 00:50:02,100 --> 00:50:03,290 >> СТУДЕНТСКИ 43: нула? 1017 00:50:03,290 --> 00:50:04,540 >> ЈАСОН Hirschhorn: Што? 1018 00:50:04,540 --> 00:50:05,300 >> СТУДЕНТСКИ 43: нула? 1019 00:50:05,300 --> 00:50:05,690 >> ЈАСОН Hirschhorn: Нулта. 1020 00:50:05,690 --> 00:50:06,940 Тоа се случува да се врати на нула. 1021 00:50:06,940 --> 00:50:09,360 1022 00:50:09,360 --> 00:50:13,010 Па знаеме дека fread, кога ние сме до крајот на датотеката, се случува 1023 00:50:13,010 --> 00:50:13,690 за да се вратите на нула. 1024 00:50:13,690 --> 00:50:17,460 Како можеме да го користите дека за да нашата предност? 1025 00:50:17,460 --> 00:50:21,733 >> Ави: Можете да декларирате променлива надвор од циклусот наречен чек. 1026 00:50:21,733 --> 00:50:27,040 Ако провериш еднаква на - 1027 00:50:27,040 --> 00:50:28,190 за сега - еден. 1028 00:50:28,190 --> 00:50:28,920 >> ЈАСОН Hirschhorn: OK. 1029 00:50:28,920 --> 00:50:38,050 >> Ави: И тогаш може да се стави АКО изјава веднаш по fread велејќи дека ако 1030 00:50:38,050 --> 00:50:42,600 fread е еднаква на нула - 1031 00:50:42,600 --> 00:50:43,850 бр. 1032 00:50:43,850 --> 00:50:46,002 1033 00:50:46,002 --> 00:50:47,252 >> ЈАСОН Hirschhorn: Кој можат да ви помогнат Ави надвор? 1034 00:50:47,252 --> 00:50:49,690 1035 00:50:49,690 --> 00:50:52,410 >> Ави: Што е вредноста вратени од fread? 1036 00:50:52,410 --> 00:50:54,060 >> ЈАСОН Hirschhorn: Ние само заврши над тоа. 1037 00:50:54,060 --> 00:50:55,450 >> Ави: Како да се претставува? 1038 00:50:55,450 --> 00:50:57,190 >> ЈАСОН Hirschhorn: Значи тој се враќа - да гледам нагоре тука - тоа се враќа 1039 00:50:57,190 --> 00:50:59,340 size_t, која е во суштина цел број. 1040 00:50:59,340 --> 00:51:02,240 1041 00:51:02,240 --> 00:51:03,410 Па тоа се враќа цел број. 1042 00:51:03,410 --> 00:51:05,160 И во нашиот случај, тоа ќе врати 1 или 0 - 1043 00:51:05,160 --> 00:51:08,760 1 ако го прочита една работа - еден бајт, и 0 ако сме стигнале до крајот. 1044 00:51:08,760 --> 00:51:13,560 1045 00:51:13,560 --> 00:51:16,450 Па ако fread - 1046 00:51:16,450 --> 00:51:16,855 Да? 1047 00:51:16,855 --> 00:51:20,330 >> СТУДЕНТСКИ 45: Не можам да ви само да ги ставите на целосна fread (бафер, 1, 1, src) во 1048 00:51:20,330 --> 00:51:21,660 додека јамка? 1049 00:51:21,660 --> 00:51:26,510 >> ЈАСОН Hirschhorn: Значи ти предложи го прават тоа во таму? 1050 00:51:26,510 --> 00:51:27,600 >> [Ставање ГЛАСОВИ] 1051 00:51:27,600 --> 00:51:29,520 >> ЈАСОН Hirschhorn: Држи се. 1052 00:51:29,520 --> 00:51:30,885 Па ние сме ослободување на тоа. 1053 00:51:30,885 --> 00:51:33,300 Па ти си предлагање ставање fread во таму? 1054 00:51:33,300 --> 00:51:35,457 Она што ние треба, исто така, се движат ако сакате да го направите тоа? 1055 00:51:35,457 --> 00:51:36,740 >> СТУДЕНТСКИ 45: Тампон надвор. 1056 00:51:36,740 --> 00:51:38,110 >> ЈАСОН Hirschhorn: ние треба да исто така се помести ова овде. 1057 00:51:38,110 --> 00:51:41,700 >> СТУДЕНТСКИ 45: Но, дали тоа постојано се движат напред? 1058 00:51:41,700 --> 00:51:42,950 >> [Ставање ГЛАСОВИ] 1059 00:51:42,950 --> 00:51:46,540 1060 00:51:46,540 --> 00:51:47,470 >> ЈАСОН Hirschhorn: OK. 1061 00:51:47,470 --> 00:51:50,570 Значи тоа е она што Okshar предложен. 1062 00:51:50,570 --> 00:51:51,930 Ние создаваме нашите тампон. 1063 00:51:51,930 --> 00:51:57,020 Ние ДОДЕКА fread, тогаш ние запишување. 1064 00:51:57,020 --> 00:51:59,760 Мисли на ова? 1065 00:51:59,760 --> 00:52:04,050 >> СТУДЕНТСКИ 46: Мојата единствена прашање е, би тоа всушност се изврши командата fread? 1066 00:52:04,050 --> 00:52:06,175 >> ЈАСОН Hirschhorn: Велики прашање. 1067 00:52:06,175 --> 00:52:11,050 Кога ќе се стави повик на функција внатрешноста на состојба, дали тоа 1068 00:52:11,050 --> 00:52:12,300 повик на функција изврши? 1069 00:52:12,300 --> 00:52:15,760 1070 00:52:15,760 --> 00:52:17,770 Видовме примери на тоа порано. 1071 00:52:17,770 --> 00:52:24,900 1072 00:52:24,900 --> 00:52:25,660 Нели? 1073 00:52:25,660 --> 00:52:26,125 >> СТУДЕНТСКИ 46: OK. 1074 00:52:26,125 --> 00:52:26,590 Да. 1075 00:52:26,590 --> 00:52:30,140 Па тоа не се изврши. 1076 00:52:30,140 --> 00:52:31,790 >> ЈАСОН Hirschhorn: Видовме работи како што порано, каде што имаме 1077 00:52:31,790 --> 00:52:33,550 повик на функција во внатрешноста на состојба. 1078 00:52:33,550 --> 00:52:35,540 Дали таа функција повик изврши? 1079 00:52:35,540 --> 00:52:36,350 Да. 1080 00:52:36,350 --> 00:52:37,410 Значи одговорот е да. 1081 00:52:37,410 --> 00:52:41,010 Овој повик функција ќе се изврши. 1082 00:52:41,010 --> 00:52:42,418 Но, повторно, тоа е она што сакаме? 1083 00:52:42,418 --> 00:52:49,250 1084 00:52:49,250 --> 00:52:52,204 >> Што е еден начин ние би можеле да дознаам дознаете дали тоа е она што сакаме? 1085 00:52:52,204 --> 00:52:53,470 >> ПОВЕЌЕ СТУДЕНТИ: Стартувај тоа? 1086 00:52:53,470 --> 00:52:54,460 >> ЈАСОН Hirschhorn: Можевме да го работи. 1087 00:52:54,460 --> 00:52:57,500 Но, пред да го направите тоа, ние би можеле Исто така Разумот преку ова. 1088 00:52:57,500 --> 00:52:57,920 Ако - 1089 00:52:57,920 --> 00:53:01,920 велат дека ние имаме еден бајт во нашата датотека, ќе дојдеме до тука, 1090 00:53:01,920 --> 00:53:02,660 ние ќе дојдеме до овој код. 1091 00:53:02,660 --> 00:53:03,620 Ова ќе се кандидира. 1092 00:53:03,620 --> 00:53:07,780 fread ќе се врати еден бајт и чувајте го во тампон. 1093 00:53:07,780 --> 00:53:11,290 И тоа ќе се оцени на 1, право, откако тој се враќа 1. 1094 00:53:11,290 --> 00:53:12,640 >> Така, додека 1. 1095 00:53:12,640 --> 00:53:15,325 Дали тоа значи дека кодот внатре додека јамка ќе се изврши? 1096 00:53:15,325 --> 00:53:15,453 >> СТУДЕНТСКИ 47: Да. 1097 00:53:15,453 --> 00:53:16,040 Тоа е вистина. 1098 00:53:16,040 --> 00:53:16,290 >> ЈАСОН Hirschhorn: Да. 1099 00:53:16,290 --> 00:53:17,490 1 е вистина. 1100 00:53:17,490 --> 00:53:18,240 Тоа не е 0. 1101 00:53:18,240 --> 00:53:20,360 Па го кодот во внатрешноста тука ќе се изврши. 1102 00:53:20,360 --> 00:53:22,300 Па ние ќе се напише тоа. 1103 00:53:22,300 --> 00:53:25,340 Ние ќе се движи назад во оваа линија повторно. 1104 00:53:25,340 --> 00:53:26,850 Сега имаме - 1105 00:53:26,850 --> 00:53:28,550 ние сме на крајот од нашиот датотека. 1106 00:53:28,550 --> 00:53:30,980 Читаме од крајот на нашиот датотека, бидејќи имавме само еден бајт во неа. 1107 00:53:30,980 --> 00:53:34,270 >> Fread враќа 0, продавници нешто во тампон. 1108 00:53:34,270 --> 00:53:35,890 Јас искрено не знам што тоа продавници во тампон. 1109 00:53:35,890 --> 00:53:38,380 Ние веројатно може да се погледне до да видиме што тоа го прави. 1110 00:53:38,380 --> 00:53:40,130 Дека Јас искрено не знам. 1111 00:53:40,130 --> 00:53:43,090 Ние не знаеме, кој се грижи што тоа продавници во тампон? 1112 00:53:43,090 --> 00:53:44,010 Но, тоа не се вратат 0. 1113 00:53:44,010 --> 00:53:45,440 И ќе Додека 0 изврши? 1114 00:53:45,440 --> 00:53:49,950 1115 00:53:49,950 --> 00:53:51,180 >> Додека 0 не ќе го изврши. 1116 00:53:51,180 --> 00:53:54,030 Па тогаш ние ќе се пресели овде. 1117 00:53:54,030 --> 00:53:58,870 Па ајде стигнете кревање раце, ако тоа е кодот ние треба да се кандидира, или ако 1118 00:53:58,870 --> 00:54:00,140 треба да се направи промени во прв план. 1119 00:54:00,140 --> 00:54:02,180 Значи, ако мислите - што треба да гласаат. 1120 00:54:02,180 --> 00:54:06,885 Ако мислите дека треба да ја извршите оваа код како што е, ве молиме подигне својата рака. 1121 00:54:06,885 --> 00:54:12,440 1122 00:54:12,440 --> 00:54:13,400 >> OK. 1123 00:54:13,400 --> 00:54:14,315 Има една - 1124 00:54:14,315 --> 00:54:17,260 имате прашање, загриженост? 1125 00:54:17,260 --> 00:54:18,080 Да. 1126 00:54:18,080 --> 00:54:21,240 >> СТУДЕНТСКИ 48: По што се движи тампон надвор од јамка, ние 1127 00:54:21,240 --> 00:54:22,670 мора да го Примерок? 1128 00:54:22,670 --> 00:54:23,310 >> ЈАСОН Hirschhorn: Велики прашање. 1129 00:54:23,310 --> 00:54:26,670 Откако ќе се движат тампон надвор од јамка, ние мора да го Примерок? 1130 00:54:26,670 --> 00:54:28,400 Ова е опсегот прашање. 1131 00:54:28,400 --> 00:54:32,130 Ако ние се иницијализира тампон надвор на овој циклус, тоа ќе постои 1132 00:54:32,130 --> 00:54:33,534 внатрешноста на јамка? 1133 00:54:33,534 --> 00:54:35,230 >> ПОВЕЌЕ СТУДЕНТИ: Да. 1134 00:54:35,230 --> 00:54:35,580 >> ЈАСОН Hirschhorn: Да. 1135 00:54:35,580 --> 00:54:40,100 Својот делокруг опфаќа внатрешноста на јамка, и, навистина, ништо под неа внатре 1136 00:54:40,100 --> 00:54:42,460 на овој закон, вклучувајќи го и работи внатре тука. 1137 00:54:42,460 --> 00:54:43,930 Па ние не треба да го Примерок. 1138 00:54:43,930 --> 00:54:47,766 Тоа е локална променлива, и својот делокруг се уште е вклучен јамка. 1139 00:54:47,766 --> 00:54:49,540 >> СТУДЕНТСКИ 49: Дали ни е потребна за да се ослободи? 1140 00:54:49,540 --> 00:54:51,770 >> ЈАСОН Hirschhorn: Дали ние треба да се ослободи тампон? 1141 00:54:51,770 --> 00:54:53,860 >> СТУДЕНТСКИ 49: Да, ако ние не Примерок. 1142 00:54:53,860 --> 00:54:55,750 >> ЈАСОН Hirschhorn: Дали ние треба да се ослободи тампон? 1143 00:54:55,750 --> 00:54:57,160 Ние не. 1144 00:54:57,160 --> 00:55:01,280 Повторно, тоа е локална променлива, па ние не треба да го ослободи. 1145 00:55:01,280 --> 00:55:02,170 OK. 1146 00:55:02,170 --> 00:55:03,480 Ајде да видиме што се случува. 1147 00:55:03,480 --> 00:55:17,290 1148 00:55:17,290 --> 00:55:18,220 Па тоа е деиницијализира. 1149 00:55:18,220 --> 00:55:20,830 Тоа беше она нешто што Маркус предложи порано. 1150 00:55:20,830 --> 00:55:25,340 Значи имаме таа грешка, променлива тампон е деиницијализира кога се користи тука. 1151 00:55:25,340 --> 00:55:26,590 >> Како можеме да го надминете овој? 1152 00:55:26,590 --> 00:55:29,460 1153 00:55:29,460 --> 00:55:30,960 >> СТУДЕНТСКИ 50: Примерок тоа? 1154 00:55:30,960 --> 00:55:31,770 >> СТУДЕНТСКИ 51: еднакво NULL? 1155 00:55:31,770 --> 00:55:33,000 >> СТУДЕНТСКИ 52: Кажи тампон еднаква NULL. 1156 00:55:33,000 --> 00:55:34,250 >> ЈАСОН Hirschhorn: OK. 1157 00:55:34,250 --> 00:55:40,040 1158 00:55:40,040 --> 00:55:40,770 Изгледа добро. 1159 00:55:40,770 --> 00:55:42,410 Ние го имаме сега. 1160 00:55:42,410 --> 00:55:45,630 Ајде да се создаде нешто да се обиде копирање. 1161 00:55:45,630 --> 00:56:08,990 1162 00:56:08,990 --> 00:56:10,490 Па ние имаме текст фајл. 1163 00:56:10,490 --> 00:56:11,740 Како можеме да ја извршите оваа програма? 1164 00:56:11,740 --> 00:56:14,140 1165 00:56:14,140 --> 00:56:15,472 Да. 1166 00:56:15,472 --> 00:56:22,230 >> СТУДЕНТСКИ 53: Можете да го направите точка сека CP, test.txt. 1167 00:56:22,230 --> 00:56:25,140 А потоа можете да именува друга датотека кои ќе се сместат во. 1168 00:56:25,140 --> 00:56:25,510 >> ЈАСОН Hirschhorn: OK. 1169 00:56:25,510 --> 00:56:27,380 Ние ќе го наречеме out.txt. 1170 00:56:27,380 --> 00:56:28,630 Кул? 1171 00:56:28,630 --> 00:56:31,700 1172 00:56:31,700 --> 00:56:34,320 СКГ вина. 1173 00:56:34,320 --> 00:56:35,570 Мисли на СКГ грешка? 1174 00:56:35,570 --> 00:56:40,900 1175 00:56:40,900 --> 00:56:41,390 Ова е одлично. 1176 00:56:41,390 --> 00:56:45,040 Како можеме да дознаете каде на СКГ вина е тоа? 1177 00:56:45,040 --> 00:56:45,680 Што? 1178 00:56:45,680 --> 00:56:45,990 >> СТУДЕНТСКИ 54: gdb. 1179 00:56:45,990 --> 00:56:47,240 >> ЈАСОН Hirschhorn: gdb. 1180 00:56:47,240 --> 00:56:51,400 1181 00:56:51,400 --> 00:56:55,300 Трчаме gdb со пишување gdb точка коса црта, името на нашата програма. 1182 00:56:55,300 --> 00:56:57,020 Нема командната линија аргументи таму. 1183 00:56:57,020 --> 00:56:59,570 Ние ќе се постави точка на прекин на главната. 1184 00:56:59,570 --> 00:57:02,190 Ако сакам да започне gdb, она што можам да направам? 1185 00:57:02,190 --> 00:57:02,730 >> СТУДЕНТСКИ 55: Р 1186 00:57:02,730 --> 00:57:08,910 >> ЈАСОН Hirschhorn: Р И што тогаш? 1187 00:57:08,910 --> 00:57:09,400 >> СТУДЕНТСКИ 55: Аргументите? 1188 00:57:09,400 --> 00:57:10,650 >> ЈАСОН Hirschhorn: Потоа командната линија аргументи. 1189 00:57:10,650 --> 00:57:15,890 1190 00:57:15,890 --> 00:57:17,120 Ајде да одиме преку. 1191 00:57:17,120 --> 00:57:19,090 N е само ме водиш линија по линија. 1192 00:57:19,090 --> 00:57:21,450 Одам да се оди до Јас се ми сегмент вина. 1193 00:57:21,450 --> 00:57:22,700 Таму е мојата сегмент вина. 1194 00:57:22,700 --> 00:57:24,960 1195 00:57:24,960 --> 00:57:27,875 Тоа изгледа како fread предизвикани мојот сегмент вина. 1196 00:57:27,875 --> 00:57:30,570 1197 00:57:30,570 --> 00:57:32,770 Знам fread предизвика мојата сегмент вина, затоа што тоа беше 1198 00:57:32,770 --> 00:57:34,950 линија ние само погубен. 1199 00:57:34,950 --> 00:57:36,530 >> И единственото нешто што беше се случува во таа линија - 1200 00:57:36,530 --> 00:57:37,520 две работи се случуваа. 1201 00:57:37,520 --> 00:57:40,610 Fread се случува, а потоа бевме прават некои, додека проверка. 1202 00:57:40,610 --> 00:57:44,820 Јас сум подготвен да се обложи дека додека проверка не беше поради мојата сегмент вина. 1203 00:57:44,820 --> 00:57:46,950 Најверојатно, fread беше поради мојата сегмент вина. 1204 00:57:46,950 --> 00:57:49,260 Јас, исто така види нешто тука, memcopy. 1205 00:57:49,260 --> 00:57:50,500 >> Меморија копија. 1206 00:57:50,500 --> 00:57:53,820 Звучи како се движат меморија од една локација на друга. 1207 00:57:53,820 --> 00:57:56,890 Звучи како нешто што ќе се случи во fread, можеби некои меморија 1208 00:57:56,890 --> 00:57:58,910 се движат од тука до тука. 1209 00:57:58,910 --> 00:58:01,740 1210 00:58:01,740 --> 00:58:03,860 Ајде да одиме преку ова повторно. 1211 00:58:03,860 --> 00:58:06,900 Како можам да го почнете одново и се пушта повторно? 1212 00:58:06,900 --> 00:58:08,092 Да. 1213 00:58:08,092 --> 00:58:15,140 >> СТУДЕНТСКИ 56: Дали треба да се стави на симболот пред тампон? 1214 00:58:15,140 --> 00:58:17,800 >> ЈАСОН Hirschhorn: Значи симболот пред тампон ќе ми даде адресата на 1215 00:58:17,800 --> 00:58:22,330 пуфер, што е знак *. 1216 00:58:22,330 --> 00:58:25,250 Ајде да поминува низ овој уште еднаш. 1217 00:58:25,250 --> 00:58:28,248 Како можам да поминува низ него уште еднаш? 1218 00:58:28,248 --> 00:58:29,210 >> СТУДЕНТСКИ 57: Може ли само тип се кандидира повторно? 1219 00:58:29,210 --> 00:58:32,050 >> ЈАСОН Hirschhorn: Само внеси ги кандидира повторно. 1220 00:58:32,050 --> 00:58:33,415 Па ние нема да изврши оваа линија. 1221 00:58:33,415 --> 00:58:36,250 1222 00:58:36,250 --> 00:58:39,240 Па тампон е NULL покажувач. 1223 00:58:39,240 --> 00:58:40,490 Точно? 1224 00:58:40,490 --> 00:58:45,870 1225 00:58:45,870 --> 00:58:47,060 Тоа е да се покажува кон - ајде да видиме. 1226 00:58:47,060 --> 00:58:48,500 Ако ние имаме - 1227 00:58:48,500 --> 00:58:50,430 подготви брзо слика на тоа. 1228 00:58:50,430 --> 00:58:53,500 Може секого да видат дали Јас пишувам овде? 1229 00:58:53,500 --> 00:59:02,890 >> Па во магацинот, имаме локални променлива и се вика тампон, а 1230 00:59:02,890 --> 00:59:08,230 тоа е покажувач кон знак. 1231 00:59:08,230 --> 00:59:10,325 Што адресата е ова знак на? 1232 00:59:10,325 --> 00:59:12,550 >> СТУДЕНТСКИ 58: 0x0. 1233 00:59:12,550 --> 00:59:13,400 >> ЈАСОН Hirschhorn: Право. 1234 00:59:13,400 --> 00:59:14,200 Тоа е она што е оваа. 1235 00:59:14,200 --> 00:59:17,600 Тука, внатре тампон, се чуваат 0x0. 1236 00:59:17,600 --> 00:59:20,480 Тоа е она што го имаме - на подесување имаме во моментов. 1237 00:59:20,480 --> 00:59:27,540 Па оваа линија, fread, го става нешто од изворот каде? 1238 00:59:27,540 --> 00:59:30,560 Во ова поле или ова поле? 1239 00:59:30,560 --> 00:59:31,060 Кој кутија? 1240 00:59:31,060 --> 00:59:33,290 Лево или десно кутија кутија? 1241 00:59:33,290 --> 00:59:34,750 Ова право кутија. 1242 00:59:34,750 --> 00:59:38,440 >> Го следи покажувач, и го става тука. 1243 00:59:38,440 --> 00:59:42,620 Кога ние се обидуваме и допир меморија на локација 0, што ќе ги добиеме? 1244 00:59:42,620 --> 00:59:45,050 А сегментација вина. 1245 00:59:45,050 --> 00:59:46,550 Тоа е грешка имаме во моментов. 1246 00:59:46,550 --> 00:59:46,970 Да. 1247 00:59:46,970 --> 00:59:48,410 >> СТУДЕНТСКИ 59: Не треба да се стави ѕвезда тампон? 1248 00:59:48,410 --> 00:59:49,180 Или не? 1249 00:59:49,180 --> 00:59:50,050 За fread? 1250 00:59:50,050 --> 00:59:51,450 >> ЈАСОН Hirschhorn: Значи fread потребно е покажувач. 1251 00:59:51,450 --> 00:59:54,920 1252 00:59:54,920 --> 00:59:55,900 Па тоа поминува во тампон. 1253 00:59:55,900 --> 00:59:58,980 И тогаш тоа ќе де-референтноста тоа некаде во внатрешноста fread. 1254 00:59:58,980 --> 01:00:00,700 Но, повторно, видовме, потребно е покажувач. 1255 01:00:00,700 --> 01:00:02,560 Ние не треба да го помине ѕвезда тампон. 1256 01:00:02,560 --> 01:00:05,350 Кои ќе бидат поминува тоа што е овде. 1257 01:00:05,350 --> 01:00:07,980 И дека, најверојатно, ќе ни даде грешка бидејќи ние сме го де-референцирање. 1258 01:00:07,980 --> 01:00:08,150 >> Нели? 1259 01:00:08,150 --> 01:00:10,690 Кога ќе се де-референтноста овој покажувач, кога ние се обидуваме да пристапите на оваа локација, 1260 01:00:10,690 --> 01:00:13,140 ние сме добивање на грешка - нашите сегментација вина. 1261 01:00:13,140 --> 01:00:15,800 Па - 1262 01:00:15,800 --> 01:00:16,690 Упс. 1263 01:00:16,690 --> 01:00:19,090 Ние ќе престанам надвор од gdb. 1264 01:00:19,090 --> 01:00:20,160 Нашата линија - 1265 01:00:20,160 --> 01:00:22,990 нашиот проблем - е во право тука на оваа линија. 1266 01:00:22,990 --> 01:00:26,410 И тоа е проблем, бидејќи на оваа линија. 1267 01:00:26,410 --> 01:00:31,780 >> Како можеме да се создаде една кутија што е достапен во fread. 1268 01:00:31,780 --> 01:00:31,980 Нели? 1269 01:00:31,980 --> 01:00:35,190 Ние треба да се создаде кутија, која е една бајт голем, со големина на знак. 1270 01:00:35,190 --> 01:00:38,590 Но, ние треба таа кутија за да бидат достапни Кога оваа функција ја извршува. 1271 01:00:38,590 --> 01:00:39,390 Значи, каде што - 1272 01:00:39,390 --> 01:00:39,640 Да. 1273 01:00:39,640 --> 01:00:40,440 Сите идеи? 1274 01:00:40,440 --> 01:00:43,615 >> СТУДЕНТСКИ 60: Само да го постави како било кој случаен карактер. 1275 01:00:43,615 --> 01:00:49,150 1276 01:00:49,150 --> 01:00:51,640 Едноставно направете знак тампон еднаквите ликот. 1277 01:00:51,640 --> 01:00:53,795 А потоа, кога ќе се амортизира таму - 1278 01:00:53,795 --> 01:00:54,110 >> ЈАСОН Hirschhorn: Чекај. 1279 01:00:54,110 --> 01:00:55,110 Знак тампон? 1280 01:00:55,110 --> 01:00:55,880 Па нема ѕвезда? 1281 01:00:55,880 --> 01:00:56,390 >> СТУДЕНТСКИ 60: Да. 1282 01:00:56,390 --> 01:00:58,560 Извадиш ѕвезда. 1283 01:00:58,560 --> 01:01:00,690 Еднакво случаен карактер. 1284 01:01:00,690 --> 01:01:01,460 >> ЈАСОН Hirschhorn: OK. 1285 01:01:01,460 --> 01:01:02,420 Па да ми даде еден. 1286 01:01:02,420 --> 01:01:03,170 >> СТУДЕНТСКИ 60: Како и слично. 1287 01:01:03,170 --> 01:01:06,160 А потоа, кога имаш тампон таму, можете да користите - 1288 01:01:06,160 --> 01:01:06,420 >> СТУДЕНТСКИ 61: Star? 1289 01:01:06,420 --> 01:01:07,650 О, не, на симболот. 1290 01:01:07,650 --> 01:01:09,000 >> СТУДЕНТСКИ 60: Користете го симболот. 1291 01:01:09,000 --> 01:01:09,470 >> ЈАСОН Hirschhorn: OK. 1292 01:01:09,470 --> 01:01:11,320 И она што за во запишување? 1293 01:01:11,320 --> 01:01:14,150 >> СТУДЕНТСКИ 60: Користете го симболот повторно. 1294 01:01:14,150 --> 01:01:14,320 >> ЈАСОН Hirschhorn: Во ред. 1295 01:01:14,320 --> 01:01:20,970 Значи вашата идеја е, ние создаваме знак и стави нешто во него, а потоа 1296 01:01:20,970 --> 01:01:22,612 пишете дека знак. 1297 01:01:22,612 --> 01:01:23,760 >> СТУДЕНТСКИ 60: Да. 1298 01:01:23,760 --> 01:01:25,916 >> ЈАСОН Hirschhorn: Што луѓето мислат дека? 1299 01:01:25,916 --> 01:01:27,770 >> СТУДЕНТСКИ 62: Тоа е згрчена. 1300 01:01:27,770 --> 01:01:28,460 >> ЈАСОН Hirschhorn: OK. 1301 01:01:28,460 --> 01:01:29,760 Ајде да се извлече. 1302 01:01:29,760 --> 01:01:35,720 Значи ова време, ќе одам да се подготви ова во црвено на оџакот тука, а потоа ние 1303 01:01:35,720 --> 01:01:36,410 ќе има - 1304 01:01:36,410 --> 01:01:36,822 ooh! 1305 01:01:36,822 --> 01:01:38,060 Жал. 1306 01:01:38,060 --> 01:01:45,930 Па овој пат имаме нешто што се нарекува тампон, а тоа е на магацинот. 1307 01:01:45,930 --> 01:01:48,430 Точно? 1308 01:01:48,430 --> 01:01:51,520 И ние сме заштеда во него, на почетокот. 1309 01:01:51,520 --> 01:01:53,830 >> Тогаш ние имаме повик за fread. 1310 01:01:53,830 --> 01:02:01,300 Што fread не е потребно бајт од нашите датотека и го става некаде. 1311 01:02:01,300 --> 01:02:04,570 Тоа го става во каква и да е нешто се покажува кон. 1312 01:02:04,570 --> 01:02:09,130 Па, пред да дојде на оваа адреса - 1313 01:02:09,130 --> 01:02:10,250 0x0. 1314 01:02:10,250 --> 01:02:13,349 Сега што адреса имаме? 1315 01:02:13,349 --> 01:02:14,650 >> СТУДЕНТСКИ 63: Што адреса тампон е. 1316 01:02:14,650 --> 01:02:15,970 >> ЈАСОН Hirschhorn: Што адреса тампон е. 1317 01:02:15,970 --> 01:02:22,370 Тоа е веројатно нема да биде нешто слично. 1318 01:02:22,370 --> 01:02:26,950 Веројатно нема да почне со б и Ф, а потоа имаат шест други 1319 01:02:26,950 --> 01:02:27,970 хексадецимални цифри. 1320 01:02:27,970 --> 01:02:28,480 Не е важно. 1321 01:02:28,480 --> 01:02:29,470 Некои адреса. 1322 01:02:29,470 --> 01:02:31,410 И ние сме поминува таа адреса внатре 1323 01:02:31,410 --> 01:02:34,790 >> И ние ќе да се стави една наша бајт нешто на таа адреса. 1324 01:02:34,790 --> 01:02:38,470 Па ние ќе да се стави една наша бајт нешто внатре тука. 1325 01:02:38,470 --> 01:02:40,800 А потоа ние ќе напише од она што е некогаш внатре тука. 1326 01:02:40,800 --> 01:02:43,425 1327 01:02:43,425 --> 01:02:45,380 Дали некој има било какви прашања за тоа? 1328 01:02:45,380 --> 01:02:50,990 1329 01:02:50,990 --> 01:02:54,690 Кој мисли овој код ќе работат? 1330 01:02:54,690 --> 01:02:56,020 >> Кренете рака ако мислите дека овој код ќе работат. 1331 01:02:56,020 --> 01:02:57,270 Ќе мора да заземе став. 1332 01:02:57,270 --> 01:03:00,670 1333 01:03:00,670 --> 01:03:02,500 И кој мисли овој код не ќе работат? 1334 01:03:02,500 --> 01:03:04,610 Кренете рака. 1335 01:03:04,610 --> 01:03:06,750 Сите други треба да биде подигање на нивната рака. 1336 01:03:06,750 --> 01:03:07,670 OK. 1337 01:03:07,670 --> 01:03:09,390 Мајкл, каде си стои? 1338 01:03:09,390 --> 01:03:10,680 >> Мајкл: Не можам да се одлучи. 1339 01:03:10,680 --> 01:03:12,070 Вид на во средината. 1340 01:03:12,070 --> 01:03:12,736 >> ЈАСОН Hirschhorn: Ти си во средината. 1341 01:03:12,736 --> 01:03:13,092 Изберете еден. 1342 01:03:13,092 --> 01:03:14,400 >> MICHAEL: Ќе има вера и велат дека тоа ќе работат. 1343 01:03:14,400 --> 01:03:14,660 >> ЈАСОН Hirschhorn: OK. 1344 01:03:14,660 --> 01:03:16,047 Ќе имаат вера и велат дека тоа функционира? 1345 01:03:16,047 --> 01:03:26,490 1346 01:03:26,490 --> 01:03:27,020 Што се случи? 1347 01:03:27,020 --> 01:03:28,270 >> [Ставање ГЛАСОВИ] 1348 01:03:28,270 --> 01:03:35,170 1349 01:03:35,170 --> 01:03:35,950 >> ЈАСОН Hirschhorn: Не сегмент вина. 1350 01:03:35,950 --> 01:03:40,320 Како можеме да се провери да се види дали две работи се еднакви? 1351 01:03:40,320 --> 01:03:42,060 Додадени фајлови: два се еднакви. 1352 01:03:42,060 --> 01:03:43,300 >> СТУДЕНТСКИ 64: Diff. 1353 01:03:43,300 --> 01:03:45,490 >> ЈАСОН Hirschhorn: Diff. 1354 01:03:45,490 --> 01:03:51,630 Разл проверки за разликите меѓу две датотеки, и ако тоа се враќа 1355 01:03:51,630 --> 01:03:52,890 ништо, тие се идентични. 1356 01:03:52,890 --> 01:03:59,030 И ако ние се отвори, ние го добиваме нашиот датотека. 1357 01:03:59,030 --> 01:04:00,490 Така што беше правилна решение. 1358 01:04:00,490 --> 01:04:01,780 Ајде да се погледне назад во него уште еднаш. 1359 01:04:01,780 --> 01:04:04,080 Ние всушност не се ни треба да се иницијализира. 1360 01:04:04,080 --> 01:04:05,520 >> Тоа веројатно ќе изгледа малку почиста ако не се стави 1361 01:04:05,520 --> 01:04:07,680 нешто случаен таму. 1362 01:04:07,680 --> 01:04:13,070 Поентата е, што ви е потребно да се создаде некои простор за складирање на нешто од 1363 01:04:13,070 --> 01:04:15,530 fread и да преземат нешто од запишување. 1364 01:04:15,530 --> 01:04:18,400 И дека нешто мораше да биде или локалните променлива на магацинот - може 1365 01:04:18,400 --> 01:04:19,890 би можеле да го malloc'd малку простор. 1366 01:04:19,890 --> 01:04:23,030 >> Па ние всушност би можеле да имаат напишано Примерок тука, и 1367 01:04:23,030 --> 01:04:25,420 кои би работеле. 1368 01:04:25,420 --> 01:04:28,660 И тогаш ние би биле чување нашите работи некаде на грамада. 1369 01:04:28,660 --> 01:04:31,940 Но, ова е всушност, веројатно, најелегантен решение. 1370 01:04:31,940 --> 01:04:34,490 Само создаде простор на магацинот за овие работи да се оди. 1371 01:04:34,490 --> 01:04:37,690 1372 01:04:37,690 --> 01:04:38,990 >> Јас ќе имаат две други коментари. 1373 01:04:38,990 --> 01:04:44,650 Ако сте биле да се претвори во ова, и тогаш се постигна за ова, моите коментари 1374 01:04:44,650 --> 01:04:47,400 ќе биде како што следува. 1375 01:04:47,400 --> 01:04:54,300 Овие 1 е тука, за мене, гледам како магија броеви. 1376 01:04:54,300 --> 01:04:56,860 Ова 1, во смисла на fread, има смисла. 1377 01:04:56,860 --> 01:04:59,580 Тоа е бројот на работите да читаат и пишуваат. 1378 01:04:59,580 --> 01:05:03,740 >> Но овој токму тука треба да веројатно да биде нешто друго. 1379 01:05:03,740 --> 01:05:05,180 Значи она што е едно решение? 1380 01:05:05,180 --> 01:05:06,545 >> СТУДЕНТСКИ 65: Големина на бајт. 1381 01:05:06,545 --> 01:05:10,100 1382 01:05:10,100 --> 01:05:11,080 >> ЈАСОН Hirschhorn: Како тоа? 1383 01:05:11,080 --> 01:05:13,130 >> СТУДЕНТСКИ 65: Големина на знак. 1384 01:05:13,130 --> 01:05:13,820 >> ЈАСОН Hirschhorn: Големина на знак. 1385 01:05:13,820 --> 01:05:15,290 Да, бајт не е тип. 1386 01:05:15,290 --> 01:05:16,320 Па големината на знак дела. 1387 01:05:16,320 --> 01:05:30,270 Ние би можеле да имаат, на врвот на нашиот код, # дефинирано тоа. 1388 01:05:30,270 --> 01:05:33,410 Наречен нешто бајт и тоа е навистина знак. 1389 01:05:33,410 --> 01:05:37,675 Всушност, дури и подобар пристап би можело да се ова - 1390 01:05:37,675 --> 01:05:39,391 UINT. 1391 01:05:39,391 --> 01:05:40,780 Некој знае што е ова? 1392 01:05:40,780 --> 01:05:44,388 1393 01:05:44,388 --> 01:05:44,840 >> Жал. 1394 01:05:44,840 --> 01:05:46,090 Го имам наназад. 1395 01:05:46,090 --> 01:05:51,620 1396 01:05:51,620 --> 01:05:52,200 Чекај, бр. 1397 01:05:52,200 --> 01:05:53,450 На кој начин се оди? 1398 01:05:53,450 --> 01:05:58,071 1399 01:05:58,071 --> 01:05:59,660 Некој знае што е ова? 1400 01:05:59,660 --> 01:06:00,950 Да. 1401 01:06:00,950 --> 01:06:05,650 >> СТУДЕНТСКИ 67: Требаше да им помогне на стандардизираат преку системи работи кои 1402 01:06:05,650 --> 01:06:08,760 имаат - како непотпишана цели броеви кои имаат 8 бајти? 1403 01:06:08,760 --> 01:06:11,785 >> ЈАСОН Hirschhorn: Тоа е точно во право. 1404 01:06:11,785 --> 01:06:14,310 На различни машини, големината на ка - 1405 01:06:14,310 --> 01:06:15,180 не обично знак. 1406 01:06:15,180 --> 01:06:16,100 Карактери се обично еден бајт. 1407 01:06:16,100 --> 01:06:19,590 Но големината на други типови на податоци се различни големини на 32-битна машина 1408 01:06:19,590 --> 01:06:21,370 наспроти 64-битна машина. 1409 01:06:21,370 --> 01:06:25,180 А uint8_t е секогаш 8 битови - 1410 01:06:25,180 --> 01:06:27,210 секогаш еден бајт. 1411 01:06:27,210 --> 01:06:29,580 >> И јас треба да се вклучат дека стандард int хедер датотека. 1412 01:06:29,580 --> 01:06:35,040 Па сега, ова ќе имаат веројатно е најдобар начин да се напише овој код. 1413 01:06:35,040 --> 01:06:40,160 1414 01:06:40,160 --> 01:06:41,450 Па јас се ослободи од магијата броеви. 1415 01:06:41,450 --> 01:06:44,690 И јас исто така имаат повеќе логички тип за тампон. 1416 01:06:44,690 --> 01:06:49,450 Тоа не е едноставно знак, тоа е бајт, што е она што ние го очекуваме тоа да биде. 1417 01:06:49,450 --> 01:06:53,400 >> И тука, ние сме всушност се малку поцврсти. 1418 01:06:53,400 --> 01:06:55,190 Ние не сме нарекувајќи знак, кој - 1419 01:06:55,190 --> 01:06:58,630 можеби, кој знае - може да биде различна големината на различни машини. 1420 01:06:58,630 --> 01:07:02,025 Ние сме всушност велејќи дека ова е точно еден бајт, секогаш, без разлика што. 1421 01:07:02,025 --> 01:07:05,810 И ако гледаме тука, ние не правиме ср. 1422 01:07:05,810 --> 01:07:08,340 Ух-ах. 1423 01:07:08,340 --> 01:07:09,590 Што се случи? 1424 01:07:09,590 --> 01:07:14,470 1425 01:07:14,470 --> 01:07:16,170 >> СТУДЕНТСКИ 68: Тоа би можело да биде вклучен. 1426 01:07:16,170 --> 01:07:17,880 >> ЈАСОН Hirschhorn: Што? 1427 01:07:17,880 --> 01:07:19,130 >> СТУДЕНТСКИ 69: Дали е тоа? 1428 01:07:19,130 --> 01:07:21,940 1429 01:07:21,940 --> 01:07:25,080 >> СТУДЕНТСКИ 70: Вие не го дефинира како тип. 1430 01:07:25,080 --> 01:07:28,684 >> СТУДЕНТСКИ 71: Но, тоа треба бидат дефинирани во стандард. 1431 01:07:28,684 --> 01:07:29,934 >> СТУДЕНТСКИ 72: Што се случува? 1432 01:07:29,934 --> 01:07:37,660 1433 01:07:37,660 --> 01:07:40,210 >> СТУДЕНТСКИ 73: треба да се дефинираат бидат сите капи? 1434 01:07:40,210 --> 01:07:41,370 >> ЈАСОН Hirschhorn: Значи тоа не е # define. 1435 01:07:41,370 --> 01:07:45,490 Всушност, во овој случај, јас сум ќе ги користи typedef. 1436 01:07:45,490 --> 01:07:48,590 Затоа што ние го користите како еден вид на едно место. 1437 01:07:48,590 --> 01:07:51,990 Значи во овој случај, ние всушност сакате да го typedef како ние сме печатење на нов тип 1438 01:07:51,990 --> 01:07:54,490 бајт, а тоа е, во суштина, ова. 1439 01:07:54,490 --> 01:07:56,590 Тоа е малку различен од # define. 1440 01:07:56,590 --> 01:08:02,740 >> И сега, нашите кодот работи совршено. 1441 01:08:02,740 --> 01:08:05,230 Значи, повторно, # define зема нешто, го заменува насекаде 1442 01:08:05,230 --> 01:08:06,780 со друга работа. 1443 01:08:06,780 --> 01:08:07,920 Тоа е само на макро - 1444 01:08:07,920 --> 01:08:09,420 стенографија да се ослободи од магијата броеви. 1445 01:08:09,420 --> 01:08:11,360 Но, во овој случај, бидејќи ние сме користејќи го како тип - 1446 01:08:11,360 --> 01:08:12,180 токму тука - 1447 01:08:12,180 --> 01:08:19,880 со цел тоа да работат, ние треба да typedef што бајт е. 1448 01:08:19,880 --> 01:08:21,840 >> И ние сме го дефинираат токму тука. 1449 01:08:21,840 --> 01:08:24,750 Тоа не е struct, тоа е всушност само една непотпишана цел број. 1450 01:08:24,750 --> 01:08:27,680 Тоа е еден бајт долго. 1451 01:08:27,680 --> 01:08:31,910 Овој код ќе бидат достапни на интернет, и сите што треба да го имаат во моментов. 1452 01:08:31,910 --> 01:08:33,830 >> Значи имаме - 1453 01:08:33,830 --> 01:08:34,250 совршен - 1454 01:08:34,250 --> 01:08:41,359 13 минути да се оди над проблемот поставени 5. 1455 01:08:41,359 --> 01:08:44,270 Сакам да прошетка низ copy.c заедно, и тогаш ќе разговараме кратко 1456 01:08:44,270 --> 01:08:47,120 за други делови на проблемот во собата. 1457 01:08:47,120 --> 01:08:48,899 Па да ми се повлече до copy.c. 1458 01:08:48,899 --> 01:09:03,930 1459 01:09:03,930 --> 01:09:08,810 И кул работа е, ние сме всушност веќе напишано многу на овој код. 1460 01:09:08,810 --> 01:09:11,180 >> Кодот ние напиша буквално само излезе од тука, кога бев 1461 01:09:11,180 --> 01:09:13,120 го пишувам овој на моето. 1462 01:09:13,120 --> 01:09:16,990 Но, ова е copy.c, темел за првите два дела на 1463 01:09:16,990 --> 01:09:22,340 проблемот во собата за whodunit.c, која вие треба да напишете и resize.c. 1464 01:09:22,340 --> 01:09:27,050 Recover.c, кое е трет и последен дел од проблемот во собата, не е 1465 01:09:27,050 --> 01:09:29,529 базирана на оваа датотека. 1466 01:09:29,529 --> 01:09:32,200 >> Сте ќе треба да се напише дека датотека, ќе ви даде дефиниција за тоа 1467 01:09:32,200 --> 01:09:34,620 датотеки, но тоа нема никаква да се направи со copy.c. 1468 01:09:34,620 --> 01:09:38,675 Но, бидејќи copy.c е основа за првите два дела, ние ќе 1469 01:09:38,675 --> 01:09:42,000 да одиме низ него сега, па имате добра смисла на она што го прави. 1470 01:09:42,000 --> 01:09:43,640 >> И коментарите даде некои од нив далеку. 1471 01:09:43,640 --> 01:09:45,120 Ние веќе напишано некои од ова. 1472 01:09:45,120 --> 01:09:49,220 Прво, ние сме си сигурен ние се три аргументи. 1473 01:09:49,220 --> 01:09:50,560 Следниот, ние сме сеќавајќи се на име на датотека. 1474 01:09:50,560 --> 01:09:52,960 Па ние прескокнат овој чекор кога ние кодирани нашата работа - 1475 01:09:52,960 --> 01:09:54,700 кога нашите ср. 1476 01:09:54,700 --> 01:09:56,750 Но тука, тие се прави тоа е малку почист. 1477 01:09:56,750 --> 01:09:59,350 >> Тие се проверуваат за да бидете сигурни и двете датотеки се добри, во 1478 01:09:59,350 --> 01:10:00,450 Покрај отворањето на нив. 1479 01:10:00,450 --> 01:10:04,760 Ние напиша сите го овој код само сега, па јас сум нема да се задржиме на овој код. 1480 01:10:04,760 --> 01:10:09,670 Следна е некои работи кои се специфични за типови на датотеки што го користите, кои 1481 01:10:09,670 --> 01:10:12,240 се битмапа датотеки. 1482 01:10:12,240 --> 01:10:15,660 Bitmap датотеки имаат некои метаподатоци поврзани со нив. 1483 01:10:15,660 --> 01:10:20,190 >> Па првите неколку бајти ви кажам за датотека. 1484 01:10:20,190 --> 01:10:23,460 Тие не се боите на пиксел во таа слика. 1485 01:10:23,460 --> 01:10:25,120 Тие ви кажам за датотека. 1486 01:10:25,120 --> 01:10:28,220 И ако го прочитате преку проблемот собата, ќе имаат многу повеќе информации 1487 01:10:28,220 --> 01:10:33,100 на она што видови на метаподатоци структури се вклучени со bitmaps. 1488 01:10:33,100 --> 01:10:39,350 >> Но, тоа е причината зошто имаме оваа прва во собата на - овој код овде. 1489 01:10:39,350 --> 01:10:42,490 Ние сме читање на метаподатоци - 1490 01:10:42,490 --> 01:10:45,800 две парчиња на метаподатоци - датотека насловот и инфо заглавието. 1491 01:10:45,800 --> 01:10:51,030 И ние сме проверка на некои делови од неа да бидете сигурни дека тоа е вистина bitmap датотека 1492 01:10:51,030 --> 01:10:52,420 пред да продолжите. 1493 01:10:52,420 --> 01:10:55,470 >> И повторно, овие се детали што не треба да одат во моментов. 1494 01:10:55,470 --> 01:10:57,720 Ако се чита преку проблемот собата, ќе се разбере овие. 1495 01:10:57,720 --> 01:11:01,370 Скратам приказната, овие се само велејќи, ова е една bitmap датотека, и 1496 01:11:01,370 --> 01:11:02,810 се потврдува дека. 1497 01:11:02,810 --> 01:11:05,180 >> Следниот, ние си пишува оние на из датотека. 1498 01:11:05,180 --> 01:11:05,660 Гледаме дека овде. 1499 01:11:05,660 --> 01:11:06,910 Ние сме писмена форма до надвор покажувач. 1500 01:11:06,910 --> 01:11:09,260 1501 01:11:09,260 --> 01:11:11,320 Следниот, ние сме утврдување баласт. 1502 01:11:11,320 --> 01:11:15,240 Значи, повторно, како што е посебност со битмапа датотеки, некои линии вклучуваат 1503 01:11:15,240 --> 01:11:16,840 баласт на крајот. 1504 01:11:16,840 --> 01:11:19,000 И ако го прочитате преку проблемот собата, ќе дознаете повеќе за баласт. 1505 01:11:19,000 --> 01:11:22,330 Ова е формула за да се најде баласт. 1506 01:11:22,330 --> 01:11:23,610 >> Важно е да се запамети - 1507 01:11:23,610 --> 01:11:29,720 кога ќе го смените големината на битмапа датотека, баласт промени. 1508 01:11:29,720 --> 01:11:31,970 Кога ќе го смените големината на датотека, баласт промени. 1509 01:11:31,970 --> 01:11:34,310 Тоа никогаш не се случува да биде поголема од 3 - 1510 01:11:34,310 --> 01:11:36,510 тоа ќе биде од 0 до 3, инклузивна. 1511 01:11:36,510 --> 01:11:38,930 Но, кога ќе го смените големината на нешто, Соочи промени. 1512 01:11:38,930 --> 01:11:47,100 >> Ако јас само еден пиксел во тој ред, јас треба три бајти на баласт, бидејќи 1513 01:11:47,100 --> 01:11:51,190 секој ред мора да биде множители на четири бајти долго во битмапа датотеки. 1514 01:11:51,190 --> 01:11:56,120 Но, ако јас го удвои, да одат од еден пиксел две точки, од кои секој од нив, 1515 01:11:56,120 --> 01:11:59,510 да речеме, е бајт, тогаш јас треба два бајти на баласт да се направи 1516 01:11:59,510 --> 01:12:00,970 дека еднаква на четири. 1517 01:12:00,970 --> 01:12:04,200 >> Па кога ќе се промени големината на нешто, Јас треба да се промени висината 1518 01:12:04,200 --> 01:12:06,551 на баласт што го имам. 1519 01:12:06,551 --> 01:12:08,100 Дали тоа има смисла на сите? 1520 01:12:08,100 --> 01:12:12,020 1521 01:12:12,020 --> 01:12:18,720 Следниот, ние iterate преку секој ред, или преку сите редови. 1522 01:12:18,720 --> 01:12:21,400 А потоа ние iterate преку секоја колона во секој ред. 1523 01:12:21,400 --> 01:12:25,330 Ние сме лекување на оваа битмапа како мрежа, како ние сме третирани 1524 01:12:25,330 --> 01:12:26,490 одборот во 15. 1525 01:12:26,490 --> 01:12:29,200 >> Како што се третира тули кога ние ги печатени на екранот. 1526 01:12:29,200 --> 01:12:31,350 А мрежа на редови и колони. 1527 01:12:31,350 --> 01:12:32,350 Тогаш - ние го виде тоа. 1528 01:12:32,350 --> 01:12:33,840 Ние, всушност, само кодирани ова. 1529 01:12:33,840 --> 01:12:35,780 Ние направивме некои привремено чување. 1530 01:12:35,780 --> 01:12:38,710 Читаме во таму, а потоа ние го напише. 1531 01:12:38,710 --> 01:12:42,680 Ова е токму она што го направија. 1532 01:12:42,680 --> 01:12:46,760 >> Следно, затоа реков секоја линија завршува во некои баласт, ние 1533 01:12:46,760 --> 01:12:48,260 прескокнете во текот на овој баласт - 1534 01:12:48,260 --> 01:12:51,000 старите баласт. 1535 01:12:51,000 --> 01:12:52,630 И тогаш ние го додадете назад. 1536 01:12:52,630 --> 01:12:55,140 Во овој случај, ние сме создавање исто точно датотека. 1537 01:12:55,140 --> 01:12:56,180 Ние сме само тоа копирање. 1538 01:12:56,180 --> 01:12:57,700 Па оваа линија е вид на глупо. 1539 01:12:57,700 --> 01:12:59,660 Би можеле буквално само стави Соочи внатре 1540 01:12:59,660 --> 01:13:04,290 >> Но, ако се промени големината на датотеката, Дали се уште сакате оваа линија? 1541 01:13:04,290 --> 01:13:08,510 1542 01:13:08,510 --> 01:13:11,560 Значи, ако ние промена на големината на датотеката, ние се уште сакате да ја прескокнете 1543 01:13:11,560 --> 01:13:12,810 во однос на стариот баласт? 1544 01:13:12,810 --> 01:13:15,170 1545 01:13:15,170 --> 01:13:15,970 >> СТУДЕНТСКИ 74: Да. 1546 01:13:15,970 --> 01:13:17,090 >> ЈАСОН Hirschhorn: Значи правиме. 1547 01:13:17,090 --> 01:13:19,290 Бидејќи ова, повторно, се занимава со изворна датотека. 1548 01:13:19,290 --> 01:13:21,570 Ние не се грижат за баласт од изворната датотека. 1549 01:13:21,570 --> 01:13:23,410 Ние сакаме да одиме до следната линија. 1550 01:13:23,410 --> 01:13:28,850 Но, ние не едноставно кажано назад стариот износот на баласт. 1551 01:13:28,850 --> 01:13:31,540 Ние треба да се вратат на нови износот на баласт. 1552 01:13:31,540 --> 01:13:35,810 >> Значи, кога ние сме менување на големина на датотека, ние се уште сакате да го прескокнете во текот на 1553 01:13:35,810 --> 01:13:38,270 Соочи во старата датотека - што ние читаш од. 1554 01:13:38,270 --> 01:13:40,370 Но, она што ние сме пишување да, ние ќе да треба да се стави назад некои различни 1555 01:13:40,370 --> 01:13:41,890 број на баласт кој ние сме утврди. 1556 01:13:41,890 --> 01:13:42,780 Да. 1557 01:13:42,780 --> 01:13:44,550 >> СТУДЕНТСКИ 75: Редоследот на овие две линии не е важно, нели? 1558 01:13:44,550 --> 01:13:46,160 Затоа што ти си ракување различни датотеки. 1559 01:13:46,160 --> 01:13:46,620 >> ЈАСОН Hirschhorn: Токму така. 1560 01:13:46,620 --> 01:13:48,220 Редоследот на овие две линии не е важно. 1561 01:13:48,220 --> 01:13:49,790 Ние пишуваме оваа линија. 1562 01:13:49,790 --> 01:13:51,430 Ова е тука за датотеката ние сме пишување да. 1563 01:13:51,430 --> 01:13:54,370 Тоа е важно, па ќе го добиеме точниот износ на баласт. 1564 01:13:54,370 --> 01:13:57,560 Ова мора да се справи со во датотека. 1565 01:13:57,560 --> 01:13:58,560 Ние сакаме да ја прескокнете право во текот на баласт. 1566 01:13:58,560 --> 01:13:59,470 >> Ние не сакаме да ги читаме - 1567 01:13:59,470 --> 01:14:01,500 ако ние сме читање на бајт во еден момент, ние не се грижи за оние баласт бајти. 1568 01:14:01,500 --> 01:14:04,070 Ние сакаме да се преселат на следната линија. 1569 01:14:04,070 --> 01:14:11,800 Конечно исто како Луси даде за нас, ние затвори датотеки и враќање 0. 1570 01:14:11,800 --> 01:14:13,890 Значи ова е copy.c. 1571 01:14:13,890 --> 01:14:17,850 А ние всушност напиша - ние поминал поголемиот дел од делот пишувам ова, во суштина. 1572 01:14:17,850 --> 01:14:18,740 >> Сте го направиле ова. 1573 01:14:18,740 --> 01:14:22,440 Па се надевам дека ќе имаат добра смисла на она што се случува овде. 1574 01:14:22,440 --> 01:14:25,890 Голема разлика, искрено, е само овој прв дел, кој се занимава со 1575 01:14:25,890 --> 01:14:29,970 особености на битмапа датотеки. 1576 01:14:29,970 --> 01:14:33,570 Па морам како мојата следна слајд, она што ние треба да направам? 1577 01:14:33,570 --> 01:14:35,510 Добро, ајде да размислиме за whodunit. 1578 01:14:35,510 --> 01:14:38,080 >> И за некој кој чита преку проблемот постави, што ние 1579 01:14:38,080 --> 01:14:41,410 треба да се направи во whodunit? 1580 01:14:41,410 --> 01:14:42,080 Едноставно. 1581 01:14:42,080 --> 01:14:42,460 Aleja. 1582 01:14:42,460 --> 01:14:48,570 >> Aleja: Можете ли да го извадиш дел на секој пиксел што означува црвено. 1583 01:14:48,570 --> 01:14:49,730 А потоа - 1584 01:14:49,730 --> 01:14:50,730 вид на? 1585 01:14:50,730 --> 01:14:51,860 >> ЈАСОН Hirschhorn: OK. 1586 01:14:51,860 --> 01:14:54,460 Па извади од страна на секој пиксели, што означува црвено. 1587 01:14:54,460 --> 01:14:57,234 Тоа е блиску, но не сите од неа. 1588 01:14:57,234 --> 01:14:59,780 >> СТУДЕНТСКИ 76: Па, има различни начини да го стори тоа. 1589 01:14:59,780 --> 01:14:59,870 >> ЈАСОН Hirschhorn: OK. 1590 01:14:59,870 --> 01:15:03,070 Дај ми еден начин. 1591 01:15:03,070 --> 01:15:08,240 >> СТУДЕНТСКИ 76: Земете сите црвени, и тогаш нагласи сина и зелена боја. 1592 01:15:08,240 --> 01:15:10,010 >> ЈАСОН Hirschhorn: OK. 1593 01:15:10,010 --> 01:15:11,830 Па со оглед двете овие начини - 1594 01:15:11,830 --> 01:15:15,210 тоа звучи како ние го даде пиксели, таа има црвена, сина и зелена ниво. 1595 01:15:15,210 --> 01:15:19,350 Ние сакаме да се промени релативните нивоа на црвена, сина и зелена, во зависност 1596 01:15:19,350 --> 01:15:20,740 на тој пиксел. 1597 01:15:20,740 --> 01:15:28,380 Каде во овој код треба да ги менуваме релативната црвена, сина и зелена 1598 01:15:28,380 --> 01:15:29,720 нивоа на даден пиксели. 1599 01:15:29,720 --> 01:15:30,600 По што сме го прочита - 1600 01:15:30,600 --> 01:15:32,520 пред да го напише? 1601 01:15:32,520 --> 01:15:34,564 Дај ми го бројот на линијата. 1602 01:15:34,564 --> 01:15:35,950 >> ПОВЕЌЕ СТУДЕНТИ: 83. 1603 01:15:35,950 --> 01:15:37,320 >> ЈАСОН Hirschhorn: 83. 1604 01:15:37,320 --> 01:15:38,570 Значи, токму тука. 1605 01:15:38,570 --> 01:15:40,830 1606 01:15:40,830 --> 01:15:45,710 За whodunit, кодот што треба да Напиши сите треба да одат право таму. 1607 01:15:45,710 --> 01:15:47,640 И тоа е само код што треба да се напише. 1608 01:15:47,640 --> 01:15:51,520 Затоа што, како што слушнавме, сите што треба да направите е да ги промените овие роднина сина, 1609 01:15:51,520 --> 01:15:54,420 црвени и зелени нивоа од секој пиксел. 1610 01:15:54,420 --> 01:15:58,250 >> Сте го прочитате во, и сега сте ќе го напише. 1611 01:15:58,250 --> 01:16:03,100 Како можам да добијам - ако имам тоа нешто наречен трокреветни, токму тука, а тоа е на 1612 01:16:03,100 --> 01:16:04,570 тип RGBTRIPLE - 1613 01:16:04,570 --> 01:16:08,650 добро, ако се погледна во bmp.h, она што е RGBTRIPLE? 1614 01:16:08,650 --> 01:16:11,450 1615 01:16:11,450 --> 01:16:12,700 >> СТУДЕНТСКИ 77: Тоа е struct. 1616 01:16:12,700 --> 01:16:17,440 1617 01:16:17,440 --> 01:16:18,900 >> ЈАСОН Hirschhorn: RGBTRIPLE е struct. 1618 01:16:18,900 --> 01:16:22,330 Можеме да видиме дека вистинскиот овде долу. 1619 01:16:22,330 --> 01:16:26,600 И така, ако сакав да пристап, да речеме, црвени ниво на struct, како можам да 1620 01:16:26,600 --> 01:16:30,005 пристап до црвениот ниво на оваа struct? 1621 01:16:30,005 --> 01:16:37,280 >> [КЛАСА шумови] 1622 01:16:37,280 --> 01:16:38,530 >> СТУДЕНТСКИ 78: RGBTRIPLE.rgbtred? 1623 01:16:38,530 --> 01:16:47,250 1624 01:16:47,250 --> 01:16:48,856 >> ЈАСОН Hirschhorn: Дали е тоа точно? 1625 01:16:48,856 --> 01:16:53,040 >> СТУДЕНТСКИ 79: Тоа треба да биде тројно точка, наместо RGBTRIPLE точка? 1626 01:16:53,040 --> 01:16:54,120 >> ЈАСОН Hirschhorn: Трипл. 1627 01:16:54,120 --> 01:16:56,700 Трокреветни е локална променлива, па тука, нема совети тука. 1628 01:16:56,700 --> 01:16:58,400 Па ние само користење на точка нотација. 1629 01:16:58,400 --> 01:17:00,480 Ова ќе ми даде нивото на црвено. 1630 01:17:00,480 --> 01:17:06,180 Ако сакам да го промени, јас само го поставите тоа еднаква на нешто различно. 1631 01:17:06,180 --> 01:17:13,190 Па уште еднаш, оваа линија код пристапи оваа променлива во овој struct, и 1632 01:17:13,190 --> 01:17:15,070 можеме да го поставите на нешто ново. 1633 01:17:15,070 --> 01:17:20,040 >> Значи за whodunit, повторно, ова е, Во суштина, она што ние треба да направите. 1634 01:17:20,040 --> 01:17:21,170 Многу едноставна. 1635 01:17:21,170 --> 01:17:25,020 Само промена на некои релативните нивоа, и ова е местото каде што кодот оди. 1636 01:17:25,020 --> 01:17:27,720 Големината, од друга страна, е малку сложени да ја формира. 1637 01:17:27,720 --> 01:17:30,900 Всушност, големината е веројатно trickiest дел од овој проблем во собата. 1638 01:17:30,900 --> 01:17:32,720 Имаме три минути за да одат преку него. 1639 01:17:32,720 --> 01:17:34,910 >> Но, повторно, ние сме веќе напишано повеќето од овој законик, за да можеме 1640 01:17:34,910 --> 01:17:36,500 треба да биде прилично познато. 1641 01:17:36,500 --> 01:17:40,750 Кои се некои работи што сакате да го направите во ширина, ако сте ја прочитате во текот на 1642 01:17:40,750 --> 01:17:43,470 проблем во собата? 1643 01:17:43,470 --> 01:17:45,290 Ако им даде на мене, ние може да се зборува за нив. 1644 01:17:45,290 --> 01:17:47,340 Кои се некои работи што сакате да го направите? 1645 01:17:47,340 --> 01:17:47,970 >> СТУДЕНТСКИ 80: Вертикално - 1646 01:17:47,970 --> 01:17:52,360 па мора да се хоризонтално ја промени големината, но вертикално се промени големината, како? 1647 01:17:52,360 --> 01:17:58,475 >> ЈАСОН Hirschhorn: Значи, ако ние си даде пиксели, и ние сакаме да се промени големината со 1648 01:17:58,475 --> 01:18:03,460 фактор два, сега треба да биде променета хоризонтално и променета 1649 01:18:03,460 --> 01:18:05,220 вертикално. 1650 01:18:05,220 --> 01:18:06,640 Дали тоа има смисла? 1651 01:18:06,640 --> 01:18:07,060 Да. 1652 01:18:07,060 --> 01:18:09,300 Така што е веројатно Најголемиот предизвик. 1653 01:18:09,300 --> 01:18:10,430 И ние ќе зборуваме за тоа во секунди. 1654 01:18:10,430 --> 01:18:11,065 Да. 1655 01:18:11,065 --> 01:18:15,270 >> СТУДЕНТСКИ 81: Начинот на кој јас мислев на тоа беше што ви е потребно да се печати ја надвор - 1656 01:18:15,270 --> 01:18:15,490 >> ЈАСОН Hirschhorn: Чекај. 1657 01:18:15,490 --> 01:18:17,580 Не ни кажете што направи. 1658 01:18:17,580 --> 01:18:20,620 Ние ќе зборуваме во логиката. 1659 01:18:20,620 --> 01:18:21,870 >> СТУДЕНТСКИ 81: OK. 1660 01:18:21,870 --> 01:18:25,090 1661 01:18:25,090 --> 01:18:27,410 Она што беше прашањето? 1662 01:18:27,410 --> 01:18:28,892 >> ЈАСОН Hirschhorn: Вие само покрена својата рака. 1663 01:18:28,892 --> 01:18:31,600 Немаше прашање. 1664 01:18:31,600 --> 01:18:32,520 Дозволете ми да го претстави. 1665 01:18:32,520 --> 01:18:34,560 Дозволете ми да разговараат за ова кратко. 1666 01:18:34,560 --> 01:18:38,400 Значи имаме еден пиксел, ние сакаме да реплицираат тоа, и хоризонтално и 1667 01:18:38,400 --> 01:18:39,360 вертикално. 1668 01:18:39,360 --> 01:18:48,920 Значи идеално она што го правиме тука е, ние ја прочита во нашите пиксели, ние ја напише 1669 01:18:48,920 --> 01:18:51,690 меѓутоа многу пати. 1670 01:18:51,690 --> 01:18:54,720 >> Но, тогаш ние имаме трик тука, затоа што тогаш ние сакаме да го прескокнете 1671 01:18:54,720 --> 01:18:57,660 следната линија и напишете го на на почетокот на следната линија. 1672 01:18:57,660 --> 01:19:02,960 Значи, ако сакаме да се реплицираат и двете хоризонтално и вертикално, она што е 1673 01:19:02,960 --> 01:19:05,050 Еден добар начин да го стори тоа - 1674 01:19:05,050 --> 01:19:06,780 една добра иако да го направите тоа? 1675 01:19:06,780 --> 01:19:11,950 Значи ние не треба постојано да се трага околу нашата датотека да поставите работите. 1676 01:19:11,950 --> 01:19:14,360 >> Тоа прашање не може да има има смисла, но мислам дека на 1677 01:19:14,360 --> 01:19:15,800 одговори на тоа ќе ви помогне. 1678 01:19:15,800 --> 01:19:17,210 >> СТУДЕНТСКИ 82: Направете низа? 1679 01:19:17,210 --> 01:19:20,090 >> ЈАСОН Hirschhorn: Значи ајде да размислиме на секоја датотека како ред. 1680 01:19:20,090 --> 01:19:22,550 Ајде да размислуваат во смисла на редови. 1681 01:19:22,550 --> 01:19:26,670 Ако имаме нашиот прв ред од нашата мала слика, можеме да направиме тој ред 1682 01:19:26,670 --> 01:19:30,640 во голем ред, од голема слика, а потоа се реплицираат дека спорот сепак 1683 01:19:30,640 --> 01:19:34,250 многу пати треба да се повтори, наместо да оди пиксел од пиксел, 1684 01:19:34,250 --> 01:19:37,260 кој добива збунувачки, кога справување со датотеки. 1685 01:19:37,260 --> 01:19:38,730 >> Затоа што ако ние требаше - 1686 01:19:38,730 --> 01:19:41,260 Јас сум истекува на просторот. 1687 01:19:41,260 --> 01:19:46,490 Ако ова е нашиот датотека, и ние имаме дека еден пиксел таму, и ние сакаме да го стави 1688 01:19:46,490 --> 01:19:49,840 право таму, имаме уште некои работи кои треба да одат таму, кога сме 1689 01:19:49,840 --> 01:19:51,450 пишување и создавање на нашата нова датотека - 1690 01:19:51,450 --> 01:19:53,250 нашите датотека која е двапати поголема. 1691 01:19:53,250 --> 01:19:56,820 >> Но тоа е навистина тешко со датотека функции за да го прескокнете околу да се нови линии 1692 01:19:56,820 --> 01:20:00,260 како што, а потоа се врати тука и се стави работите во таму. 1693 01:20:00,260 --> 01:20:04,500 Тоа е речиси невозможно да се направи нешто како што, ако тоа го прави смисла. 1694 01:20:04,500 --> 01:20:10,180 Значи, ако мислиме дека во однос на редови, може да се преземе нашата ред, а потоа и го стави - 1695 01:20:10,180 --> 01:20:11,720 реплицираат редови вертикално. 1696 01:20:11,720 --> 01:20:15,860 >> И тоа како ќе се справи со промена на големината вертикално наместо хоризонтално. 1697 01:20:15,860 --> 01:20:18,810 Тоа беше вид на брз и малку збунувачки. 1698 01:20:18,810 --> 01:20:22,375 За жал нашето време е горе. 1699 01:20:22,375 --> 01:20:27,340 Јас ќе стојат надвор за оние од вас тука кои имаат прашања во врска со 1700 01:20:27,340 --> 01:20:30,500 проблем во собата, вклучувајќи опорави. 1701 01:20:30,500 --> 01:20:32,320 >> Па ајде да го одложи за сега. 1702 01:20:32,320 --> 01:20:34,480 И повторно, ако имате било какви прашања, ние може да разговарате надвор. 1703 01:20:34,480 --> 01:20:38,294