1 00:00:00,000 --> 00:00:07,810 2 00:00:07,810 --> 00:00:09,840 >> JASON Hirschhorn: Welcome, semua orang, untuk Minggu 6. 3 00:00:09,840 --> 00:00:14,790 Saya gembira melihat anda semua hidup dan sihat selepas Kuiz 0, kerana saya tahu bahawa 4 00:00:14,790 --> 00:00:15,810 agak kasar. 5 00:00:15,810 --> 00:00:18,370 Tetapi bersyukur, anda semua lakukan amat baik. 6 00:00:18,370 --> 00:00:21,680 Dan sebagainya yang indah. 7 00:00:21,680 --> 00:00:25,840 Jika anda dalam seksyen saya, saya telah diberikan paling anda menyokong kuiz anda sudah. 8 00:00:25,840 --> 00:00:28,050 >> Beberapa anda, saya bertemu selepas kelas. 9 00:00:28,050 --> 00:00:32,360 Dan jika anda seorang pelajar lanjutan dan anda tidak menerima kuiz anda kembali 10 00:00:32,360 --> 00:00:35,490 lagi, TF anda mungkin bekerja di atasnya dan penggredan, dan akan mendapat kembali 11 00:00:35,490 --> 00:00:36,490 kepada anda tidak lama lagi. 12 00:00:36,490 --> 00:00:39,650 Jadi pelajar lanjutan saya yang menonton sekarang - mudah-mudahan hidup - 13 00:00:39,650 --> 00:00:42,880 Saya akan mendapat kuiz anda lama juga. 14 00:00:42,880 --> 00:00:45,670 >> Agenda kita untuk hari ini adalah seperti berikut. 15 00:00:45,670 --> 00:00:50,170 Pertama, kita akan pergi ke beberapa sumber-sumber yang CS50 menyediakan kepada anda. 16 00:00:50,170 --> 00:00:54,590 Kami akan pergi ke Kuiz 0 akan datang, dan Saya akan menjawab apa-apa soalan sesiapa 17 00:00:54,590 --> 00:00:57,360 mempunyai kira-kira masalah tertentu. 18 00:00:57,360 --> 00:01:02,050 Dan kemudian, kita akan pergi ke atas fail I / O dan masalah menetapkan 5. 19 00:01:02,050 --> 00:01:07,360 Kedua-dua topik terakhir akan mengambil membentuk sebahagian besar bahagian hari ini. 20 00:01:07,360 --> 00:01:11,680 >> Saya meletakkan senarai ini setiap minggu sebagai peringatan kepada anda semua, tetapi teras 21 00:01:11,680 --> 00:01:14,650 seksyen, kami hanya mempunyai 90 minit - kita tidak mampu untuk menampung semua yang saya 22 00:01:14,650 --> 00:01:16,280 akan suka untuk menampung untuk anda semua. 23 00:01:16,280 --> 00:01:21,170 Tetapi kita mempunyai satu tan sumber untuk anda untuk menarik apabila anda mengenali 24 00:01:21,170 --> 00:01:24,000 bahan dan kerja melalui masalah anda menetapkan. 25 00:01:24,000 --> 00:01:30,810 >> Satu peringatan bahawa saya mempunyai talian teks kotak, ditubuhkan bagi anda untuk mengisi jika anda 26 00:01:30,810 --> 00:01:33,250 ada sebarang maklumbalas bagi saya, kedua-dua positif dan 27 00:01:33,250 --> 00:01:35,180 membina, kira-kira bahagian. 28 00:01:35,180 --> 00:01:38,600 URL yang terletak betul-betul di sini. 29 00:01:38,600 --> 00:01:43,250 Oleh itu, sila, mengambil masa jika anda mempunyai sebarang maklum balas, sama ada dalam seksyen, 30 00:01:43,250 --> 00:01:48,030 atau selepas, atau selepas anda menonton video dalam talian, untuk memberikan maklum balas anda. 31 00:01:48,030 --> 00:01:52,100 Saya benar-benar menghargai apa-apa dan semua itu. 32 00:01:52,100 --> 00:01:55,730 >> Jadi saya telah mempunyai perbualan kecil dengan banyak saya 33 00:01:55,730 --> 00:01:59,350 pelajar sepanjang minggu - seperti yang saya menyerahkan kembali kuiz, bercakap tentang 34 00:01:59,350 --> 00:02:01,480 Sudah tentu, melihat bagaimana anda lakukan. 35 00:02:01,480 --> 00:02:05,120 Dan satu tema telah datang lebih dan lebih dalam bercakap tentang - dalam 36 00:02:05,120 --> 00:02:05,660 tertentu - 37 00:02:05,660 --> 00:02:07,710 masalah menetapkan. 38 00:02:07,710 --> 00:02:13,090 Dan saya telah terkandung tema yang di papan sekarang. 39 00:02:13,090 --> 00:02:16,630 >> Sebenarnya, terdapat perbezaan antara perubahan dalam sesuatu yang 40 00:02:16,630 --> 00:02:19,590 dilakukan dengan betul dan sesuatu yang dilakukan dengan baik. 41 00:02:19,590 --> 00:02:22,920 Kebanyakan orang telah melakukan hebat dari segi kebenaran - 42 00:02:22,920 --> 00:02:25,460 5 atau 4 pada semua psets. 43 00:02:25,460 --> 00:02:27,930 Kebanyakan orang mendapat mereka setiap masa. 44 00:02:27,930 --> 00:02:31,150 >> Walau bagaimanapun, hanya kerana anda telah melakukan sesuatu yang betul tidak bermakna anda telah 45 00:02:31,150 --> 00:02:34,450 dilakukan sesuatu yang elegan, atau cekap, atau sebagai bersih kerana anda 46 00:02:34,450 --> 00:02:35,270 boleh melakukannya. 47 00:02:35,270 --> 00:02:36,790 Dan itulah yang reka bentuk - 48 00:02:36,790 --> 00:02:39,230 dan ke tahap yang lebih kecil, gaya - 49 00:02:39,230 --> 00:02:40,450 paksi adalah untuk. 50 00:02:40,450 --> 00:02:45,130 Oleh itu, saya menggesa anda semua, dan TFS lain menolak anda semua, bukan sahaja untuk seterusnya 51 00:02:45,130 --> 00:02:48,320 dalam perkara-perkara yang betul, tetapi berpaling dalam perkara-perkara yang berkod juga. 52 00:02:48,320 --> 00:02:53,060 >> Jika tidak berbuat yang tidak perlu UNTUK gelung, tidak perhitungan kembali pembolehubah jika 53 00:02:53,060 --> 00:02:53,800 anda tidak perlu. 54 00:02:53,800 --> 00:02:58,520 Sebagai contoh, melihat ke belakang kepada masalah yang dinyatakan 4, apabila meletakkan batu bata di 55 00:02:58,520 --> 00:03:03,070 skrin, setiap baris - setiap bata dalam berturut-turut diberikan mempunyai yang sama y-menyelaras - 56 00:03:03,070 --> 00:03:04,390 ketinggian yang sama menyelaras. 57 00:03:04,390 --> 00:03:07,930 >> Supaya y-menyelaras tidak perlu dikira di dalam kawasan pedalaman 58 00:03:07,930 --> 00:03:11,070 bersarang UNTUK gelung yang anda mungkin digunakan untuk meletakkan mereka bata pada skrin. 59 00:03:11,070 --> 00:03:14,030 Ia hanya perlu dikira setiap kali anda dihidupkan berturut-turut, atau 60 00:03:14,030 --> 00:03:15,200 bergerak turun berturut-turut. 61 00:03:15,200 --> 00:03:19,760 Jadi mengatakan jika terdapat 10 batu bata dalam berturut-turut, setiap bata boleh mempunyai yang sama 62 00:03:19,760 --> 00:03:22,260 y-menyelaras, dan yang y-menyelaras hanya boleh dikira 63 00:03:22,260 --> 00:03:23,550 sekali untuk semua orang-orang. 64 00:03:23,550 --> 00:03:27,810 >> Ia tidak perlu dikira 10 kali, juga tidak yang memerlukan pengiraan 65 00:03:27,810 --> 00:03:30,220 berlaku dalam sebenar fungsi panggilan - 66 00:03:30,220 --> 00:03:33,020 panggilan fungsi gracked baru. 67 00:03:33,020 --> 00:03:37,820 Jadi jika itu adalah sedikit mengelirukan bagi anda, lebih umum, perkara-perkara yang 68 00:03:37,820 --> 00:03:40,730 tidak perlu berlaku setiap kali tunggal anda pergi melalui gelung UNTUK tidak boleh 69 00:03:40,730 --> 00:03:42,900 diletakkan di dalam gelung UNTUK, dan tidak harus berlaku setiap kali anda pergi 70 00:03:42,900 --> 00:03:44,080 melalui gelung UNTUK ini. 71 00:03:44,080 --> 00:03:49,270 >> Satu lagi contoh reka bentuk yang baik yang kita lihat dalam Minggu 3 selama 15, anda boleh menyimpan 72 00:03:49,270 --> 00:03:50,500 menjejaki sifar. 73 00:03:50,500 --> 00:03:53,600 Oleh itu, apabila anda memulakan lembaga, anda menyelamatkan - dalam pembolehubah global, mungkin - 74 00:03:53,600 --> 00:03:56,140 x dan y-koordinat sifar. 75 00:03:56,140 --> 00:03:57,520 Dan kemudian bila-bila masa anda - 76 00:03:57,520 --> 00:04:00,310 dalam fungsi langkah anda, setiap kali anda membuat langkah yang berjaya, anda mengemas kini 77 00:04:00,310 --> 00:04:02,040 lokasi sifar. 78 00:04:02,040 --> 00:04:06,240 >> Yang akan menyelamatkan anda daripada perlu melakukan bersarang UNTUK gelung untuk melihat melalui 79 00:04:06,240 --> 00:04:10,700 menaiki setiap kali dalam fungsi langkah anda dan mencari sifar, atau mencari jubin, 80 00:04:10,700 --> 00:04:12,460 dan kemudian menyemak apa yang akan datang kepadanya. 81 00:04:12,460 --> 00:04:16,329 Sebaliknya, anda perlu lokasi sifar, anda hanya boleh melihat di atas, di bawah, 82 00:04:16,329 --> 00:04:21,160 dan ke kiri dan kanan, untuk mencari jubin yang anda cari. 83 00:04:21,160 --> 00:04:24,970 >> Jadi dari segi program-program kami menulis, mereka tidak pernah cukup besar 84 00:04:24,970 --> 00:04:28,580 bahawa sesetengah keputusan rekabentuk benar-benar akan menghalang anda 85 00:04:28,580 --> 00:04:31,670 program, atau membuat ia berjalan lebih perlahan, atau mungkin juga kehabisan memori. 86 00:04:31,670 --> 00:04:35,030 Tetapi kita masih menolak anda semua untuk menulis sebagai elegan dan 87 00:04:35,030 --> 00:04:36,450 kod cekap yang mungkin. 88 00:04:36,450 --> 00:04:39,910 >> Jadi, jika anda berakhir menulis perkara yang mempunyai yang lebih besar 89 00:04:39,910 --> 00:04:44,660 skop, mereka akan ditulis dengan baik mereka bentuk di samping menjadi betul. 90 00:04:44,660 --> 00:04:46,300 Jadi beberapa anda mempunyai dibawa yang keluar. 91 00:04:46,300 --> 00:04:48,560 Itu sesuatu yang kita cari - sesuatu yang kita akan terus 92 00:04:48,560 --> 00:04:49,840 menolak anda lelaki di. 93 00:04:49,840 --> 00:04:52,460 >> Jika anda mempunyai sebarang soalan mengenai Reka bentuk program anda, berasa bebas 94 00:04:52,460 --> 00:04:56,870 untuk mendekati saya, dan saya gembira berjalan melalui program anda dengan anda, 95 00:04:56,870 --> 00:05:01,320 dan menunjukkan beberapa reka bentuk keputusan yang anda dibuat, dan memberikan beberapa 96 00:05:01,320 --> 00:05:06,240 cadangan tentang bagaimana untuk membuat lebih keputusan reka bentuk yang lebih baik. 97 00:05:06,240 --> 00:05:08,870 >> Jadi, kita akan bergerak untuk bercakap mengenai Kuiz 0. 98 00:05:08,870 --> 00:05:11,300 Sebelum kita melakukan itu, tidak sesiapa mempunyai sebarang soalan mengenai apa yang 99 00:05:11,300 --> 00:05:14,252 Saya telah dilindungi setakat ini? 100 00:05:14,252 --> 00:05:21,500 >> [Pencurian BUNYI] 101 00:05:21,500 --> 00:05:22,750 >> JASON Hirschhorn: Tujuh saat. 102 00:05:22,750 --> 00:05:23,250 OK. 103 00:05:23,250 --> 00:05:24,970 Mari kita bercakap tentang Kuiz 0 untuk sedikit. 104 00:05:24,970 --> 00:05:26,700 Kebanyakan anda mempunyai Kuiz anda kembali 0 ini. 105 00:05:26,700 --> 00:05:29,820 Jika tidak, mudah-mudahan anda ingat sedikit. 106 00:05:29,820 --> 00:05:34,770 Tetapi jika anda telah mengambil Kuiz 0, maka anda juga mempunyai akses kepada PDF dalam talian di 107 00:05:34,770 --> 00:05:35,890 penyelesaian sampel. 108 00:05:35,890 --> 00:05:39,480 >> Adakah sesiapa mempunyai apa-apa soalan sebelum kita melompat ke dalam bahan minggu ini mengenai 109 00:05:39,480 --> 00:05:41,520 masalah khusus kepada Kuiz 0 - 110 00:05:41,520 --> 00:05:44,630 mengapa jawapannya adalah apa yang ia? 111 00:05:44,630 --> 00:05:47,255 Sesiapa keliru tentang apa-apa? 112 00:05:47,255 --> 00:05:50,230 Walaupun anda mendapat masalah yang betul, tetapi hanya ingin saya untuk menjelaskan ia sedikit 113 00:05:50,230 --> 00:05:52,640 lagi, saya gembira untuk berbuat demikian sekarang. 114 00:05:52,640 --> 00:05:57,800 >> Jadi saya telah meminta anda semua untuk datang bersedia dengan beberapa 115 00:05:57,800 --> 00:05:59,440 pemikiran tentang Kuiz 0. 116 00:05:59,440 --> 00:06:02,660 Jadi yang ingin membawa kita bermula dengan soalan atau 117 00:06:02,660 --> 00:06:04,655 comment about Kuiz 0? 118 00:06:04,655 --> 00:06:07,435 119 00:06:07,435 --> 00:06:10,410 >> [KERTAS pencurian] 120 00:06:10,410 --> 00:06:11,470 >> JASON Hirschhorn: Tidak semua orang lakukan dengan sempurna. 121 00:06:11,470 --> 00:06:12,720 Jadi saya tahu [KETAWA] 122 00:06:12,720 --> 00:06:15,950 perlu ada beberapa soalan kira-kira Kuiz 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 Ya. 126 00:06:29,210 --> 00:06:29,600 Ompica. 127 00:06:29,600 --> 00:06:30,520 >> OMPICA: Nombor 10. 128 00:06:30,520 --> 00:06:33,560 >> JASON Hirschhorn: Nombor 10. 129 00:06:33,560 --> 00:06:35,400 Yang mana satu adalah nombor 10? 130 00:06:35,400 --> 00:06:35,840 >> OMPICA: The - 131 00:06:35,840 --> 00:06:36,420 >> JASON Hirschhorn: Saya haven't - 132 00:06:36,420 --> 00:06:37,670 >> OMPICA: The termasuk - 133 00:06:37,670 --> 00:06:40,060 134 00:06:40,060 --> 00:06:42,180 >> JASON Hirschhorn: Nombor 10 adalah lapan i - menulis lapan untuk i? 135 00:06:42,180 --> 00:06:42,980 >> OMPICA: Yeah. 136 00:06:42,980 --> 00:06:43,630 >> JASON Hirschhorn: OK. 137 00:06:43,630 --> 00:06:47,390 Jadi soalan lain anda boleh mempunyai ditanya ialah saya terus mata? 138 00:06:47,390 --> 00:06:48,630 Jawapannya adalah ya. 139 00:06:48,630 --> 00:06:52,060 Dalam seksyen sebelum kuiz, saya bertanya anda semua untuk memberi kod kepada kedua-dua Sterling dan 140 00:06:52,060 --> 00:06:52,980 lapan hingga i. 141 00:06:52,980 --> 00:06:54,770 Kedua-dua mereka yang berlaku kepada muncul di kuiz. 142 00:06:54,770 --> 00:06:57,510 Jadi mudah-mudahan, anda dibayar perhatian terhadapnya. 143 00:06:57,510 --> 00:07:02,520 >> Dan jika anda mempunyai, maka anda akan mempunyai mungkin dilakukan dengan baik di kedua-dua. 144 00:07:02,520 --> 00:07:06,030 Tetapi lapan untuk i, yang kita lakukan sebenarnya tidak kod dalam kelas, tetapi ia adalah, sekali lagi, 145 00:07:06,030 --> 00:07:07,500 ditanya mengenai kuiz. 146 00:07:07,500 --> 00:07:13,270 Jadi beberapa perkara untuk mengambil perhatian apabila pengekodan lapan hingga i. 147 00:07:13,270 --> 00:07:17,320 Perkara pertama, setiap soalan, adalah bahawa anda diperlukan untuk memeriksa jika tali 148 00:07:17,320 --> 00:07:20,300 adalah sama dengan null. 149 00:07:20,300 --> 00:07:28,060 >> Beberapa orang cuba untuk memeriksa kemudian dalam program ini jika s kurungan i adalah - 150 00:07:28,060 --> 00:07:30,940 jadi sesuatu yang tertentu dalam bahawa tali - adalah sama dengan null. 151 00:07:30,940 --> 00:07:35,600 Tetapi ingat, batal yang pada asasnya - ia baik untuk memikirkan 152 00:07:35,600 --> 00:07:39,100 null sebagai penunjuk sifar - penunjuk kepada sifar - 153 00:07:39,100 --> 00:07:40,920 kurang lebih dalam ingatan di mana anda tidak boleh akses. 154 00:07:40,920 --> 00:07:44,730 >> Jadi, jika ada sesuatu yang sama dengan nol, anda tahu bahawa ia tidak dimulakan, 155 00:07:44,730 --> 00:07:46,430 atau tiada apa-apa di sana. 156 00:07:46,430 --> 00:07:50,950 Jadi s adalah bintang char, s kurungan i adalah char a. 157 00:07:50,950 --> 00:07:57,410 Jadi masuk akal untuk membandingkan s untuk nol, tetapi tidak s kurungan i untuk nol. 158 00:07:57,410 --> 00:07:59,390 Tetapi sekali lagi - jadi itu adalah perkara yang pertama yang anda sepatutnya lakukan - 159 00:07:59,390 --> 00:08:03,510 periksa untuk memastikan bahawa anda benar-benar mendapat rentetan sebenar. 160 00:08:03,510 --> 00:08:08,020 >> Seterusnya, anda mahu pergi melalui setiap aksara dalam rentetan. 161 00:08:08,020 --> 00:08:12,500 Dan sebagainya yang akan menjadi seperti s kurungan i, sebagai contoh, jika saya adalah iterator anda. 162 00:08:12,500 --> 00:08:17,250 Dan mengambil watak itu, dan mendapatkan nilai sebenar. 163 00:08:17,250 --> 00:08:21,800 Anda telah ia disimpan sebagai char, tetapi nilai ASCII bagi sifar - 164 00:08:21,800 --> 00:08:23,010 sifar sebagai watak yang - 165 00:08:23,010 --> 00:08:25,450 sebenarnya bukan integer sifar. 166 00:08:25,450 --> 00:08:28,700 Ia beberapa nombor lain yang anda boleh mencari dalam jadual ASCII. 167 00:08:28,700 --> 00:08:30,790 >> Jadi salah satu cara untuk membetulkan untuk itu - mungkin cara terbaik untuk membetulkan untuk 168 00:08:30,790 --> 00:08:33,760 itu - adalah menolak daripadanya nilai watak - 169 00:08:33,760 --> 00:08:35,140 sifar sebagai bersifat. 170 00:08:35,140 --> 00:08:38,490 Petikan tunggal Jadi tolak, sifar, satu lagi petikan tunggal. 171 00:08:38,490 --> 00:08:44,620 Yang akan mengambil apa sahaja nombor yang anda mempunyai sebagai char, dan mendapatkannya sama dengan 172 00:08:44,620 --> 00:08:46,720 bilangan sebagai integer sebenar. 173 00:08:46,720 --> 00:08:50,300 >> Dan ini adalah hampir sama dengan pendekatan yang ramai orang mengambil dalam 174 00:08:50,300 --> 00:08:52,800 masalah set 2, dengan Caesar dan Viginere - 175 00:08:52,800 --> 00:08:55,160 mereka nombor rahsia, apabila anda telah berputar mereka. 176 00:08:55,160 --> 00:08:59,210 Jadi selepas anda mempunyai ia sebagai nombor dari sifar hingga sembilan, maka - bergantung kepada 177 00:08:59,210 --> 00:09:02,750 di mana ia pergi dalam bilangan muktamad - anda perlu kalikan 178 00:09:02,750 --> 00:09:04,120 oleh kuasa 10. 179 00:09:04,120 --> 00:09:07,340 >> Sesetengah orang berpindah dari belakang kepada depan dan didarab individu 180 00:09:07,340 --> 00:09:08,940 nombor dengan kuasa 10. 181 00:09:08,940 --> 00:09:11,160 Sesetengah orang bergerak dari depan ke belakang - 182 00:09:11,160 --> 00:09:14,430 dan sebagainya mengambil tertinggi memerintahkan nombor pertama - 183 00:09:14,430 --> 00:09:18,190 dan akan menyelamatkan orang-orang dalam pembolehubah kaunter global. 184 00:09:18,190 --> 00:09:20,880 Dan kemudian setiap kali melalui FOR gelung, darab bahawa gergasi global 185 00:09:20,880 --> 00:09:25,640 menangani pembolehubah sebanyak 10, untuk membuat ruang untuk char seterusnya. 186 00:09:25,640 --> 00:09:28,750 >> Sehingga adalah sedikit mengelirukan tanpa saya menulis di atas papan. 187 00:09:28,750 --> 00:09:31,550 Tetapi penyelesaian sampel adalah disediakan untuk anda. 188 00:09:31,550 --> 00:09:32,870 Tetapi mereka adalah perkara-perkara besar kita cari. 189 00:09:32,870 --> 00:09:36,400 Juga cek memastikan bahawa setiap watak individu sememangnya 190 00:09:36,400 --> 00:09:39,780 watak antara sifar dan sembilan, dan tidak beberapa watak lain, seperti A, 191 00:09:39,780 --> 00:09:41,160 sebagai contoh. 192 00:09:41,160 --> 00:09:43,150 >> Mereka itulah perkara yang kita cari dalam soalan itu. 193 00:09:43,150 --> 00:09:46,510 194 00:09:46,510 --> 00:09:47,980 Adakah yang menjawab soalan anda? 195 00:09:47,980 --> 00:09:49,320 >> OMPICA: Yeah. 196 00:09:49,320 --> 00:09:50,240 >> JASON Hirschhorn: OK. 197 00:09:50,240 --> 00:09:53,940 Adakah terdapat apa-apa soalan lain kira-kira Kuiz 0? 198 00:09:53,940 --> 00:09:55,440 Apa kira-kira menyusun? 199 00:09:55,440 --> 00:09:56,740 Semua orang menyusun betul? 200 00:09:56,740 --> 00:09:58,370 No 201 00:09:58,370 --> 00:09:58,840 Terdapat - 202 00:09:58,840 --> 00:10:01,010 [KETAWA] 203 00:10:01,010 --> 00:10:03,265 Sebarang soalan mengenai proses penyusunan? 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 >> [KERTAS pencurian] 207 00:10:11,090 --> 00:10:11,520 >> JASON Hirschhorn: Ya. 208 00:10:11,520 --> 00:10:11,700 Michael. 209 00:10:11,700 --> 00:10:14,140 >> MICHAEL: Apakah nombor 7 - rawak? 210 00:10:14,140 --> 00:10:16,500 >> JASON Hirschhorn: Bilangan 7. 211 00:10:16,500 --> 00:10:20,670 Nombor 7 adalah mendapatkan integer rawak. 212 00:10:20,670 --> 00:10:21,110 Cemerlang. 213 00:10:21,110 --> 00:10:25,630 Jadi anda diberi integer dan integer b, dan anda mahu rawak 214 00:10:25,630 --> 00:10:28,710 integer antara a dan b. 215 00:10:28,710 --> 00:10:31,740 Kami benar-benar boleh menulis satu ini pada lembaga, kerana yang satu ini 216 00:10:31,740 --> 00:10:33,320 adalah satu baris kod - 217 00:10:33,320 --> 00:10:34,390 salah satu cara untuk melakukannya. 218 00:10:34,390 --> 00:10:37,810 >> Jadi kita diberi drand sebagai fungsi kita boleh gunakan. 219 00:10:37,810 --> 00:10:38,820 Dan apakah drand - 220 00:10:38,820 --> 00:10:40,290 dengan andaian ia telah diletakkan sebagai pilihan - 221 00:10:40,290 --> 00:10:42,316 apakah drand kembali? 222 00:10:42,316 --> 00:10:44,840 >> MICHAEL: A terapung di antara 0.0 dan 1.0. 223 00:10:44,840 --> 00:10:45,530 >> JASON Hirschhorn: Beberapa - yeah. 224 00:10:45,530 --> 00:10:47,910 Beberapa di antara 0 dan 1. 225 00:10:47,910 --> 00:10:51,760 Dan jadi kami telah b dan a. 226 00:10:51,760 --> 00:10:55,480 Dan maka kita mempunyai nombor rawak kami antara 0 dan 1 yang diberikan kepada kami oleh drand. 227 00:10:55,480 --> 00:11:01,480 228 00:11:01,480 --> 00:11:06,630 Sesetengah orang cuba untuk meletakkan b, atau b tolak , atau sesuatu di dalam mereka 229 00:11:06,630 --> 00:11:07,960 kurungan. 230 00:11:07,960 --> 00:11:11,210 Ini bermakna bahawa mereka hujah untuk fungsi ini. 231 00:11:11,210 --> 00:11:13,450 >> drand tidak mengambil apa-apa hujah - seperti getString tidak 232 00:11:13,450 --> 00:11:14,330 tidak mengambil apa-apa hujah. 233 00:11:14,330 --> 00:11:16,600 Jadi ia hanya paren terbuka, berhampiran paren - dan bahawa, sendiri, adalah 234 00:11:16,600 --> 00:11:17,330 panggilan fungsi. 235 00:11:17,330 --> 00:11:19,770 Dan yang memberikan anda sejumlah antara 0 dan 1. 236 00:11:19,770 --> 00:11:22,820 Sudah tentu, kami mempunyai pelbagai keseluruhan yang nombor boleh masuk 237 00:11:22,820 --> 00:11:28,470 >> Katakanlah, jika b adalah 10 dan adalah 5, kita benar-benar mahu sebilangan dengan pelbagai 5. 238 00:11:28,470 --> 00:11:36,940 Jadi perkara yang akan datang yang perlu kita lakukan adalah membiak ini dengan pelbagai b tolak. 239 00:11:36,940 --> 00:11:40,380 Jadi andaian yang yang berganda-ganda. 240 00:11:40,380 --> 00:11:42,590 Dan yang akan memberi kami nombor satu dalam julat yang diberikan. 241 00:11:42,590 --> 00:11:46,610 Dan bahawa julat tertentu menjadi Perbezaan antara b tolak. 242 00:11:46,610 --> 00:11:50,030 >> Dan akhirnya, yang hanya akan memberikan dari - mengatakan julat di antara b tolak 243 00:11:50,030 --> 00:11:52,520 adalah 5, yang akan memberikan kita antara 0 hingga 5. 244 00:11:52,520 --> 00:11:56,000 Tetapi jika yang sebenarnya 5, kita perlu meningkatkan julat ini sehingga di mana ia 245 00:11:56,000 --> 00:12:01,380 sebenarnya sepatutnya menjadi, dengan menambah. 246 00:12:01,380 --> 00:12:02,580 Supaya mendapat hak logik. 247 00:12:02,580 --> 00:12:03,745 Dan kemudian, anda perlu satu lagi soalan? 248 00:12:03,745 --> 00:12:04,547 >> MICHAEL: No 249 00:12:04,547 --> 00:12:06,010 Saya berasa benar-benar dalam keadaan sihat sekarang. 250 00:12:06,010 --> 00:12:06,405 [KETAWA] 251 00:12:06,405 --> 00:12:06,730 >> JASON Hirschhorn: No 252 00:12:06,730 --> 00:12:08,640 Jangan berasa benar-benar dalam keadaan sihat. 253 00:12:08,640 --> 00:12:10,560 Beberapa orang berjuang dengan soalan ini. 254 00:12:10,560 --> 00:12:13,920 Dan kemudian, soalan lain adalah, drand, anda berkata, memberikan anda apungan - 255 00:12:13,920 --> 00:12:14,940 kembali apungan. 256 00:12:14,940 --> 00:12:18,020 Tetapi fungsi ini sebenarnya bertanya untuk integer untuk dikembalikan. 257 00:12:18,020 --> 00:12:23,700 >> Anda tidak perlu untuk membuang ini jelas untuk integer, kerana ini 258 00:12:23,700 --> 00:12:29,090 operasi akan merawatnya kerana semua yang terapung - sebagai nombor titik terapung. 259 00:12:29,090 --> 00:12:31,570 Seperti kemahuan ini - walaupun ini adalah integer, kemahuan ini 260 00:12:31,570 --> 00:12:32,890 digandakan dengan betul. 261 00:12:32,890 --> 00:12:34,000 Semua pendaraban akan berfungsi. 262 00:12:34,000 --> 00:12:35,060 Anda tidak perlu untuk membuang ia di sini. 263 00:12:35,060 --> 00:12:36,480 Malah, anda tidak perlu membuang ia. 264 00:12:36,480 --> 00:12:37,310 >> Yang akan - 265 00:12:37,310 --> 00:12:40,750 jika anda membuang sebilangan itulah antara 0 dan 1 - 266 00:12:40,750 --> 00:12:42,680 nombor rawak, titik terapung - 267 00:12:42,680 --> 00:12:47,850 maka ia sama ada akan hanya 0 atau 1, jadi anda akan kehilangan semua ketepatan itu. 268 00:12:47,850 --> 00:12:50,120 Tetapi pada akhirnya, apabila anda kembali, ia secara automatik mendapat 269 00:12:50,120 --> 00:12:51,620 dihantar pulang sebagai integer. 270 00:12:51,620 --> 00:12:56,870 Jadi anda tidak perlu untuk melakukan yang pemutus sendiri. 271 00:12:56,870 --> 00:13:00,810 >> Jadi ini adalah jawapan kepada soalan itu, nombor 7. 272 00:13:00,810 --> 00:13:02,190 Lain-lain soalan di Kuiz 0? 273 00:13:02,190 --> 00:13:03,300 Ya, Annie. 274 00:13:03,300 --> 00:13:05,050 >> ANNIE: Apabila kita menggunakan rekursif - 275 00:13:05,050 --> 00:13:07,850 apabila kita menggunakan gelung lelaran? 276 00:13:07,850 --> 00:13:10,210 >> JASON Hirschhorn: Apabila anda menggunakan rekursif - jadi lebih amnya, 277 00:13:10,210 --> 00:13:14,110 kebaikan dan keburukan rekursi berbanding pendekatan lelaran. 278 00:13:14,110 --> 00:13:17,110 Bolehkah sesiapa menawarkan pro atau con? 279 00:13:17,110 --> 00:13:19,460 Sila? 280 00:13:19,460 --> 00:13:20,140 Tidak boleh sesiapa pun. 281 00:13:20,140 --> 00:13:22,526 Yang dapat menawarkan pro atau con? 282 00:13:22,526 --> 00:13:26,963 >> [KERTAS pencurian] 283 00:13:26,963 --> 00:13:29,730 >> PELAJAR 1 Rekursi kurang pengekodan - menaip kurang? 284 00:13:29,730 --> 00:13:33,170 >> JASON Hirschhorn: Jadi secara amnya, rekursi terutamanya, fungsi - 285 00:13:33,170 --> 00:13:35,750 atau algoritma seperti merge jenis - yang meminjamkan sendiri 286 00:13:35,750 --> 00:13:37,300 kepada pendekatan rekursif - 287 00:13:37,300 --> 00:13:40,710 mungkin lebih mudah kod secara rekursif. 288 00:13:40,710 --> 00:13:43,940 Dan hanya lebih masuk akal untuk melakukannya secara rekursif. 289 00:13:43,940 --> 00:13:46,230 Jadi yang akan menjadi pro untuk rekursi. 290 00:13:46,230 --> 00:13:46,610 Orang lain? 291 00:13:46,610 --> 00:13:47,467 Yeah? 292 00:13:47,467 --> 00:13:49,240 >> PELAJAR 2: Con untuk rekursi - 293 00:13:49,240 --> 00:13:50,940 Ia menggunakan memori lebih. 294 00:13:50,940 --> 00:13:52,200 >> JASON Hirschhorn: Jadi betul-betul betul. 295 00:13:52,200 --> 00:13:55,720 Fungsi rekursif akan terus menambah timbunan bingkai untuk tindanan. 296 00:13:55,720 --> 00:13:59,690 Jadi jika anda beroperasi pada banyak nombor, dan perlu memanggil ini 297 00:13:59,690 --> 00:14:02,560 berfungsi banyak, maka anda akan pasti mengambil lebih banyak memori, manakala 298 00:14:02,560 --> 00:14:05,810 pendekatan lelaran hanya akan meletakkan satu stack frame pada timbunan, kerana 299 00:14:05,810 --> 00:14:08,420 ia semua berlaku dalam satu fungsi. 300 00:14:08,420 --> 00:14:11,010 >> Apa-apa kebaikan dan keburukan yang lain? 301 00:14:11,010 --> 00:14:11,500 Yeah. 302 00:14:11,500 --> 00:14:12,550 >> PELAJAR 3: Kelebihan untuk rekursi. 303 00:14:12,550 --> 00:14:15,950 Anda tidak perlu untuk menentukan di memajukan berapa kali 304 00:14:15,950 --> 00:14:17,660 kod terpaksa diulangi. 305 00:14:17,660 --> 00:14:22,810 Anda boleh mempunyai nombor yang telah ditetapkan masa yang anda perlu melelar, maka 306 00:14:22,810 --> 00:14:26,420 rekursi adalah lebih baik, kerana ia mengambil hasil itu. 307 00:14:26,420 --> 00:14:27,780 >> JASON Hirschhorn: Saya rasa yang benar. 308 00:14:27,780 --> 00:14:30,770 Tetapi saya fikir kedua-dua kes anda tidak akan - 309 00:14:30,770 --> 00:14:33,290 anda mungkin akan mendapat beberapa input daripada pengguna. 310 00:14:33,290 --> 00:14:35,990 Atau fungsi ini akan mempunyai input beberapa yang akan menentukan berapa kali ia 311 00:14:35,990 --> 00:14:36,730 perlu dijalankan. 312 00:14:36,730 --> 00:14:39,520 Jadi secara amnya, anda tidak akan kod keras - walaupun dalam pendekatan lelaran - bagaimana 313 00:14:39,520 --> 00:14:40,940 banyak kali gelung yang perlu dijalankan. 314 00:14:40,940 --> 00:14:46,100 315 00:14:46,100 --> 00:14:48,670 >> Adakah anda mempunyai satu lagi anda memikirkan, Annie? 316 00:14:48,670 --> 00:14:49,330 OK. 317 00:14:49,330 --> 00:14:51,650 Jadi mereka mungkin dua - 318 00:14:51,650 --> 00:14:54,370 pro yang paling besar dan yang terbesar con kepada rekursi berbanding 319 00:14:54,370 --> 00:14:57,080 pendekatan lelaran. 320 00:14:57,080 --> 00:14:57,690 OK. 321 00:14:57,690 --> 00:14:59,465 Apa-apa lagi pada Kuiz 0? 322 00:14:59,465 --> 00:15:08,940 323 00:15:08,940 --> 00:15:09,920 >> Mari kita bergerak ke atas. 324 00:15:09,920 --> 00:15:15,260 Fail I / O. Terdapat pendek yang indah minggu ini dalam fail I / O yang diharapkan 325 00:15:15,260 --> 00:15:19,270 anda telah melihat pelbagai kali, dan dikagumi. 326 00:15:19,270 --> 00:15:22,910 Banyak kerja masuk ke dalam itu, dan saya mendengar ia adalah insanely membantu. 327 00:15:22,910 --> 00:15:25,740 Saya juga termasuk pautan pada slaid ini, sekiranya anda tidak mempunyai 328 00:15:25,740 --> 00:15:29,160 peluang untuk menonton ia 10 kali. 329 00:15:29,160 --> 00:15:35,280 >> Jadi, kita akan pergi ke atas secara ringkas langkah-langkah utama untuk membuka dan bekerja 330 00:15:35,280 --> 00:15:38,400 dengan fail, dan kemudian kita akan menyelam ke dalam masalah pengekodan sebelum 331 00:15:38,400 --> 00:15:40,400 memeriksa masalah yang ditetapkan. 332 00:15:40,400 --> 00:15:44,330 Jadi sekali lagi, saya akan meletakkan ini di atas skrin, tetapi saya akan bercakap bagi 333 00:15:44,330 --> 00:15:47,630 hanya satu minit mengenai apa yang kita buat di sini dengan fail I/O-- 334 00:15:47,630 --> 00:15:49,090 apa maksudnya? 335 00:15:49,090 --> 00:15:55,280 >> Ini bermakna bahawa kita boleh membuat kita program, dan kemudian mempunyai program kami 336 00:15:55,280 --> 00:16:00,370 keluar, dan tidak telah membuat apa-apa kesan ke atas dunia di luar program kami. 337 00:16:00,370 --> 00:16:04,630 Tetapi apabila kita mula bekerja dengan fail - kedua-dua mereka dalam membaca dan mewujudkan 338 00:16:04,630 --> 00:16:10,460 mereka - kita boleh mempunyai beberapa kesan ke atas dunia di luar program kami. 339 00:16:10,460 --> 00:16:15,440 >> Sama seperti jika Microsoft Word tidak dapat untuk membuat apa-apa dokumen Word, maka 340 00:16:15,440 --> 00:16:18,710 sekali Microsoft Word berhenti, semua anda kerja akan hilang, dan ia akan 341 00:16:18,710 --> 00:16:19,740 benar-benar sia-sia. 342 00:16:19,740 --> 00:16:23,620 Kami akhirnya mahu dapat menulis program yang boleh menjejaskan 343 00:16:23,620 --> 00:16:31,350 dunia di sekeliling mereka, kedua-dua dengan mengambil input kompleks - dari segi fail dan 344 00:16:31,350 --> 00:16:37,080 melalui fail, dan juga mewujudkan menarik dan output menarik - 345 00:16:37,080 --> 00:16:39,520 dari segi pelbagai jenis fail. 346 00:16:39,520 --> 00:16:43,730 >> Jadi itulah sebabnya kita mula belajar bagaimana untuk bekerja dengan fail. 347 00:16:43,730 --> 00:16:47,080 Lebih khusus lagi, apa yang yang kami lakukan adalah seperti berikut. 348 00:16:47,080 --> 00:16:47,680 Ia amat mudah. 349 00:16:47,680 --> 00:16:51,530 Terdapat hanya beberapa langkah, dan ia disenaraikan di sini pada kod ini. 350 00:16:51,530 --> 00:16:55,130 Jadi, kita akan melalui baris kod ini demi baris. 351 00:16:55,130 --> 00:16:57,630 >> Pertama, anda lihat menekankan - 352 00:16:57,630 --> 00:17:01,330 apabila anda bekerja dengan fail, tanpa mengambil kira jenis fail itu, 353 00:17:01,330 --> 00:17:02,670 anda perlu membukanya. 354 00:17:02,670 --> 00:17:05,130 Dan itu adalah dengan panggilan untuk fopen - 355 00:17:05,130 --> 00:17:05,950 di sini. 356 00:17:05,950 --> 00:17:07,980 Anda termasuk nama fail. 357 00:17:07,980 --> 00:17:11,930 Jika fail tidak di dalam direktori anda, atau folder di mana program ini 358 00:17:11,930 --> 00:17:15,910 kehidupan, maka anda juga perlu termasuk laluan kepada mana fail yang. 359 00:17:15,910 --> 00:17:19,099 >> Kita akan menganggap bahawa ini fail yang dipanggil "text.txt" - 360 00:17:19,099 --> 00:17:24,220 dokumen teks yang mudah - adalah dalam folder sama seperti program ini. 361 00:17:24,220 --> 00:17:26,859 Jadi, itu satu lagi perkara yang perlu fikiran - bahawa jika anda mahu untuk membuka fail 362 00:17:26,859 --> 00:17:30,050 di tempat lain, anda sebenarnya perlu untuk memasukkan lokasinya. 363 00:17:30,050 --> 00:17:33,520 >> Kedua, anda boleh lulus hujah untuk fopen, dan itulah apa yang anda mahu lakukan 364 00:17:33,520 --> 00:17:34,620 dengan fail. 365 00:17:34,620 --> 00:17:38,450 Terdapat tiga hujah utama yang anda akan lulus untuk fopen. 366 00:17:38,450 --> 00:17:40,060 Yang boleh memberikan saya tiga? 367 00:17:40,060 --> 00:17:44,960 368 00:17:44,960 --> 00:17:47,130 Yang boleh memberikan saya salah seorang daripada mereka? 369 00:17:47,130 --> 00:17:48,130 Ya. 370 00:17:48,130 --> 00:17:50,010 >> PELAJAR 4: nama fail? 371 00:17:50,010 --> 00:17:50,440 >> JASON Hirschhorn: Maaf. 372 00:17:50,440 --> 00:17:55,490 Tiga hujah utama anda boleh lulus sebagai hujah kedua untuk fopen. 373 00:17:55,490 --> 00:17:57,060 Anda betul - nama fail adalah hujah pertama. 374 00:17:57,060 --> 00:18:01,620 Tetapi hujah kedua untuk fopen adalah umumnya tiga rentetan, dan - ya. 375 00:18:01,620 --> 00:18:02,210 Aleja. 376 00:18:02,210 --> 00:18:03,490 >> Aleja: A untuk append. 377 00:18:03,490 --> 00:18:06,840 >> JASON Hirschhorn: A, jika anda mahu melampirkan fail yang telah wujud. 378 00:18:06,840 --> 00:18:07,810 >> PELAJAR 5: R untuk dibaca. 379 00:18:07,810 --> 00:18:09,930 >> JASON Hirschhorn: R, jika anda mahu membaca dari fail. 380 00:18:09,930 --> 00:18:10,670 >> PELAJAR 6: W untuk tulis. 381 00:18:10,670 --> 00:18:12,840 >> JASON Hirschhorn: Dan w, jika anda mahu menulis ke fail. 382 00:18:12,840 --> 00:18:17,570 Jadi dalam kes ini, kita menulis ke fail, jadi kita perlu w. 383 00:18:17,570 --> 00:18:22,360 Anda membukanya, anda juga perlu menyimpan fail di tempat, dan itu dengan 384 00:18:22,360 --> 00:18:26,000 kod ke sebelah kiri pengendali tugasan - 385 00:18:26,000 --> 00:18:31,220 Saya mewujudkan penunjuk ke fail dipanggil, dalam kes ini, fail. 386 00:18:31,220 --> 00:18:36,070 >> Kami tidak akan bimbang apa perkara FILE semua topi ini. 387 00:18:36,070 --> 00:18:40,600 Cukup untuk mengatakan, ia adalah satu panjang aliran sifar dan satu. 388 00:18:40,600 --> 00:18:44,970 Dan itulah bagaimana kita akan mengendalikannya dan memahaminya. 389 00:18:44,970 --> 00:18:47,300 >> Perkara seterusnya yang perlu kita lakukan - dan ini adalah amat penting - 390 00:18:47,300 --> 00:18:49,070 setiap kali anda membuka fail - 391 00:18:49,070 --> 00:18:54,250 sebenarnya, setiap kali anda memanggil malloc, untuk Sebagai contoh, dan mendapatkan beberapa memori dan cuba 392 00:18:54,250 --> 00:18:57,980 dan menyimpannya dalam penunjuk, anda sentiasa mahu memeriksa untuk memastikan bahawa yang 393 00:18:57,980 --> 00:19:00,230 fungsi tidak kembali null. 394 00:19:00,230 --> 00:19:05,230 >> Jadi dalam kes ini, kita memeriksa untuk memastikan bahawa kita benar-benar membuka 395 00:19:05,230 --> 00:19:10,230 memfailkan dengan betul, dan terdapat tiada kesilapan dalam program kami. 396 00:19:10,230 --> 00:19:15,160 Seterusnya, setelah kami diperiksa untuk memastikan bahawa kita mempunyai fail kerja, kita boleh 397 00:19:15,160 --> 00:19:18,520 menulis kepada, atau bacaan, atau menambah ke fail. 398 00:19:18,520 --> 00:19:24,270 Dalam kes ini, saya hanya mencetak satu baris ke fail ini. 399 00:19:24,270 --> 00:19:25,450 >> Bagaimana saya tahu bahawa? 400 00:19:25,450 --> 00:19:27,990 Nah, saya menggunakan fungsi ini dipanggil fprintf. 401 00:19:27,990 --> 00:19:30,970 Semua fungsi yang anda akan menggunakan semasa menulis kepada, atau membaca daripada, atau 402 00:19:30,970 --> 00:19:34,950 memanipulasi fail akan sama dengan fungsi yang anda lihat sebelum ini, tetapi 403 00:19:34,950 --> 00:19:38,420 bermula dengan huruf F, menawarkan diri untuk fail. 404 00:19:38,420 --> 00:19:43,440 Dan fprintf, tidak seperti cetak biasa kami app, mengambil masa satu hujah tambahan, 405 00:19:43,440 --> 00:19:47,800 dan itu adalah fail di mana anda ingin mencetak baris ini untuk. 406 00:19:47,800 --> 00:19:50,640 >> Saya tidak mempunyai apa-apa hak ohai. 407 00:19:50,640 --> 00:19:52,860 Saya tidak mempunyai ketiga hujah untuk printf - 408 00:19:52,860 --> 00:19:57,030 atau hujah kedua untuk printf, yang Hujah ketiga untuk fprintf, kerana saya 409 00:19:57,030 --> 00:19:59,480 tidak mempunyai apa-apa ruang letak di sini. 410 00:19:59,480 --> 00:20:01,070 Saya tidak termasuk apa-apa pembolehubah. 411 00:20:01,070 --> 00:20:06,070 Tetapi sekali lagi, fprintf dan semua fail ini fungsi yang beroperasi dengan fail 412 00:20:06,070 --> 00:20:09,820 biasanya akan memerlukan fail di mana mereka beroperasi. 413 00:20:09,820 --> 00:20:15,960 >> Akhir sekali, perkara terakhir yang penting untuk lakukan adalah untuk menutup fail, seperti 414 00:20:15,960 --> 00:20:19,530 dengan - apabila kita malloc sesuatu, kita mahu untuk membebaskan sesuatu, jangan kita 415 00:20:19,530 --> 00:20:22,730 mempunyai kebocoran memori - kita mahu untuk menutup fail kami. 416 00:20:22,730 --> 00:20:28,180 Jika program ini keluar tanpa penutup fail, kemungkinan adalah apa-apa yang akan pergi 417 00:20:28,180 --> 00:20:30,050 salah, terutamanya jika ia adalah fail kecil. 418 00:20:30,050 --> 00:20:35,020 >> Tetapi ia sudah pasti gaya pengekodan baik dan mengamalkan untuk sentiasa menutup fail anda 419 00:20:35,020 --> 00:20:38,050 apabila anda selesai menggunakannya. 420 00:20:38,050 --> 00:20:43,630 Jadi itulah asas-asas fail I / O. Anda mungkin melihat bahawa sebelum ini, atau 421 00:20:43,630 --> 00:20:45,710 menonton ia dalam yang singkat hebat. 422 00:20:45,710 --> 00:20:48,410 Adakah sesiapa mempunyai apa-apa soalan, sebelum kita pergi ke beberapa amalan pengekodan 423 00:20:48,410 --> 00:20:51,800 masalah, kira-kira fail I / O atau langkah-langkah yang saya hanya pergi ke atas? 424 00:20:51,800 --> 00:21:00,198 425 00:21:00,198 --> 00:21:03,162 >> [MENAIP Bunyi] 426 00:21:03,162 --> 00:21:04,150 >> JASON Hirschhorn: Adakah anda mempunyai soalan, Avi? 427 00:21:04,150 --> 00:21:04,660 >> AVI: No 428 00:21:04,660 --> 00:21:04,740 >> JASON Hirschhorn: OK. 429 00:21:04,740 --> 00:21:06,746 Saya akan menunggu satu lagi tujuh saat. 430 00:21:06,746 --> 00:21:07,590 [KETAWA] 431 00:21:07,590 --> 00:21:08,620 Itulah tip benar-benar baik. 432 00:21:08,620 --> 00:21:10,750 Kalian hanya tidak suka bertanya soalan. 433 00:21:10,750 --> 00:21:11,660 Itu denda. 434 00:21:11,660 --> 00:21:12,330 OK. 435 00:21:12,330 --> 00:21:17,620 Jadi masalah amalan pertama kami adalah, kami akan buat salinan fungsi 436 00:21:17,620 --> 00:21:22,330 alat baris arahan yang anda mungkin digunakan sebelum ini - salinan - 437 00:21:22,330 --> 00:21:23,500 alat salinan. 438 00:21:23,500 --> 00:21:28,050 Jika anda menaip cp dan kemudian memindahkannya dua hujah ke dalam pangkalan anda, anda boleh 439 00:21:28,050 --> 00:21:28,980 menyalin fail. 440 00:21:28,980 --> 00:21:31,220 Dan itulah yang kita akan untuk menulis sekarang. 441 00:21:31,220 --> 00:21:35,830 >> Jadi sekali lagi, membaca kira slaid ini, saya akan anda untuk menulis program yang mengambil 442 00:21:35,830 --> 00:21:38,130 dua dan hanya dua baris arahan hujah-hujah - 443 00:21:38,130 --> 00:21:40,750 fail sumber dan fail destinasi - 444 00:21:40,750 --> 00:21:44,590 dan salinan kandungan sumber memfailkan untuk fail destinasi 445 00:21:44,590 --> 00:21:46,960 satu bait pada satu masa. 446 00:21:46,960 --> 00:21:48,510 Jadi, itu banyak untuk meminta. 447 00:21:48,510 --> 00:21:52,200 >> Sekali lagi, pendekatan yang baik untuk ini adalah untuk tidak pergi terus kepada kod C, tetapi 448 00:21:52,200 --> 00:21:54,280 memecahkan ia ke dalam beberapa langkah. 449 00:21:54,280 --> 00:21:58,400 Pertama, berfikir tentang logik - betul-betul apa yang saya meminta anda untuk melakukan - 450 00:21:58,400 --> 00:22:00,620 dan memahami semua langkah-langkah untuk masalah ini. 451 00:22:00,620 --> 00:22:04,410 Tidak dalam C, hanya dalam beberapa kod pseudo, atau model mental 452 00:22:04,410 --> 00:22:06,030 apa yang berlaku. 453 00:22:06,030 --> 00:22:10,050 >> Seterusnya, sebaik sahaja anda mempunyai kod pseudo ke bawah, memikirkan bagaimana kod pseudo yang 454 00:22:10,050 --> 00:22:14,600 peta ke alat dan perkara yang kita telah belajar untuk digunakan dalam C. 455 00:22:14,600 --> 00:22:19,070 >> Dan akhirnya, apabila anda mempunyai semua yang bersama-sama, anda boleh kod masalah tersebut. 456 00:22:19,070 --> 00:22:23,370 Mengambil masa 5 hingga 10 minit untuk bekerja pada masalah ini. 457 00:22:23,370 --> 00:22:25,800 Saya akan meletakkan arahan kembali dalam satu saat. 458 00:22:25,800 --> 00:22:27,990 Dan kemudian kita akan pergi ke atas kod pseudo, dan kod 459 00:22:27,990 --> 00:22:29,230 ia tinggal sebagai satu kumpulan. 460 00:22:29,230 --> 00:22:31,640 >> Jika anda mempunyai sebarang soalan semasa anda bekerja mengenai perkara ini, sila meningkatkan 461 00:22:31,640 --> 00:22:34,260 tangan anda, dan saya akan datang sekitar dan menjawabnya. 462 00:22:34,260 --> 00:22:37,020 463 00:22:37,020 --> 00:22:39,330 >> PELAJAR 7: Bolehkah saya sapu sekeping kertas? 464 00:22:39,330 --> 00:22:41,537 >> JASON Hirschhorn: Apa yang berlaku? 465 00:22:41,537 --> 00:26:46,047 466 00:26:46,047 --> 00:26:48,043 >> [MENAIP Bunyi] 467 00:26:48,043 --> 00:26:48,730 >> JASON Hirschhorn: OK. 468 00:26:48,730 --> 00:26:51,710 Mari kita pergi ke kod pseudo yang pertama, dan maka saya akan memberikan anda beberapa lebih 469 00:26:51,710 --> 00:26:52,960 minit untuk menyelesaikan pengkodan. 470 00:26:52,960 --> 00:26:55,540 471 00:26:55,540 --> 00:26:58,650 >> Yang ingin memulakan saya di dengan baris pertama 472 00:26:58,650 --> 00:27:00,030 kod pseudo untuk fungsi ini? 473 00:27:00,030 --> 00:27:03,330 474 00:27:03,330 --> 00:27:05,740 >> PELAJAR 8: Semak untuk memastikan bahawa anda telah diberi dua fail. 475 00:27:05,740 --> 00:27:06,990 >> JASON Hirschhorn: OK. 476 00:27:06,990 --> 00:27:21,270 477 00:27:21,270 --> 00:27:22,990 Dan jika kita tidak? 478 00:27:22,990 --> 00:27:25,974 >> PELAJAR 8: Saya akan kembali 0. 479 00:27:25,974 --> 00:27:27,872 >> JASON Hirschhorn: Sekiranya kita kembali 0? 480 00:27:27,872 --> 00:27:30,182 >> PELAJAR 8: Kembalikan - 481 00:27:30,182 --> 00:27:30,650 dikosongkan. 482 00:27:30,650 --> 00:27:30,850 Maaf. 483 00:27:30,850 --> 00:27:31,210 >> JASON Hirschhorn: Yeah. 484 00:27:31,210 --> 00:27:32,710 Mungkin tidak 0. 485 00:27:32,710 --> 00:27:34,680 Kerana 0 bermakna segala-galanya baik. 486 00:27:34,680 --> 00:27:35,030 OK. 487 00:27:35,030 --> 00:27:36,730 Jadi, itu baris pertama daripada kod pseudo. 488 00:27:36,730 --> 00:27:38,715 Yang mempunyai garis kedua kod pseudo? 489 00:27:38,715 --> 00:27:40,630 >> PELAJAR 9: Buka kedua-dua gambar? 490 00:27:40,630 --> 00:27:41,880 >> JASON Hirschhorn: Buka kedua-dua fail. 491 00:27:41,880 --> 00:27:49,970 492 00:27:49,970 --> 00:27:50,920 OK? 493 00:27:50,920 --> 00:27:52,850 >> PELAJAR 10: Semak untuk melihat jika fail adalah NULL? 494 00:27:52,850 --> 00:28:10,906 495 00:28:10,906 --> 00:28:12,580 >> JASON Hirschhorn: Periksa untuk pasti tidak adalah NULL. 496 00:28:12,580 --> 00:28:15,800 Sebagai mengetepikan - 497 00:28:15,800 --> 00:28:17,540 mengurangkan 0 - 498 00:28:17,540 --> 00:28:18,887 ialah NULL? 499 00:28:18,887 --> 00:28:20,080 >> PELAJAR 11: No 500 00:28:20,080 --> 00:28:21,190 >> JASON Hirschhorn: Itu bukan NULL. 501 00:28:21,190 --> 00:28:23,400 Yang dipanggil terminator NULL itu. 502 00:28:23,400 --> 00:28:25,580 Ini sebenarnya dieja dengan hanya satu l. 503 00:28:25,580 --> 00:28:28,580 Jadi memeriksa sesuatu terhadap yang - yang sebenarnya watak - 504 00:28:28,580 --> 00:28:31,710 jadi memeriksa sesuatu terhadap yang tidak sama dengan memeriksa untuk melihat jika ia 505 00:28:31,710 --> 00:28:32,690 sama NULL. 506 00:28:32,690 --> 00:28:34,100 >> Dan sesetengah orang - 507 00:28:34,100 --> 00:28:36,040 pada kuiz mereka dan masalah mereka set - telah mendapat 508 00:28:36,040 --> 00:28:36,890 dua daripada mereka keliru. 509 00:28:36,890 --> 00:28:38,830 Tetapi kedua-dua daripada mereka adalah sebenarnya berbeza. 510 00:28:38,830 --> 00:28:40,220 Satu berakhir rentetan - 511 00:28:40,220 --> 00:28:43,210 satu adalah penunjuk kepada 0. 512 00:28:43,210 --> 00:28:46,490 >> PELAJAR 12: Mengapa tidak anda menyemak untuk memastikan bahawa fail tidak NULL 513 00:28:46,490 --> 00:28:48,670 sebelum anda membukanya? 514 00:28:48,670 --> 00:28:54,772 >> JASON Hirschhorn: Oleh itu, hukumkanlah menjimatkan sesuatu dalam fail itu. 515 00:28:54,772 --> 00:28:57,780 Dan jika anda kembali di sini - 516 00:28:57,780 --> 00:28:59,520 jadi baris ini - fopen - 517 00:28:59,520 --> 00:29:05,300 akan memberi anda alamat dan kedai alamat dalam fail jika ia berfungsi. 518 00:29:05,300 --> 00:29:07,650 Jika ia tidak berfungsi, ia akan menyimpan NULL - 519 00:29:07,650 --> 00:29:08,020 >> PELAJAR 12: Oh. 520 00:29:08,020 --> 00:29:08,180 OK. 521 00:29:08,180 --> 00:29:08,500 Mendapat anda. 522 00:29:08,500 --> 00:29:09,050 >> JASON Hirschhorn: Dalam fail. 523 00:29:09,050 --> 00:29:11,990 Jadi anda tidak boleh menyemak NULL sebelum anda membuka mereka. 524 00:29:11,990 --> 00:29:13,520 NULL bermaksud sesuatu tidak berfungsi dengan betul. 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 Jadi periksa untuk memastikan tidak adalah? 528 00:29:22,590 --> 00:29:23,200 Atau adakah? 529 00:29:23,200 --> 00:29:23,770 Apa yang kita fikirkan? 530 00:29:23,770 --> 00:29:24,310 Kami akan pergi dengan itu. 531 00:29:24,310 --> 00:29:24,520 >> PELAJAR 13: Apakah. 532 00:29:24,520 --> 00:29:25,020 >> JASON Hirschhorn: Apakah? 533 00:29:25,020 --> 00:29:25,930 Tidak adalah? 534 00:29:25,930 --> 00:29:26,350 >> PELAJAR 13: Apakah. 535 00:29:26,350 --> 00:29:26,390 >> JASON Hirschhorn: OK. 536 00:29:26,390 --> 00:29:28,510 Kita seolah-olah mempunyai beberapa konsensus pada itu. 537 00:29:28,510 --> 00:29:30,520 Tidak adalah NULL. 538 00:29:30,520 --> 00:29:32,250 OK, Barisan seterusnya kod pseudo. 539 00:29:32,250 --> 00:29:33,600 Siapa yang tidak memberikan saya garis lagi? 540 00:29:33,600 --> 00:29:37,350 541 00:29:37,350 --> 00:29:38,295 Kami akan menunggu untuk anda. 542 00:29:38,295 --> 00:29:39,020 Yeah. 543 00:29:39,020 --> 00:29:40,895 >> PELAJAR 14: Anda perlu membaca dari fail yang pertama? 544 00:29:40,895 --> 00:29:42,290 >> JASON Hirschhorn: OK. 545 00:29:42,290 --> 00:29:46,240 >> PELAJAR 14: Atau kita gunakan fscanf atau sesuatu seperti itu fail pertama? 546 00:29:46,240 --> 00:29:50,650 >> JASON Hirschhorn: Jadi, kami ingin membaca dari fail yang pertama dan - 547 00:29:50,650 --> 00:29:51,900 mari kita meletakkan bahawa di sini. 548 00:29:51,900 --> 00:30:00,600 549 00:30:00,600 --> 00:30:01,880 Baca dari fail sumber. 550 00:30:01,880 --> 00:30:05,370 Dan kemudian, apa yang kita lakukan selepas kita membaca dari fail sumber? 551 00:30:05,370 --> 00:30:06,620 Orang lain? 552 00:30:06,620 --> 00:30:09,150 553 00:30:09,150 --> 00:30:12,190 >> PELAJAR 15: Tulis ke Fail destinasi? 554 00:30:12,190 --> 00:30:22,080 555 00:30:22,080 --> 00:30:25,620 >> JASON Hirschhorn: Kami menulis untuk fail destinasi, dan - 556 00:30:25,620 --> 00:30:26,210 OK. 557 00:30:26,210 --> 00:30:30,030 Apa lagi yang kita hilang? 558 00:30:30,030 --> 00:30:32,460 Orang lain yang tidak memberikan saya satu baris kod lagi - daripada kod pseudo. 559 00:30:32,460 --> 00:30:33,510 Yeah. 560 00:30:33,510 --> 00:30:36,540 >> PELAJAR 16: Mungkin anda sentiasa boleh menyemak sama ada terdapat sesuatu untuk membaca untuk, 561 00:30:36,540 --> 00:30:37,970 seperti baris seterusnya? 562 00:30:37,970 --> 00:30:39,550 Yang seperti baris seterusnya, melihat jika ia wujud. 563 00:30:39,550 --> 00:30:40,660 >> [ELEKTRONIK BUNYI BIP] 564 00:30:40,660 --> 00:30:41,095 >> JASON Hirschhorn: Oops. 565 00:30:41,095 --> 00:30:43,120 Itulah perisian journaling saya. 566 00:30:43,120 --> 00:30:43,580 Yeah? 567 00:30:43,580 --> 00:30:44,960 >> PELAJAR 16: Yeah. 568 00:30:44,960 --> 00:30:48,940 >> JASON Hirschhorn: sampaikanlah kepada saya sekali lagi. 569 00:30:48,940 --> 00:30:51,640 >> PELAJAR 16: Semak sama ada terdapat masih garis depan daripada 570 00:30:51,640 --> 00:30:52,920 fail sumber untuk dibaca. 571 00:30:52,920 --> 00:30:53,500 >> JASON Hirschhorn: OK. 572 00:30:53,500 --> 00:30:56,060 Jadi, kita tidak membaca garis - telah membaca bait di sini - 573 00:30:56,060 --> 00:30:57,590 tetapi anda betul. 574 00:30:57,590 --> 00:31:00,040 Kami mahu membaca dan menulis sehingga tiada lagi bait. 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 Dan sebagainya ini benar-benar perlu tersusun sedikit, kerana mereka di bawah sana. 578 00:31:16,940 --> 00:31:17,470 Betul? 579 00:31:17,470 --> 00:31:20,620 Sehingga kita keluar dari bait, kita akan dibaca dari fail sumber dan menulis 580 00:31:20,620 --> 00:31:22,160 ke fail destinasi. 581 00:31:22,160 --> 00:31:24,510 >> Dan kemudian, apa yang adalah yang terakhir garis kod pseudo? 582 00:31:24,510 --> 00:31:26,380 Seseorang yang tidak diberi saya sesuatu yet. 583 00:31:26,380 --> 00:31:29,270 584 00:31:29,270 --> 00:31:30,260 >> PELAJAR 17: Tutup fail? 585 00:31:30,260 --> 00:31:31,510 >> JASON Hirschhorn: Tepat sekali. 586 00:31:31,510 --> 00:31:36,370 587 00:31:36,370 --> 00:31:37,450 Menutup fail. 588 00:31:37,450 --> 00:31:38,400 Jadi ada kod pseudo kami. 589 00:31:38,400 --> 00:31:41,870 Saya akan meletakkan ke dalam kod pseudo gedit, dan dalam beberapa minit kami 590 00:31:41,870 --> 00:31:44,626 akan memberi kod ini bersama-sama. 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 Marilah kita memulakan sebagai satu kumpulan. 594 00:33:58,290 --> 00:33:59,940 Nishant, saya mempunyai fail baru saya. 595 00:33:59,940 --> 00:34:01,130 Saya baru sahaja membuka ini. 596 00:34:01,130 --> 00:34:01,880 Dokumen Untitled 1. 597 00:34:01,880 --> 00:34:05,490 Apakah perkara pertama yang perlu saya lakukan? 598 00:34:05,490 --> 00:34:07,040 >> Nishant: Termasuk perpustakaan? 599 00:34:07,040 --> 00:34:08,219 >> JASON Hirschhorn: OK. 600 00:34:08,219 --> 00:34:11,070 Perpustakaan apa? 601 00:34:11,070 --> 00:34:17,570 >> Nishant: Stdio.h, stdlib.h, saya percaya? 602 00:34:17,570 --> 00:34:18,000 >> JASON Hirschhorn: OK. 603 00:34:18,000 --> 00:34:21,592 Apakah stdlib untuk? 604 00:34:21,592 --> 00:34:23,010 >> Nishant: saya terlupa. 605 00:34:23,010 --> 00:34:23,219 >> JASON Hirschhorn: OK. 606 00:34:23,219 --> 00:34:24,179 Jadi termasuk stdio. 607 00:34:24,179 --> 00:34:28,630 Apakah yang perlu dilakukan sebelum Saya mula pengekodan? 608 00:34:28,630 --> 00:34:29,710 >> Nishant: Tulis tandukan? 609 00:34:29,710 --> 00:34:31,830 >> JASON Hirschhorn: Bagaimana saya mendapatkan ia berwarna? 610 00:34:31,830 --> 00:34:34,060 >> [Suara INTERPOSING] 611 00:34:34,060 --> 00:34:35,040 >> Nishant: Bagaimana anda mendapat ia berwarna? 612 00:34:35,040 --> 00:34:38,060 >> JASON Hirschhorn: Bagaimana saya mewarnakan pengekodan? 613 00:34:38,060 --> 00:34:38,570 >> Nishant: Saya tidak tahu. 614 00:34:38,570 --> 00:34:38,830 Oh. 615 00:34:38,830 --> 00:34:39,389 Simpan. 616 00:34:39,389 --> 00:34:39,929 >> JASON Hirschhorn: Simpan. 617 00:34:39,929 --> 00:34:40,270 Ya. 618 00:34:40,270 --> 00:34:41,760 Saya perlu simpan sebagai. C. 619 00:34:41,760 --> 00:34:46,239 Jadi simpan pada desktop sebagai cp.c. 620 00:34:46,239 --> 00:34:47,280 Manis. 621 00:34:47,280 --> 00:34:51,199 Dan jika saya ingin mendapatkan gaya penuh mata, apa yang perlu saya 622 00:34:51,199 --> 00:34:53,085 termasuk di bahagian atas? 623 00:34:53,085 --> 00:34:58,390 >> Nishant: Anda boleh menulis nama, nama anda program, dan maksud yang 624 00:34:58,390 --> 00:34:59,640 program ini juga? 625 00:34:59,640 --> 00:35:08,400 626 00:35:08,400 --> 00:35:10,040 >> JASON Hirschhorn: Kelihatan baik. 627 00:35:10,040 --> 00:35:10,470 Cemerlang. 628 00:35:10,470 --> 00:35:12,940 Jadi anda telah mula kita mati dengan sempurna. 629 00:35:12,940 --> 00:35:13,720 # Termasuk - 630 00:35:13,720 --> 00:35:15,365 kami juga akan menulis - 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 Jadi saya fikir saya bersedia untuk pergi. 634 00:35:33,520 --> 00:35:38,003 Siapa yang mempunyai baris pertama kod bagi saya - atau baris pertama kod yang 635 00:35:38,003 --> 00:35:41,280 ia akan mengambil masa untuk memenuhi pertama kami komen di kod pseudo? 636 00:35:41,280 --> 00:35:41,985 Anda. 637 00:35:41,985 --> 00:35:48,780 >> PELAJAR 18: ia tidak Hendaklah int argc, dan kemudian char * argv? 638 00:35:48,780 --> 00:35:49,490 >> JASON Hirschhorn: Saya rasa anda betul. 639 00:35:49,490 --> 00:35:56,270 Mari kita menukarnya kepada int utama, paren terbuka, int argc, koma, char * argv? 640 00:35:56,270 --> 00:35:57,150 Seperti itu? 641 00:35:57,150 --> 00:35:57,410 >> PELAJAR 18: Kurungan. 642 00:35:57,410 --> 00:35:58,260 >> JASON Hirschhorn: Kurungan. 643 00:35:58,260 --> 00:35:59,860 Kurungan terbuka, kurungan rapat, ibu bapa dekat. 644 00:35:59,860 --> 00:36:00,240 Perfect. 645 00:36:00,240 --> 00:36:02,160 Sekarang saya boleh mengambil hujah baris arahan. 646 00:36:02,160 --> 00:36:02,430 OK. 647 00:36:02,430 --> 00:36:04,250 Pastikan kita diberi dua fail. 648 00:36:04,250 --> 00:36:07,905 Anda boleh memberi saya itu juga. 649 00:36:07,905 --> 00:36:09,180 >> PELAJAR 18: Jika argc - 650 00:36:09,180 --> 00:36:11,060 satu ini tidak sama 3. 651 00:36:11,060 --> 00:36:14,360 >> JASON Hirschhorn: Jika paren terbuka argc tidak sama 3? 652 00:36:14,360 --> 00:36:16,970 >> PELAJAR 18: Ya, anda kembali 1 atau apa-apa. 653 00:36:16,970 --> 00:36:17,460 >> JASON Hirschhorn: Maaf. 654 00:36:17,460 --> 00:36:19,120 >> PELAJAR 18: Pulang 1 atau apa-apa. 655 00:36:19,120 --> 00:36:20,270 >> JASON Hirschhorn: Kembali 1. 656 00:36:20,270 --> 00:36:22,230 OK? 657 00:36:22,230 --> 00:36:22,970 Besar. 658 00:36:22,970 --> 00:36:24,290 Buka kedua-dua fail. 659 00:36:24,290 --> 00:36:26,160 Siapa yang boleh membantu saya membuka kedua-dua gambar? 660 00:36:26,160 --> 00:36:28,125 Siapa yang tidak memberikan saya kod lagi? 661 00:36:28,125 --> 00:36:31,510 662 00:36:31,510 --> 00:36:32,320 Kurt? 663 00:36:32,320 --> 00:36:36,145 >> KURT: Jadi semua topi F-I-L-E sumber bintang. 664 00:36:36,145 --> 00:36:39,390 665 00:36:39,390 --> 00:36:40,920 >> JASON Hirschhorn: Saya akan untuk mengambil huruf hidup. 666 00:36:40,920 --> 00:36:41,570 Mereka adalah sejuk. 667 00:36:41,570 --> 00:36:42,716 Ia seperti Tumblr. 668 00:36:42,716 --> 00:36:44,610 >> PELAJAR 18: Sama fopen - 669 00:36:44,610 --> 00:36:46,612 >> JASON Hirschhorn: Sama fopen? 670 00:36:46,612 --> 00:36:49,870 >> PELAJAR 18: paren Terbuka, argv, kurungan terbuka. 671 00:36:49,870 --> 00:36:50,055 >> JASON Hirschhorn: Tunggu. 672 00:36:50,055 --> 00:36:50,240 Maaf. 673 00:36:50,240 --> 00:36:51,050 Paren terbuka. 674 00:36:51,050 --> 00:36:51,456 OK. 675 00:36:51,456 --> 00:36:53,080 >> PELAJAR 18: Yeah. 676 00:36:53,080 --> 00:36:55,110 Argv sub 1. 677 00:36:55,110 --> 00:36:55,860 >> JASON Hirschhorn: Pecahan 1? 678 00:36:55,860 --> 00:36:56,140 >> PELAJAR 18: Yeah. 679 00:36:56,140 --> 00:36:58,540 Argv kurungan terbuka 1 - 680 00:36:58,540 --> 00:36:59,730 ya. 681 00:36:59,730 --> 00:37:06,470 Dan kemudian koma, dan kemudian terbuka dua quote, r, petikan berganda, 682 00:37:06,470 --> 00:37:08,250 paren rapat, koma bertitik. 683 00:37:08,250 --> 00:37:09,450 >> JASON Hirschhorn: Sweet. 684 00:37:09,450 --> 00:37:10,950 Dan apa yang kira-kira satu yang lain? 685 00:37:10,950 --> 00:37:16,030 >> PELAJAR 18: Sangat serupa, tetapi sebaliknya S-R-C, anda akan memanggilnya D-S-T. 686 00:37:16,030 --> 00:37:17,060 >> JASON Hirschhorn: Oo! 687 00:37:17,060 --> 00:37:17,772 Saya suka itu. 688 00:37:17,772 --> 00:37:20,010 >> PELAJAR 18: Hanya D-S-T. Yeah. 689 00:37:20,010 --> 00:37:23,057 Dan kemudian argv, kurungan terbuka, 2. 690 00:37:23,057 --> 00:37:23,200 Yeah. 691 00:37:23,200 --> 00:37:26,720 Dan kemudian w bukan k. 692 00:37:26,720 --> 00:37:27,620 Yeah. 693 00:37:27,620 --> 00:37:29,630 >> JASON Hirschhorn: Great. 694 00:37:29,630 --> 00:37:31,360 Pasangan seterusnya baris. 695 00:37:31,360 --> 00:37:34,040 Juga, jika sesiapa mempunyai perkara untuk menambah garisan yang telah kami lakukan, anda boleh 696 00:37:34,040 --> 00:37:35,690 menambah mereka juga. 697 00:37:35,690 --> 00:37:37,520 Semak untuk memastikan tidak adalah NULL. 698 00:37:37,520 --> 00:37:41,450 Yang boleh memberikan saya kod saya perlu memenuhi bahawa garis kod pseudo? 699 00:37:41,450 --> 00:37:44,430 700 00:37:44,430 --> 00:37:45,870 Archer. 701 00:37:45,870 --> 00:37:58,645 >> Archer: Jika src sama setaraf NULL atau DST sama setaraf 702 00:37:58,645 --> 00:38:04,590 NULL, maka anda kembali - 703 00:38:04,590 --> 00:38:07,130 704 00:38:07,130 --> 00:38:07,976 >> JASON Hirschhorn: Apa? 705 00:38:07,976 --> 00:38:08,890 >> Archer: Kembali 2? 706 00:38:08,890 --> 00:38:09,760 >> JASON Hirschhorn: Kembali 2. 707 00:38:09,760 --> 00:38:14,400 Jadi jika paren terbuka src sama sama NULL, atau - 708 00:38:14,400 --> 00:38:15,590 apa sahaja yang thing's - paip? 709 00:38:15,590 --> 00:38:16,346 Paip? 710 00:38:16,346 --> 00:38:17,140 Kami akan memanggilnya paip. 711 00:38:17,140 --> 00:38:22,340 Paip, paip, DST sama setaraf NULL, kembali 2. 712 00:38:22,340 --> 00:38:23,900 OK? 713 00:38:23,900 --> 00:38:26,060 Sehingga kita keluar dari bait - 714 00:38:26,060 --> 00:38:29,820 kita jenis dilangkau lebih langkah ini dari sebahagian kod pseudo untuk pergi ke sini. 715 00:38:29,820 --> 00:38:31,970 >> Tetapi kita keluar dari bait - apa yang tidak bunyi yang seperti? 716 00:38:31,970 --> 00:38:34,680 Apakah jenis struktur C - 717 00:38:34,680 --> 00:38:36,160 tetapi saya tidak menggunakan struktur perkataan, kerana kita akan mula menggunakan 718 00:38:36,160 --> 00:38:37,350 bahawa dalam kes-kes lain - 719 00:38:37,350 --> 00:38:39,495 tetapi C alat tidak bunyi yang seperti? 720 00:38:39,495 --> 00:38:39,970 >> PELAJAR 19: gelung A. 721 00:38:39,970 --> 00:38:40,980 >> JASON Hirschhorn: gelung A. 722 00:38:40,980 --> 00:38:43,060 Bunyi seperti gelung. 723 00:38:43,060 --> 00:38:49,670 Jadi yang boleh memberikan saya baris pertama kod gelung yang betul di sini? 724 00:38:49,670 --> 00:38:56,320 725 00:38:56,320 --> 00:39:01,980 Anda juga boleh memilih jenis gelung yang anda mahu, jika anda memberikan saya 726 00:39:01,980 --> 00:39:03,215 baris ini kod. 727 00:39:03,215 --> 00:39:04,150 Terdapat tiga jenis. 728 00:39:04,150 --> 00:39:06,530 Anda mendapat untuk memilih. 729 00:39:06,530 --> 00:39:08,080 Saya cadangkan salah seorang daripada mereka. 730 00:39:08,080 --> 00:39:08,410 Avi. 731 00:39:08,410 --> 00:39:09,230 Yang mana satu yang anda mahu? 732 00:39:09,230 --> 00:39:09,960 >> AVI: UNTUK. 733 00:39:09,960 --> 00:39:11,460 >> JASON Hirschhorn: UNTUK. 734 00:39:11,460 --> 00:39:15,180 >> AVI: INT i sama dengan sifar. 735 00:39:15,180 --> 00:39:17,360 >> JASON Hirschhorn: OK. 736 00:39:17,360 --> 00:39:18,570 >> AVI: Bahagian ini saya tidak pasti tentang. 737 00:39:18,570 --> 00:39:29,080 Tetapi saya adalah kurang daripada saiz sumber bintang? 738 00:39:29,080 --> 00:39:31,128 Saya tidak pasti itu. 739 00:39:31,128 --> 00:39:32,580 >> JASON Hirschhorn: OK. 740 00:39:32,580 --> 00:39:35,870 >> AVI: Kerana anda mahu saiz fail yang, bukan? 741 00:39:35,870 --> 00:39:41,090 >> JASON Hirschhorn: Jadi ini mungkin tidak akan memberi kita saiz sebenar 742 00:39:41,090 --> 00:39:43,010 memfailkan di bait. 743 00:39:43,010 --> 00:39:47,680 Jadi apa lagi yang kita boleh buat? 744 00:39:47,680 --> 00:39:48,810 Apakah satu lagi jenis gelung? 745 00:39:48,810 --> 00:39:50,180 Atau kita berpegang dengan gelung UNTUK ini? 746 00:39:50,180 --> 00:39:55,350 747 00:39:55,350 --> 00:39:57,900 >> PELAJAR 20: Bolehkah anda melakukan gelung SELAGI? 748 00:39:57,900 --> 00:40:01,350 Dan kemudian, apa yang anda akan lakukan adalah you'd - 749 00:40:01,350 --> 00:40:03,930 kerana kita mempunyai char * untuk fail. 750 00:40:03,930 --> 00:40:07,950 Jadi, jika kita hanya menyimpan menokok bahawa sehingga kita akan dapati watak NULL di 751 00:40:07,950 --> 00:40:08,500 akhir itu? 752 00:40:08,500 --> 00:40:11,130 Atau tidak, adalah bahawa tidak bagaimana fail berfungsi? 753 00:40:11,130 --> 00:40:14,300 >> JASON Hirschhorn: Oleh itu, kita boleh menyimpan menokok char * 754 00:40:14,300 --> 00:40:16,340 sehingga kita dapati NULL yang - 755 00:40:16,340 --> 00:40:18,580 >> PELAJAR 20: Pada dasarnya menyimpan akan watak oleh watak sehingga kita mencapai 756 00:40:18,580 --> 00:40:21,250 akhir fail. 757 00:40:21,250 --> 00:40:21,600 >> JASON Hirschhorn: Ya. 758 00:40:21,600 --> 00:40:22,560 Jadi itulah yang kita mahu lakukan. 759 00:40:22,560 --> 00:40:24,545 Kami mahu terus membaca, watak oleh watak, sehingga kita sampai ke 760 00:40:24,545 --> 00:40:25,080 akhir fail. 761 00:40:25,080 --> 00:40:25,375 >> PELAJAR 20: Yeah. 762 00:40:25,375 --> 00:40:25,860 Cari - 763 00:40:25,860 --> 00:40:28,540 apa yang akhir atau tanda berhenti pada akhir fail teks. 764 00:40:28,540 --> 00:40:28,620 >> JASON Hirschhorn: OK. 765 00:40:28,620 --> 00:40:30,140 Oleh itu, apabila kita sampai ke akhir fail - bagaimana kita tahu kita telah mencapai 766 00:40:30,140 --> 00:40:33,200 akhir gambar? 767 00:40:33,200 --> 00:40:34,710 Jika saya memanggil - 768 00:40:34,710 --> 00:40:35,910 jadi mari kita langkah ke belakang. 769 00:40:35,910 --> 00:40:37,550 Apakah fungsi? 770 00:40:37,550 --> 00:40:39,360 Mari kita pergi ke baris ini di sini. 771 00:40:39,360 --> 00:40:40,630 Baca dari fail sumber. 772 00:40:40,630 --> 00:40:41,880 Yang boleh memberikan saya bahawa baris kod? 773 00:40:41,880 --> 00:40:45,592 774 00:40:45,592 --> 00:40:47,590 >> PELAJAR 21: Fscanf? 775 00:40:47,590 --> 00:40:49,110 >> JASON Hirschhorn: Fscanf. 776 00:40:49,110 --> 00:40:49,510 OK. 777 00:40:49,510 --> 00:40:52,240 Bagaimana jika saya ingin membaca, sangat khusus, satu bait? 778 00:40:52,240 --> 00:40:55,012 779 00:40:55,012 --> 00:40:56,860 >> PELAJAR 21: Saya tidak tahu. 780 00:40:56,860 --> 00:40:57,110 >> JASON Hirschhorn: OK. 781 00:40:57,110 --> 00:40:59,380 Malah lebih mudah daripada fscanf - apa yang - 782 00:40:59,380 --> 00:41:01,890 Saya mahu membaca dari fail sumber? 783 00:41:01,890 --> 00:41:03,720 Baca dari fail sumber. 784 00:41:03,720 --> 00:41:04,850 Apakah fungsi - yeah. 785 00:41:04,850 --> 00:41:05,380 >> PELAJAR 22: Ia fread? 786 00:41:05,380 --> 00:41:06,070 >> JASON Hirschhorn: Fread. 787 00:41:06,070 --> 00:41:07,550 Saya rasa mari kita tetap dengan yang satu untuk sekarang. 788 00:41:07,550 --> 00:41:10,380 789 00:41:10,380 --> 00:41:13,650 Apakah jenis hujah adakah fread mengambil? 790 00:41:13,650 --> 00:41:17,410 >> PELAJAR 22: Mungkin jenis fail, dan kemudian lokasi dalam fail? 791 00:41:17,410 --> 00:41:19,550 >> JASON Hirschhorn: Apa yang saya boleh menaip di sini untuk memikirkan apa jenis hujah 792 00:41:19,550 --> 00:41:20,950 fread mengambil? 793 00:41:20,950 --> 00:41:23,710 >> PELAJAR PELBAGAI: fread Man. 794 00:41:23,710 --> 00:41:24,740 >> JASON Hirschhorn: Man fread dan fwrite. 795 00:41:24,740 --> 00:41:25,980 Kelihatan seperti mereka melepak bersama-sama. 796 00:41:25,980 --> 00:41:29,589 Jadi fread mengambil berapa banyak hujah-hujah? 797 00:41:29,589 --> 00:41:30,920 >> PELAJAR 23: Empat. 798 00:41:30,920 --> 00:41:32,690 >> JASON Hirschhorn: Ia mengambil empat hujah. 799 00:41:32,690 --> 00:41:41,100 Ia mengambil penunjuk, saiz, dan bahawa perkara, yang pelik, dan beberapa fail. 800 00:41:41,100 --> 00:41:42,000 OK? 801 00:41:42,000 --> 00:41:43,990 Mari kita membaca mengenainya di sini. 802 00:41:43,990 --> 00:41:49,370 "Fungsi fread berbunyi n memb elemen data, setiap bait saiz 803 00:41:49,370 --> 00:41:53,840 panjang, dari aliran yang ditunjukkan oleh aliran, menyimpannya di lokasi yang 804 00:41:53,840 --> 00:41:56,170 diberikan oleh penunjuk. " 805 00:41:56,170 --> 00:41:57,960 >> Jadi empat hujah. 806 00:41:57,960 --> 00:42:04,510 Kenapa saya tidak hanya menyalin ini, dan tampalkannya di sini. 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 Jadi yang boleh mula mengisi hujah-hujah ini untuk saya? 810 00:42:13,673 --> 00:42:15,840 Avi. 811 00:42:15,840 --> 00:42:17,720 >> AVI: Keluarkan tidak sah itu. 812 00:42:17,720 --> 00:42:20,530 Letakkan hanya src. 813 00:42:20,530 --> 00:42:23,142 Mengambil penunjuk dan bintang. 814 00:42:23,142 --> 00:42:26,102 Letakkan src. 815 00:42:26,102 --> 00:42:27,050 Kemudian - 816 00:42:27,050 --> 00:42:28,500 >> JASON Hirschhorn: Jadi saya akan berhenti anda di sana, kerana itulah tidak betul. 817 00:42:28,500 --> 00:42:32,590 818 00:42:32,590 --> 00:42:34,710 Anda betul dengan src, tetapi mana src harus pergi? 819 00:42:34,710 --> 00:42:35,960 >> [Suara INTERPOSING] 820 00:42:35,960 --> 00:42:38,976 821 00:42:38,976 --> 00:42:41,610 >> JASON Hirschhorn: Ia harus pergi di sini. 822 00:42:41,610 --> 00:42:43,790 Itulah yang src - src kami adalah jenis. 823 00:42:43,790 --> 00:42:44,610 Mari kita lihat di sini. 824 00:42:44,610 --> 00:42:49,610 Ini adalah meminta sejenis FILE *, kita sebenarnya biasanya melihat mereka seperti itu. 825 00:42:49,610 --> 00:42:57,630 Jadi ini adalah meminta hujah daripada menaip FILE * dipanggil aliran yang src. 826 00:42:57,630 --> 00:42:58,480 OK? 827 00:42:58,480 --> 00:43:00,410 >> Apa saiz perkara lakukan kita mahu membaca? 828 00:43:00,410 --> 00:43:03,340 Saya memberikan anda ini dalam Penerangan masalah. 829 00:43:03,340 --> 00:43:04,370 >> PELAJAR 24: Satu bait pada satu masa. 830 00:43:04,370 --> 00:43:05,340 >> JASON Hirschhorn: Satu bait. 831 00:43:05,340 --> 00:43:08,205 Bagaimana besar adalah bait? 832 00:43:08,205 --> 00:43:11,642 Saiznya adalah dalam bait, jadi apa boleh saya meletakkan di sana? 833 00:43:11,642 --> 00:43:12,910 >> PELAJAR 25: Satu. 834 00:43:12,910 --> 00:43:14,730 >> JASON Hirschhorn: Satu. 835 00:43:14,730 --> 00:43:17,020 Betul. 836 00:43:17,020 --> 00:43:19,940 Saiznya adalah dalam unit bait, jadi 1 adalah 1 bait. 837 00:43:19,940 --> 00:43:22,284 Berapa banyak yang saya mahu untuk membaca pada satu masa. 838 00:43:22,284 --> 00:43:23,520 >> PELAJAR 26: Satu? 839 00:43:23,520 --> 00:43:24,270 >> JASON Hirschhorn: Satu perkara. 840 00:43:24,270 --> 00:43:28,540 Saya mahu membaca satu perkara saiz 1, satu gigitan pada satu masa. 841 00:43:28,540 --> 00:43:32,110 Dan di mana saya meletakkan ia, apabila saya membacanya? 842 00:43:32,110 --> 00:43:35,050 843 00:43:35,050 --> 00:43:36,510 >> PELAJAR 27: Destinasi? 844 00:43:36,510 --> 00:43:39,270 >> JASON Hirschhorn: Jadi saya tidak boleh meletakkan ia terus ke destinasi. 845 00:43:39,270 --> 00:43:40,800 >> PELAJAR 28: Kamu akan meletakkan ke dalam penunjuk ketiga? 846 00:43:40,800 --> 00:43:41,780 >> PELAJAR 27: Untuk destinasi. 847 00:43:41,780 --> 00:43:42,270 >> JASON Hirschhorn: OK. 848 00:43:42,270 --> 00:43:42,630 Yeah. 849 00:43:42,630 --> 00:43:46,820 >> PELAJAR 29: Anda boleh mengisytiharkan sesuatu untuk bertindak sebagai penyimpanan sementara sebelum ini. 850 00:43:46,820 --> 00:43:47,350 >> JASON Hirschhorn: OK. 851 00:43:47,350 --> 00:43:50,080 Berikan saya itu. 852 00:43:50,080 --> 00:43:53,930 >> PELAJAR 29: Satu lagi fail penunjuk, mungkin? 853 00:43:53,930 --> 00:43:54,220 >> JASON Hirschhorn: OK. 854 00:43:54,220 --> 00:43:55,585 Jadi ini adalah bintang tidak sah - 855 00:43:55,585 --> 00:43:57,750 ia adalah satu jenis tidak sah bintang, jadi ia tidak perlu menjadi penunjuk fail. 856 00:43:57,750 --> 00:44:02,520 Dan jika saya membaca satu bait, di mana akan menjadi tempat yang baik 857 00:44:02,520 --> 00:44:03,850 untuk menyimpan satu bait? 858 00:44:03,850 --> 00:44:04,660 >> PELAJAR 29: Pelbagai? 859 00:44:04,660 --> 00:44:05,770 >> JASON Hirschhorn: Pelbagai. 860 00:44:05,770 --> 00:44:07,730 OK. 861 00:44:07,730 --> 00:44:14,040 Dan apa lagi yang sesuatu yang hanya saiz satu bait? 862 00:44:14,040 --> 00:44:16,980 863 00:44:16,980 --> 00:44:18,060 >> PELAJAR 30: A char *? 864 00:44:18,060 --> 00:44:18,530 >> PELAJAR 29: Yeah. 865 00:44:18,530 --> 00:44:19,880 >> JASON Hirschhorn: char A * bukan satu bait. 866 00:44:19,880 --> 00:44:20,440 >> PELAJAR 29: char A. 867 00:44:20,440 --> 00:44:21,810 >> JASON Hirschhorn: char adalah satu bait. 868 00:44:21,810 --> 00:44:22,920 Betul? 869 00:44:22,920 --> 00:44:26,740 Jadi mari kita memanggil penampan ini adalah generik Nama yang digunakan untuk perkara-perkara ini untuk menyimpan 870 00:44:26,740 --> 00:44:27,910 sesuatu yang buat sementara waktu. 871 00:44:27,910 --> 00:44:30,880 Jadi saya mewujudkan penampan. 872 00:44:30,880 --> 00:44:31,150 Betul? 873 00:44:31,150 --> 00:44:32,990 Tetapi ia mengambil kekosongan *. 874 00:44:32,990 --> 00:44:38,660 Jadi mungkin anda betul, bahawa ia perlu menjadi penampan saiz 0. 875 00:44:38,660 --> 00:44:41,070 Jadi ia menyimpan satu - 876 00:44:41,070 --> 00:44:41,280 betul. 877 00:44:41,280 --> 00:44:43,560 >> Oleh kerana hak ini di sini - char penampan adalah watak, tetapi 878 00:44:43,560 --> 00:44:45,110 ini mengambil masa kekosongan * - 879 00:44:45,110 --> 00:44:45,870 penunjuk. 880 00:44:45,870 --> 00:44:50,640 Jadi saya boleh melakukan ini dan kini penampan adalah penunjuk. 881 00:44:50,640 --> 00:44:53,214 Apa lagi yang saya boleh buat? 882 00:44:53,214 --> 00:44:55,775 >> PELAJAR 31: Letakkan bintang sebelah char. 883 00:44:55,775 --> 00:44:58,380 >> JASON Hirschhorn: Saya boleh menciptanya char *. 884 00:44:58,380 --> 00:45:00,216 OK. 885 00:45:00,216 --> 00:45:03,131 Apa yang satu lagi perkara yang saya boleh buat? 886 00:45:03,131 --> 00:45:04,050 Atau mari kita pergi dengan yang satu ini. 887 00:45:04,050 --> 00:45:05,740 Char * buffer, jadi apa saya meletakkan di sini? 888 00:45:05,740 --> 00:45:08,290 889 00:45:08,290 --> 00:45:09,310 >> PELAJAR 31: Penampan. 890 00:45:09,310 --> 00:45:10,560 >> JASON Hirschhorn: Penampan. 891 00:45:10,560 --> 00:45:12,640 892 00:45:12,640 --> 00:45:14,500 Penampan adalah penunjuk kepada char a. 893 00:45:14,500 --> 00:45:19,480 Dan di lokasi itu, kami meletakkan satu bait daripada sesuatu yang kita telah membaca. 894 00:45:19,480 --> 00:45:19,980 Yeah. 895 00:45:19,980 --> 00:45:20,700 Avi. 896 00:45:20,700 --> 00:45:21,230 >> AVI: Hanya satu soalan cepat. 897 00:45:21,230 --> 00:45:24,440 Adakah anda ingin malloc buffer? 898 00:45:24,440 --> 00:45:25,930 >> JASON Hirschhorn: Siapa yang boleh menjawab soalan itu? 899 00:45:25,930 --> 00:45:30,210 >> PELAJAR 32: Nah, itu tidak terlalu mata kepada apa-apa sekarang, jadi - 900 00:45:30,210 --> 00:45:32,610 >> JASON Hirschhorn: Tetapi adakah kita mahu malloc ia? 901 00:45:32,610 --> 00:45:35,600 >> PELAJAR 32: Sekiranya anda melakukannya bahawa cara, saya rasa, yeah, kerana anda perlukan 902 00:45:35,600 --> 00:45:36,990 beberapa tempat untuk ia menunjukkan. 903 00:45:36,990 --> 00:45:38,350 >> JASON Hirschhorn: Adakah kita perlu malloc ia? 904 00:45:38,350 --> 00:45:40,580 >> PELAJAR 33: Jika anda akan menggunakannya di luar gelung. 905 00:45:40,580 --> 00:45:42,524 >> JASON Hirschhorn: Adakah kita akan menggunakannya di luar gelung? 906 00:45:42,524 --> 00:45:44,392 >> PELAJAR 34: Ya. 907 00:45:44,392 --> 00:45:44,860 >> PELAJAR 35: Tunggu. 908 00:45:44,860 --> 00:45:46,980 Adakah kita mahu mengaku ia dalam gelung untuk di luar? 909 00:45:46,980 --> 00:45:50,100 >> JASON Hirschhorn: Jadi saya rasa kita mempunyai beberapa gelung SELAGI pseudo di sini bahawa kita 910 00:45:50,100 --> 00:45:51,950 cuba untuk memikirkan, bahawa kami tidak mendapat ke yet. 911 00:45:51,950 --> 00:45:54,710 912 00:45:54,710 --> 00:45:56,010 Kami tidak perlu malloc ia. 913 00:45:56,010 --> 00:45:59,310 Kami beroperasi dalam utama, ia hanya akan yang akan digunakan di dalam gelung ini. 914 00:45:59,310 --> 00:46:00,540 Ia tidak perlu wujud di luar ini. 915 00:46:00,540 --> 00:46:02,340 >> Jadi ia boleh menjadi satu pembolehubah tempatan. 916 00:46:02,340 --> 00:46:03,925 Anda mempunyai penunjuk kepada pembolehubah tempatan. 917 00:46:03,925 --> 00:46:07,984 918 00:46:07,984 --> 00:46:09,590 >> PELAJAR 36: Tetapi ia tidak menunjuk ke apa-apa. 919 00:46:09,590 --> 00:46:11,540 >> JASON Hirschhorn: Tidak, ia bukan dimulakan untuk apa-apa. 920 00:46:11,540 --> 00:46:12,790 Tetapi kita tidak akan menggunakannya juga. 921 00:46:12,790 --> 00:46:15,300 Kami akan meletakkan sesuatu di dalam ia kali pertama kami menggunakannya. 922 00:46:15,300 --> 00:46:16,580 Jadi yang kelihatan OK. 923 00:46:16,580 --> 00:46:17,780 Oleh itu, kita tidak perlu malloc sini. 924 00:46:17,780 --> 00:46:19,360 Dan saya fikir ia OK sebagai adalah. 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 Kami mempunyai garis fread. 928 00:46:27,190 --> 00:46:28,490 Mari kita buat barisan yang seterusnya. 929 00:46:28,490 --> 00:46:32,984 >> Jika kita mahu menulis kepada fail, apa yang fungsi yang baik untuk menggunakan untuk berbuat demikian? 930 00:46:32,984 --> 00:46:33,770 >> PELAJAR 37: Fwrite? 931 00:46:33,770 --> 00:46:35,140 >> PELAJAR 38: Fprintf? 932 00:46:35,140 --> 00:46:36,010 >> JASON Hirschhorn: Fprintf adalah satu. 933 00:46:36,010 --> 00:46:37,260 Apa yang satu sama lain? 934 00:46:37,260 --> 00:46:37,680 >> PELAJAR 39: Fwrite. 935 00:46:37,680 --> 00:46:38,510 >> JASON Hirschhorn: Fwrite. 936 00:46:38,510 --> 00:46:41,250 Dan untuk tujuan kita, fwrite, yang kita lihat di sini, adalah 937 00:46:41,250 --> 00:46:42,500 mungkin pilihan yang lebih baik. 938 00:46:42,500 --> 00:46:51,970 939 00:46:51,970 --> 00:46:53,950 Ia mengambil empat hujah juga. 940 00:46:53,950 --> 00:46:57,570 Nishant, anda boleh memberikan saya hujah-hujah? 941 00:46:57,570 --> 00:47:00,570 >> Nishant: sedang Yang pertama ini menjadi penampan hanya. 942 00:47:00,570 --> 00:47:02,210 >> JASON Hirschhorn: OK. 943 00:47:02,210 --> 00:47:06,752 >> Nishant: Yang kedua ini hanya akan menjadi 1. 944 00:47:06,752 --> 00:47:09,510 Satu pertiga akan menjadi 1. 945 00:47:09,510 --> 00:47:11,470 Dan yang keempat akan menjadi DST. 946 00:47:11,470 --> 00:47:18,010 947 00:47:18,010 --> 00:47:19,550 >> JASON Hirschhorn: Ada sesiapa yang sebarang soalan mengenai garis itu? 948 00:47:19,550 --> 00:47:28,370 949 00:47:28,370 --> 00:47:29,130 Yang kelihatan baik. 950 00:47:29,130 --> 00:47:29,590 OK. 951 00:47:29,590 --> 00:47:34,250 Jadi kini ia kelihatan seperti satu perkara yang kita hilang - sebenarnya, mari kita menulis 952 00:47:34,250 --> 00:47:35,090 ini baris terakhir. 953 00:47:35,090 --> 00:47:36,300 Menutup fail. 954 00:47:36,300 --> 00:47:38,880 Yang boleh menyelesaikan kita sehingga bertulis kedua-dua baris terakhir? 955 00:47:38,880 --> 00:47:39,120 Ya. 956 00:47:39,120 --> 00:47:39,850 Maaf, apa nama anda? 957 00:47:39,850 --> 00:47:40,580 >> LUCY: Lucy. 958 00:47:40,580 --> 00:47:41,580 >> JASON Hirschhorn: Lucy. 959 00:47:41,580 --> 00:47:47,560 >> LUCY: src Fclose dan kemudian destinasi fclose. 960 00:47:47,560 --> 00:47:52,430 >> JASON Hirschhorn: Fclose, paren terbuka, src, paren rapat, koma bertitik. 961 00:47:52,430 --> 00:47:53,680 Dan fclose - 962 00:47:53,680 --> 00:47:57,560 963 00:47:57,560 --> 00:47:58,090 yeah? 964 00:47:58,090 --> 00:48:01,710 >> LUCY: kurungan Terbuka, DST dan kemudian koma bertitik. 965 00:48:01,710 --> 00:48:02,520 >> JASON Hirschhorn: Great. 966 00:48:02,520 --> 00:48:04,338 Dan apa yang perlu saya masukkan pada akhir? 967 00:48:04,338 --> 00:48:05,210 >> LUCY: Kembali 0. 968 00:48:05,210 --> 00:48:05,570 >> JASON Hirschhorn: Kembali 0. 969 00:48:05,570 --> 00:48:06,820 Adakah saya perlu? 970 00:48:06,820 --> 00:48:10,560 971 00:48:10,560 --> 00:48:12,590 Hanya satu soalan. 972 00:48:12,590 --> 00:48:14,957 Adakah kita perlu termasuk pulangan 0? 973 00:48:14,957 --> 00:48:16,240 >> PELAJAR PELBAGAI: No 974 00:48:16,240 --> 00:48:16,430 >> JASON Hirschhorn: No 975 00:48:16,430 --> 00:48:18,090 Utama melakukannya secara automatik jika anda sampai ke akhir. 976 00:48:18,090 --> 00:48:20,580 Tetapi saya fikir ia adalah baik untuk termasuk ia dengan jelas. 977 00:48:20,580 --> 00:48:23,860 Terutamanya apabila kita kembali lain perkara sepanjang program tersebut. 978 00:48:23,860 --> 00:48:24,810 OK. 979 00:48:24,810 --> 00:48:26,230 Ini adalah apa yang kita hilang - 980 00:48:26,230 --> 00:48:28,520 SELAGI apa? 981 00:48:28,520 --> 00:48:31,630 Siapakah yang boleh memikirkan beberapa - 982 00:48:31,630 --> 00:48:35,240 mempunyai beberapa rasa apa perkara yang boleh pergi di sana? 983 00:48:35,240 --> 00:48:37,350 Walaupun ia hanya dalam beberapa kod pseudo seperti bahasa? 984 00:48:37,350 --> 00:48:41,330 >> Apakah kita benar-benar - apa yang kita mahu pergi sehingga? 985 00:48:41,330 --> 00:48:41,980 Ya, Lucy. 986 00:48:41,980 --> 00:48:43,240 >> LUCY: Hujung fail. 987 00:48:43,240 --> 00:48:44,990 >> JASON Hirschhorn: Hujung fail. 988 00:48:44,990 --> 00:48:49,280 Jadi, apa yang anda maksudkan dengan akhir fail? 989 00:48:49,280 --> 00:48:50,955 >> LUCY: Sebaik sahaja anda sampai ke akhir fail tersebut, berhenti. 990 00:48:50,955 --> 00:48:51,240 >> JASON Hirschhorn: OK. 991 00:48:51,240 --> 00:48:53,460 Jadi sebaik sahaja kami sampai ke akhir fail. 992 00:48:53,460 --> 00:48:56,893 Bagaimana kita tahu apabila kita telah mencapai akhir fail? 993 00:48:56,893 --> 00:48:59,900 >> PELAJAR 40: Saya rasa penampan akan ditetapkan untuk NULL. 994 00:48:59,900 --> 00:49:01,885 >> PELAJAR 41: Penampan diisytiharkan di dalam gelung. 995 00:49:01,885 --> 00:49:03,670 >> JASON Hirschhorn: Jadi anda berfikir penampan akan bersedia untuk NULL. 996 00:49:03,670 --> 00:49:05,850 Mengapa penampan ditetapkan untuk batal? 997 00:49:05,850 --> 00:49:10,420 >> PELAJAR 40: Kerana apabila anda fread, anda cuba untuk meletakkan 998 00:49:10,420 --> 00:49:13,528 apa-apa ke dalam buffer. 999 00:49:13,528 --> 00:49:13,980 >> JASON Hirschhorn: OK. 1000 00:49:13,980 --> 00:49:15,550 Jadi anda berfikir fread - 1001 00:49:15,550 --> 00:49:19,000 apabila kita telah mencapai akhir fail, apa yang fread akan lakukan? 1002 00:49:19,000 --> 00:49:21,230 Saya fikir itu soalan kita perlu memikirkan. 1003 00:49:21,230 --> 00:49:21,960 Apakah fread lakukan? 1004 00:49:21,960 --> 00:49:25,640 Adakah ia meletakkan NULL dalam buffer, atau ia melakukan sesuatu yang lain? 1005 00:49:25,640 --> 00:49:27,510 Bagaimana kita boleh memikirkan apa yang ia? 1006 00:49:27,510 --> 00:49:28,190 >> PELAJAR 42: Man. 1007 00:49:28,190 --> 00:49:28,810 >> JASON Hirschhorn: Man. 1008 00:49:28,810 --> 00:49:32,280 Jadi mari kita lihat di sini. 1009 00:49:32,280 --> 00:49:34,000 Kembali nilai. 1010 00:49:34,000 --> 00:49:39,620 Pada kejayaan, fread dan fwrite mengembalikan beberapa item dibaca atau ditulis. 1011 00:49:39,620 --> 00:49:43,700 Nombor ini sama bilangan bait dipindahkan hanya apabila saiz ialah 1. 1012 00:49:43,700 --> 00:49:47,780 Jika ralat berlaku, atau akhir file dicapai, nilai pulangan adalah 1013 00:49:47,780 --> 00:49:51,490 kiraan item pendek atau 0. 1014 00:49:51,490 --> 00:49:57,860 >> Jadi untuk tujuan kita, jika mencapai fread akhir fail tersebut, dan membaca dari 1015 00:49:57,860 --> 00:50:02,100 akhir fail, ada apa yang tinggal membaca, apa yang ia akan kembali? 1016 00:50:02,100 --> 00:50:03,290 >> PELAJAR 43: Zero? 1017 00:50:03,290 --> 00:50:04,540 >> JASON Hirschhorn: Apa? 1018 00:50:04,540 --> 00:50:05,300 >> PELAJAR 43: Zero? 1019 00:50:05,300 --> 00:50:05,690 >> JASON Hirschhorn: Zero. 1020 00:50:05,690 --> 00:50:06,940 Ia akan kembali sifar. 1021 00:50:06,940 --> 00:50:09,360 1022 00:50:09,360 --> 00:50:13,010 Oleh itu, kita tahu bahawa fread, apabila kita telah sampai ke penghujung fail tersebut, akan 1023 00:50:13,010 --> 00:50:13,690 untuk kembali sifar. 1024 00:50:13,690 --> 00:50:17,460 Bagaimana kita boleh menggunakannya untuk keuntungan kita? 1025 00:50:17,460 --> 00:50:21,733 >> AVI: Anda boleh mengisytiharkan pembolehubah di luar gelung yang dipanggil cek. 1026 00:50:21,733 --> 00:50:27,040 Jika cek sama - 1027 00:50:27,040 --> 00:50:28,190 untuk sekarang - satu. 1028 00:50:28,190 --> 00:50:28,920 >> JASON Hirschhorn: OK. 1029 00:50:28,920 --> 00:50:38,050 >> AVI: Dan kemudian anda boleh meletakkan JIKA Penyataan selepas fread berkata jika 1030 00:50:38,050 --> 00:50:42,600 fread sama dengan sifar - 1031 00:50:42,600 --> 00:50:43,850 tidak. 1032 00:50:43,850 --> 00:50:46,002 1033 00:50:46,002 --> 00:50:47,252 >> JASON Hirschhorn: Siapa yang boleh membantu Avi keluar? 1034 00:50:47,252 --> 00:50:49,690 1035 00:50:49,690 --> 00:50:52,410 >> AVI: Apakah nilai dikembalikan oleh fread? 1036 00:50:52,410 --> 00:50:54,060 >> JASON Hirschhorn: Kami hanya pergi ke itu. 1037 00:50:54,060 --> 00:50:55,450 >> AVI: Bagaimana anda mewakilinya? 1038 00:50:55,450 --> 00:50:57,190 >> JASON Hirschhorn: Jadi ia kembali - mari kita mencari di sini - ia mengembalikan 1039 00:50:57,190 --> 00:50:59,340 size_t, yang pada dasarnya integer. 1040 00:50:59,340 --> 00:51:02,240 1041 00:51:02,240 --> 00:51:03,410 Jadi ia mengembalikan integer. 1042 00:51:03,410 --> 00:51:05,160 Dan dalam kes ini, ia akan kembali 1 atau 0 - 1043 00:51:05,160 --> 00:51:08,760 1 jika ia membaca satu perkara - satu bait, dan 0 jika kita telah mencapai akhir. 1044 00:51:08,760 --> 00:51:13,560 1045 00:51:13,560 --> 00:51:16,450 Jadi jika fread - 1046 00:51:16,450 --> 00:51:16,855 yeah? 1047 00:51:16,855 --> 00:51:20,330 >> PELAJAR 45: Tidak boleh anda hanya meletakkan penuh fread (buffer, 1, 1, src) ke dalam 1048 00:51:20,330 --> 00:51:21,660 manakala gelung? 1049 00:51:21,660 --> 00:51:26,510 >> JASON Hirschhorn: Jadi anda mencadangkan melakukan ini ke dalam sana? 1050 00:51:26,510 --> 00:51:27,600 >> [Suara INTERPOSING] 1051 00:51:27,600 --> 00:51:29,520 >> JASON Hirschhorn: Berpegang. 1052 00:51:29,520 --> 00:51:30,885 Jadi kita sedang memerangkap itu. 1053 00:51:30,885 --> 00:51:33,300 Jadi anda bercadang meletakkan fread ke sana? 1054 00:51:33,300 --> 00:51:35,457 Apa yang patut kita juga bergerak jika anda mahu berbuat demikian? 1055 00:51:35,457 --> 00:51:36,740 >> PELAJAR 45: penampan ini luar. 1056 00:51:36,740 --> 00:51:38,110 >> JASON Hirschhorn: Kami perlu juga bergerak ini di sini. 1057 00:51:38,110 --> 00:51:41,700 >> PELAJAR 45: Tetapi adakah yang sentiasa bergerak ke hadapan? 1058 00:51:41,700 --> 00:51:42,950 >> [Suara INTERPOSING] 1059 00:51:42,950 --> 00:51:46,540 1060 00:51:46,540 --> 00:51:47,470 >> JASON Hirschhorn: OK. 1061 00:51:47,470 --> 00:51:50,570 Jadi ini adalah apa yang Okshar dicadangkan. 1062 00:51:50,570 --> 00:51:51,930 Kami mewujudkan penampan kami. 1063 00:51:51,930 --> 00:51:57,020 Kami SELAGI fread, maka kita fwrite. 1064 00:51:57,020 --> 00:51:59,760 Pemikiran pada ini? 1065 00:51:59,760 --> 00:52:04,050 >> PELAJAR 46: hanya soalan saya, adakah ia sebenarnya melaksanakan fread arahan? 1066 00:52:04,050 --> 00:52:06,175 >> JASON Hirschhorn: Soalan Besar. 1067 00:52:06,175 --> 00:52:11,050 Apabila anda meletakkan panggilan fungsi di dalam keadaan, adakah itu 1068 00:52:11,050 --> 00:52:12,300 panggilan fungsi melaksanakan? 1069 00:52:12,300 --> 00:52:15,760 1070 00:52:15,760 --> 00:52:17,770 Kami telah melihat contoh-contoh ini sebelum ini. 1071 00:52:17,770 --> 00:52:24,900 1072 00:52:24,900 --> 00:52:25,660 Betul? 1073 00:52:25,660 --> 00:52:26,125 >> PELAJAR 46: OK. 1074 00:52:26,125 --> 00:52:26,590 Yeah. 1075 00:52:26,590 --> 00:52:30,140 Jadi ia melaksanakan. 1076 00:52:30,140 --> 00:52:31,790 >> JASON Hirschhorn: Kami telah melihat perkara-perkara seperti itu sebelum ini, di mana kita mempunyai 1077 00:52:31,790 --> 00:52:33,550 fungsi panggilan dalam syarat. 1078 00:52:33,550 --> 00:52:35,540 Adakah bahawa fungsi panggilan melaksanakan? 1079 00:52:35,540 --> 00:52:36,350 Ya. 1080 00:52:36,350 --> 00:52:37,410 Jadi jawapannya adalah ya. 1081 00:52:37,410 --> 00:52:41,010 Ini panggilan fungsi akan melaksanakan. 1082 00:52:41,010 --> 00:52:42,418 Tetapi sekali lagi, adalah yang kita mahu? 1083 00:52:42,418 --> 00:52:49,250 1084 00:52:49,250 --> 00:52:52,204 >> Apa yang salah satu cara kita boleh memikirkan jika ia adalah apa yang kita mahu? 1085 00:52:52,204 --> 00:52:53,470 >> PELAJAR PELBAGAI: Jalankan ia? 1086 00:52:53,470 --> 00:52:54,460 >> JASON Hirschhorn: Kita boleh menjalankannya. 1087 00:52:54,460 --> 00:52:57,500 Tetapi sebelum kita berbuat demikian, kita boleh juga sebab melalui ini. 1088 00:52:57,500 --> 00:52:57,920 Jika - 1089 00:52:57,920 --> 00:53:01,920 katakan kita ada satu bait dalam kami memfailkan, kita akan mendapat di sini, 1090 00:53:01,920 --> 00:53:02,660 kita akan mendapat kod ini. 1091 00:53:02,660 --> 00:53:03,620 Ini akan berjalan. 1092 00:53:03,620 --> 00:53:07,780 fread akan kembali satu bait dan menyimpannya dalam buffer. 1093 00:53:07,780 --> 00:53:11,290 Dan ini akan menilai kepada 1, betul, selepas dia kembali 1. 1094 00:53:11,290 --> 00:53:12,640 >> Jadi SELAGI 1. 1095 00:53:12,640 --> 00:53:15,325 Adakah ini bermakna kod di dalam gelung SELAGI akan melaksanakan? 1096 00:53:15,325 --> 00:53:15,453 >> PELAJAR 47: Yeah. 1097 00:53:15,453 --> 00:53:16,040 Ia adalah benar. 1098 00:53:16,040 --> 00:53:16,290 >> JASON Hirschhorn: Ya. 1099 00:53:16,290 --> 00:53:17,490 1 adalah benar. 1100 00:53:17,490 --> 00:53:18,240 Ia bukan 0. 1101 00:53:18,240 --> 00:53:20,360 Jadi kod di dalam di sini akan melaksanakan. 1102 00:53:20,360 --> 00:53:22,300 Oleh itu, kita akan menulis itu. 1103 00:53:22,300 --> 00:53:25,340 Kami akan kembali ke ini talian sekali lagi. 1104 00:53:25,340 --> 00:53:26,850 Sekarang kita mempunyai - 1105 00:53:26,850 --> 00:53:28,550 kami pada akhir fail kami. 1106 00:53:28,550 --> 00:53:30,980 Kita membaca dari akhir fail kita, kerana kita hanya mempunyai satu bait di dalamnya. 1107 00:53:30,980 --> 00:53:34,270 >> Fread mengembalikan 0, kedai-kedai sesuatu dalam buffer. 1108 00:53:34,270 --> 00:53:35,890 Saya secara jujur ​​tidak tahu apa ia menyimpan dalam buffer. 1109 00:53:35,890 --> 00:53:38,380 Kita mungkin boleh mencari untuk melihat apa yang dilakukan. 1110 00:53:38,380 --> 00:53:40,130 Bahawa saya secara jujur ​​tidak tahu. 1111 00:53:40,130 --> 00:53:43,090 Kita tidak tahu, yang peduli apa ia menyimpan dalam buffer? 1112 00:53:43,090 --> 00:53:44,010 Tetapi ia kembali 0. 1113 00:53:44,010 --> 00:53:45,440 Dan akan Walaupun 0 melaksanakan? 1114 00:53:45,440 --> 00:53:49,950 1115 00:53:49,950 --> 00:53:51,180 >> SELAGI 0 tidak akan melaksanakan. 1116 00:53:51,180 --> 00:53:54,030 Demikian maka kami akan turun ke bawah di sini. 1117 00:53:54,030 --> 00:53:58,870 Jadi mari kita mendapatkan tangan jika ini adalah kod yang kami perlu menjalankan, atau jika kita 1118 00:53:58,870 --> 00:54:00,140 perlu melakukan perubahan pertama. 1119 00:54:00,140 --> 00:54:02,180 Jadi, jika anda berfikir - anda perlu mengundi. 1120 00:54:02,180 --> 00:54:06,885 Jika anda fikir kita perlu menjalankan kod ini sebagai adalah, sila mengangkat tangan anda. 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 Ada satu - 1124 00:54:14,315 --> 00:54:17,260 adakah anda mempunyai soalan, kebimbangan? 1125 00:54:17,260 --> 00:54:18,080 Yeah. 1126 00:54:18,080 --> 00:54:21,240 >> PELAJAR 48: Selepas kita bergerak penampan di luar gelung, kita 1127 00:54:21,240 --> 00:54:22,670 perlu malloc ia? 1128 00:54:22,670 --> 00:54:23,310 >> JASON Hirschhorn: Soalan Besar. 1129 00:54:23,310 --> 00:54:26,670 Selepas kita bergerak penampan di luar gelung, kita perlu malloc ia? 1130 00:54:26,670 --> 00:54:28,400 Ini adalah soalan skop. 1131 00:54:28,400 --> 00:54:32,130 Jika kita memulakan penampan di luar gelung ini, ia akan wujud 1132 00:54:32,130 --> 00:54:33,534 di dalam gelung? 1133 00:54:33,534 --> 00:54:35,230 >> PELAJAR PELBAGAI: Ya. 1134 00:54:35,230 --> 00:54:35,580 >> JASON Hirschhorn: Ya. 1135 00:54:35,580 --> 00:54:40,100 Skop meliputi bahagian dalam gelung, dan, benar-benar, apa-apa di bawahnya di dalam 1136 00:54:40,100 --> 00:54:42,460 kod ini, termasuk perkara di dalam sini. 1137 00:54:42,460 --> 00:54:43,930 Oleh itu, kita tidak perlu malloc ia. 1138 00:54:43,930 --> 00:54:47,766 Ia adalah satu pembolehubah tempatan, dan skop masih termasuk gelung. 1139 00:54:47,766 --> 00:54:49,540 >> PELAJAR 49: Adakah kita perlu untuk membebaskannya? 1140 00:54:49,540 --> 00:54:51,770 >> JASON Hirschhorn: Adakah kita perlu penampan percuma? 1141 00:54:51,770 --> 00:54:53,860 >> PELAJAR 49: Ya, jika kita tidak malloc. 1142 00:54:53,860 --> 00:54:55,750 >> JASON Hirschhorn: Adakah kita perlu penampan percuma? 1143 00:54:55,750 --> 00:54:57,160 Tetapi tidak kita. 1144 00:54:57,160 --> 00:55:01,280 Sekali lagi, ia adalah pembolehubah tempatan, jadi kami tidak perlu untuk membebaskannya. 1145 00:55:01,280 --> 00:55:02,170 OK. 1146 00:55:02,170 --> 00:55:03,480 Mari kita lihat apa yang berlaku. 1147 00:55:03,480 --> 00:55:17,290 1148 00:55:17,290 --> 00:55:18,220 Jadi adalah tidak diisytiharkan. 1149 00:55:18,220 --> 00:55:20,830 Itulah yang sesuatu yang Marcus dicadangkan sebelum ini. 1150 00:55:20,830 --> 00:55:25,340 Jadi kita mempunyai ralat yang, penampan ubah adalah tidak diisytiharkan apabila digunakan di sini. 1151 00:55:25,340 --> 00:55:26,590 >> Bagaimana kita boleh menetapkan ini? 1152 00:55:26,590 --> 00:55:29,460 1153 00:55:29,460 --> 00:55:30,960 >> PELAJAR 50: Malloc ia? 1154 00:55:30,960 --> 00:55:31,770 >> PELAJAR 51: Sama NULL? 1155 00:55:31,770 --> 00:55:33,000 >> PELAJAR 52: Katakanlah penampan sama NULL. 1156 00:55:33,000 --> 00:55:34,250 >> JASON Hirschhorn: OK. 1157 00:55:34,250 --> 00:55:40,040 1158 00:55:40,040 --> 00:55:40,770 Kelihatan baik. 1159 00:55:40,770 --> 00:55:42,410 Kita ada sekarang. 1160 00:55:42,410 --> 00:55:45,630 Mari kita mencipta sesuatu untuk mencuba menyalin. 1161 00:55:45,630 --> 00:56:08,990 1162 00:56:08,990 --> 00:56:10,490 Oleh itu, kita mempunyai fail teks kita. 1163 00:56:10,490 --> 00:56:11,740 Bagaimana kita boleh menjalankan program ini? 1164 00:56:11,740 --> 00:56:14,140 1165 00:56:14,140 --> 00:56:15,472 Yeah. 1166 00:56:15,472 --> 00:56:22,230 >> PELAJAR 53: Anda boleh melakukan dot mengurangkan cp, test.txt. 1167 00:56:22,230 --> 00:56:25,140 Dan kemudian anda boleh menamakan fail lain yang ia akan menyimpan ke dalam. 1168 00:56:25,140 --> 00:56:25,510 >> JASON Hirschhorn: OK. 1169 00:56:25,510 --> 00:56:27,380 Kami akan memanggilnya out.txt. 1170 00:56:27,380 --> 00:56:28,630 Sejuk? 1171 00:56:28,630 --> 00:56:31,700 1172 00:56:31,700 --> 00:56:34,320 Seg bersalah. 1173 00:56:34,320 --> 00:56:35,570 Pemikiran pada seg bersalah itu? 1174 00:56:35,570 --> 00:56:40,900 1175 00:56:40,900 --> 00:56:41,390 Ini adalah besar. 1176 00:56:41,390 --> 00:56:45,040 Bagaimana kita boleh mengetahui di mana bersalah seg itu? 1177 00:56:45,040 --> 00:56:45,680 Apa? 1178 00:56:45,680 --> 00:56:45,990 >> PELAJAR 54: GDB. 1179 00:56:45,990 --> 00:56:47,240 >> JASON Hirschhorn: GDB. 1180 00:56:47,240 --> 00:56:51,400 1181 00:56:51,400 --> 00:56:55,300 Kami menjalankan Pra-Pemasangan dengan menulis Pra-Pemasangan dot slash, nama program kami. 1182 00:56:55,300 --> 00:56:57,020 Tiada hujah baris arahan sana. 1183 00:56:57,020 --> 00:56:59,570 Kami akan menetapkan takat putus di utama. 1184 00:56:59,570 --> 00:57:02,190 Jika saya ingin memulakan Pra-Pemasangan, apa yang saya lakukan? 1185 00:57:02,190 --> 00:57:02,730 >> PELAJAR 55: R. 1186 00:57:02,730 --> 00:57:08,910 >> JASON Hirschhorn: R. Kemudian apa? 1187 00:57:08,910 --> 00:57:09,400 >> PELAJAR 55: Hujah-hujah? 1188 00:57:09,400 --> 00:57:10,650 >> JASON Hirschhorn: Kemudian hujah baris arahan. 1189 00:57:10,650 --> 00:57:15,890 1190 00:57:15,890 --> 00:57:17,120 Mari kita berjalan melalui. 1191 00:57:17,120 --> 00:57:19,090 N hanya mengambil saya baris demi baris. 1192 00:57:19,090 --> 00:57:21,450 Saya akan pergi sehingga Saya mendapat bersalah seg saya. 1193 00:57:21,450 --> 00:57:22,700 Ada kesalahan seg saya. 1194 00:57:22,700 --> 00:57:24,960 1195 00:57:24,960 --> 00:57:27,875 Ia kelihatan seperti fread disebabkan bersalah seg saya. 1196 00:57:27,875 --> 00:57:30,570 1197 00:57:30,570 --> 00:57:32,770 Saya tahu fread disebabkan kesalahan seg saya, kerana itu adalah 1198 00:57:32,770 --> 00:57:34,950 line kita hanya dilaksanakan. 1199 00:57:34,950 --> 00:57:36,530 >> Dan satu-satunya perkara yang berlaku di garis yang - 1200 00:57:36,530 --> 00:57:37,520 dua perkara yang telah berlaku. 1201 00:57:37,520 --> 00:57:40,610 Fread akan, dan kemudian kami melakukan beberapa pemeriksaan SELAGI. 1202 00:57:40,610 --> 00:57:44,820 Saya sanggup bertaruh bahawa SELAGI yang memeriksa tidak menyebabkan kerosakan seg saya. 1203 00:57:44,820 --> 00:57:46,950 Kemungkinan besar, fread adalah menyebabkan kerosakan seg saya. 1204 00:57:46,950 --> 00:57:49,260 Saya juga melihat sesuatu di sini, memcopy. 1205 00:57:49,260 --> 00:57:50,500 >> Salinan ingatan. 1206 00:57:50,500 --> 00:57:53,820 Bunyi seperti memori bergerak dari satu lokasi ke lokasi yang lain. 1207 00:57:53,820 --> 00:57:56,890 Bunyi seperti sesuatu yang akan berlaku dalam fread, mungkin beberapa memori 1208 00:57:56,890 --> 00:57:58,910 bergerak dari sini ke sini. 1209 00:57:58,910 --> 00:58:01,740 1210 00:58:01,740 --> 00:58:03,860 Mari kita pergi melalui ini lagi. 1211 00:58:03,860 --> 00:58:06,900 Bagaimana saya memulakannya lebih dan menjalankannya lagi? 1212 00:58:06,900 --> 00:58:08,092 Yeah. 1213 00:58:08,092 --> 00:58:15,140 >> PELAJAR 56: Adakah anda perlu meletakkan satu Ampersand sebelum buffer? 1214 00:58:15,140 --> 00:58:17,800 >> JASON Hirschhorn: Jadi Ampersand sebelum penampan akan memberi saya alamat 1215 00:58:17,800 --> 00:58:22,330 penampan, yang merupakan satu char *. 1216 00:58:22,330 --> 00:58:25,250 Mari kita berjalan melalui masa ini satu lagi. 1217 00:58:25,250 --> 00:58:28,248 Bagaimana cara menguruskan melaluinya sekali lagi? 1218 00:58:28,248 --> 00:58:29,210 >> PELAJAR 57: Bolehkah anda hanya menaip jalankan lagi? 1219 00:58:29,210 --> 00:58:32,050 >> JASON Hirschhorn: Hanya taip jangka lagi. 1220 00:58:32,050 --> 00:58:33,415 Oleh itu, kita tidak akan melaksanakan baris ini. 1221 00:58:33,415 --> 00:58:36,250 1222 00:58:36,250 --> 00:58:39,240 Jadi penampan adalah penunjuk NULL. 1223 00:58:39,240 --> 00:58:40,490 Betul? 1224 00:58:40,490 --> 00:58:45,870 1225 00:58:45,870 --> 00:58:47,060 Ia menunjuk ke - mari kita lihat. 1226 00:58:47,060 --> 00:58:48,500 Jika kita mempunyai kita - 1227 00:58:48,500 --> 00:58:50,430 melukis gambar cepat ini. 1228 00:58:50,430 --> 00:58:53,500 Bolehkah semua orang melihat jika Saya menulis di sini? 1229 00:58:53,500 --> 00:59:02,890 >> Jadi dalam tindanan, kita mempunyai tempatan berubah dan ia dipanggil penimbal, dan 1230 00:59:02,890 --> 00:59:08,230 ia adalah penunjuk kepada char a. 1231 00:59:08,230 --> 00:59:10,325 Apa alamat adalah char ini di? 1232 00:59:10,325 --> 00:59:12,550 >> PELAJAR 58: 0x0. 1233 00:59:12,550 --> 00:59:13,400 >> JASON Hirschhorn: Betul. 1234 00:59:13,400 --> 00:59:14,200 Itulah yang ini. 1235 00:59:14,200 --> 00:59:17,600 Di sini, di dalam penimbal, disimpan 0x0. 1236 00:59:17,600 --> 00:59:20,480 Itulah apa yang kita ada - yang persediaan kita kecapi sekarang. 1237 00:59:20,480 --> 00:59:27,540 Jadi baris ini, fread, meletakkan sesuatu dari sumber mana? 1238 00:59:27,540 --> 00:59:30,560 Ke dalam kotak ini atau kotak ini? 1239 00:59:30,560 --> 00:59:31,060 Yang kotak? 1240 00:59:31,060 --> 00:59:33,290 Kiri kotak atau kotak yang betul? 1241 00:59:33,290 --> 00:59:34,750 Kotak betul. 1242 00:59:34,750 --> 00:59:38,440 >> Ia mengikuti penunjuk, dan meletakkannya di sini. 1243 00:59:38,440 --> 00:59:42,620 Apabila kita cuba dan memori sentuhan pada lokasi 0, apa yang kita dapat? 1244 00:59:42,620 --> 00:59:45,050 Satu kesalahan segmentasi. 1245 00:59:45,050 --> 00:59:46,550 Itulah kesilapan yang kita ada sekarang. 1246 00:59:46,550 --> 00:59:46,970 Yeah. 1247 00:59:46,970 --> 00:59:48,410 >> PELAJAR 59: Jangan anda mempunyai untuk meletakkan penampan bintang? 1248 00:59:48,410 --> 00:59:49,180 Atau tidak? 1249 00:59:49,180 --> 00:59:50,050 Untuk fread? 1250 00:59:50,050 --> 00:59:51,450 >> JASON Hirschhorn: Jadi fread mengambil penunjuk. 1251 00:59:51,450 --> 00:59:54,920 1252 00:59:54,920 --> 00:59:55,900 Jadi ia pas dalam buffer. 1253 00:59:55,900 --> 00:59:58,980 Dan kemudian ia akan de-rujukan di suatu tempat di dalam fread. 1254 00:59:58,980 --> 01:00:00,700 Tetapi sekali lagi, kita lihat, ia mengambil penunjuk. 1255 01:00:00,700 --> 01:00:02,560 Kami tidak perlu lulus ia penampan bintang. 1256 01:00:02,560 --> 01:00:05,350 Yang akan berlalu apa sahaja di sini. 1257 01:00:05,350 --> 01:00:07,980 Dan yang mungkin akan memberi kita satu kesilapan kerana kita de-rujukan itu. 1258 01:00:07,980 --> 01:00:08,150 >> Betul? 1259 01:00:08,150 --> 01:00:10,690 Apabila kita de-rujukan penunjuk ini, apabila kita cuba untuk mengakses lokasi ini, 1260 01:00:10,690 --> 01:00:13,140 kami mendapat kesilapan - kesalahan segmentasi kami. 1261 01:00:13,140 --> 01:00:15,800 Jadi - 1262 01:00:15,800 --> 01:00:16,690 oops. 1263 01:00:16,690 --> 01:00:19,090 Kita akan berhenti daripada Pra-Pemasangan. 1264 01:00:19,090 --> 01:00:20,160 Talian kami - 1265 01:00:20,160 --> 01:00:22,990 masalah kita - yang tepat di sini pada baris ini. 1266 01:00:22,990 --> 01:00:26,410 Dan ia masalah kerana garis ini. 1267 01:00:26,410 --> 01:00:31,780 >> Bagaimana kita boleh membuat kotak yang boleh diakses dalam fread. 1268 01:00:31,780 --> 01:00:31,980 Betul? 1269 01:00:31,980 --> 01:00:35,190 Kita perlu mewujudkan kotak yang satu bait besar, saiz char a. 1270 01:00:35,190 --> 01:00:38,590 Tetapi kita perlu kotak yang boleh diakses apabila fungsi melaksanakan. 1271 01:00:38,590 --> 01:00:39,390 Jadi di mana - 1272 01:00:39,390 --> 01:00:39,640 yeah. 1273 01:00:39,640 --> 01:00:40,440 Apa-apa idea? 1274 01:00:40,440 --> 01:00:43,615 >> PELAJAR 60: Hanya menetapkan ia sebagai apa-apa sifat rawak. 1275 01:00:43,615 --> 01:00:49,150 1276 01:00:49,150 --> 01:00:51,640 Lakukan setaraf penampan char watak. 1277 01:00:51,640 --> 01:00:53,795 Dan kemudian, apabila anda telah penampan di sana - 1278 01:00:53,795 --> 01:00:54,110 >> JASON Hirschhorn: Tunggu. 1279 01:00:54,110 --> 01:00:55,110 Char penampan? 1280 01:00:55,110 --> 01:00:55,880 Jadi tidak bintang? 1281 01:00:55,880 --> 01:00:56,390 >> PELAJAR 60: Yeah. 1282 01:00:56,390 --> 01:00:58,560 Mengambil bintang. 1283 01:00:58,560 --> 01:01:00,690 Sama watak rawak. 1284 01:01:00,690 --> 01:01:01,460 >> JASON Hirschhorn: OK. 1285 01:01:01,460 --> 01:01:02,420 Jadi memberi saya satu. 1286 01:01:02,420 --> 01:01:03,170 >> PELAJAR 60: Seperti atau sesuatu. 1287 01:01:03,170 --> 01:01:06,160 Dan kemudian apabila anda mempunyai penampan di sana, anda menggunakan - 1288 01:01:06,160 --> 01:01:06,420 >> PELAJAR 61: Bintang? 1289 01:01:06,420 --> 01:01:07,650 Oh tidak, Ampersand itu. 1290 01:01:07,650 --> 01:01:09,000 >> PELAJAR 60: Gunakan Ampersand itu. 1291 01:01:09,000 --> 01:01:09,470 >> JASON Hirschhorn: OK. 1292 01:01:09,470 --> 01:01:11,320 Dan apa yang kira-kira dalam fwrite? 1293 01:01:11,320 --> 01:01:14,150 >> PELAJAR 60: Gunakan Ampersand lagi. 1294 01:01:14,150 --> 01:01:14,320 >> JASON Hirschhorn: Baiklah. 1295 01:01:14,320 --> 01:01:20,970 Jadi idea anda, kami mewujudkan char dan meletakkan sesuatu di dalamnya, dan kemudian 1296 01:01:20,970 --> 01:01:22,612 menulis kepada char itu. 1297 01:01:22,612 --> 01:01:23,760 >> PELAJAR 60: Yeah. 1298 01:01:23,760 --> 01:01:25,916 >> JASON Hirschhorn: Apa yang orang berfikir? 1299 01:01:25,916 --> 01:01:27,770 >> PELAJAR 62: Ia berbelit. 1300 01:01:27,770 --> 01:01:28,460 >> JASON Hirschhorn: OK. 1301 01:01:28,460 --> 01:01:29,760 Mari kita menarik keluar. 1302 01:01:29,760 --> 01:01:35,720 Jadi kali ini, saya akan menarik ini di merah pada timbunan di sini, dan kemudian kita 1303 01:01:35,720 --> 01:01:36,410 akan mempunyai - 1304 01:01:36,410 --> 01:01:36,822 aduh! 1305 01:01:36,822 --> 01:01:38,060 Maaf. 1306 01:01:38,060 --> 01:01:45,930 Jadi kali ini kita mempunyai sesuatu yang dinamakan penampan, dan ia pada timbunan. 1307 01:01:45,930 --> 01:01:48,430 Betul? 1308 01:01:48,430 --> 01:01:51,520 Dan kita menyimpan di dalamnya, pada mulanya. 1309 01:01:51,520 --> 01:01:53,830 >> Maka kita mempunyai panggilan kami untuk fread. 1310 01:01:53,830 --> 01:02:01,300 Apa fread adakah ia mengambil bait dari fail dan kami meletakkannya di suatu tempat. 1311 01:02:01,300 --> 01:02:04,570 Ia meletakkan ia dalam apa jua yang perkara itu menunjuk ke. 1312 01:02:04,570 --> 01:02:09,130 Nah, sebelum kami alamat ini - 1313 01:02:09,130 --> 01:02:10,250 0x0. 1314 01:02:10,250 --> 01:02:13,349 Sekarang apa alamat yang kita ada? 1315 01:02:13,349 --> 01:02:14,650 >> PELAJAR 63: Apa sahaja alamat penampan adalah. 1316 01:02:14,650 --> 01:02:15,970 >> JASON Hirschhorn: Apa jua alamat penampan adalah. 1317 01:02:15,970 --> 01:02:22,370 Ia mungkin akan menjadi sesuatu seperti itu. 1318 01:02:22,370 --> 01:02:26,950 Mungkin akan bermula dengan b dan satu f, dan kemudian mempunyai enam lain 1319 01:02:26,950 --> 01:02:27,970 digit perenambelasan. 1320 01:02:27,970 --> 01:02:28,480 Tidak mengapa. 1321 01:02:28,480 --> 01:02:29,470 Sesetengah alamat. 1322 01:02:29,470 --> 01:02:31,410 Dan kita lulus alamat yang masuk 1323 01:02:31,410 --> 01:02:34,790 >> Dan kita akan meletakkan satu kami perkara bait di alamat itu. 1324 01:02:34,790 --> 01:02:38,470 Oleh itu, kita akan meletakkan satu kami perkara di dalam bait di sini. 1325 01:02:38,470 --> 01:02:40,800 Dan kemudian kita akan menulis dari apa yang pernah di dalam sini. 1326 01:02:40,800 --> 01:02:43,425 1327 01:02:43,425 --> 01:02:45,380 Adakah sesiapa mempunyai apa-apa soalan tentang itu? 1328 01:02:45,380 --> 01:02:50,990 1329 01:02:50,990 --> 01:02:54,690 Yang difikirkan kod ini akan berfungsi? 1330 01:02:54,690 --> 01:02:56,020 >> Mengangkat tangan anda jika anda berfikir kod ini akan berfungsi. 1331 01:02:56,020 --> 01:02:57,270 Anda perlu mengambil pendirian yang. 1332 01:02:57,270 --> 01:03:00,670 1333 01:03:00,670 --> 01:03:02,500 Dan yang difikirkan kod ini tidak akan berfungsi? 1334 01:03:02,500 --> 01:03:04,610 Mengangkat tangan anda. 1335 01:03:04,610 --> 01:03:06,750 Semua orang lagi yang perlu menjadi mengangkat tangan mereka. 1336 01:03:06,750 --> 01:03:07,670 OK. 1337 01:03:07,670 --> 01:03:09,390 Michael, di mana anda berdiri? 1338 01:03:09,390 --> 01:03:10,680 >> MICHAEL: Saya tidak boleh membuat keputusan. 1339 01:03:10,680 --> 01:03:12,070 Jenis di tengah-tengah. 1340 01:03:12,070 --> 01:03:12,736 >> JASON Hirschhorn: Anda di tengah-tengah. 1341 01:03:12,736 --> 01:03:13,092 Memilih satu. 1342 01:03:13,092 --> 01:03:14,400 >> MICHAEL: Saya akan beriman dan mengatakan ia akan berfungsi. 1343 01:03:14,400 --> 01:03:14,660 >> JASON Hirschhorn: OK. 1344 01:03:14,660 --> 01:03:16,047 Anda akan beriman dan mengatakan ia berfungsi? 1345 01:03:16,047 --> 01:03:26,490 1346 01:03:26,490 --> 01:03:27,020 Apa yang berlaku? 1347 01:03:27,020 --> 01:03:28,270 >> [Suara INTERPOSING] 1348 01:03:28,270 --> 01:03:35,170 1349 01:03:35,170 --> 01:03:35,950 >> JASON Hirschhorn: Tidak bersalah seg. 1350 01:03:35,950 --> 01:03:40,320 Bagaimana kita boleh menyemak untuk melihat jika dua perkara yang sama? 1351 01:03:40,320 --> 01:03:42,060 Dua fail adalah sama. 1352 01:03:42,060 --> 01:03:43,300 >> PELAJAR 64: Diff. 1353 01:03:43,300 --> 01:03:45,490 >> JASON Hirschhorn: Diff. 1354 01:03:45,490 --> 01:03:51,630 Cek beza bagi perbezaan antara dua fail, dan jika ia kembali 1355 01:03:51,630 --> 01:03:52,890 apa-apa, mereka serupa. 1356 01:03:52,890 --> 01:03:59,030 Dan jika kita membuka, kita akan mendapat fail kami. 1357 01:03:59,030 --> 01:04:00,490 Sehingga adalah penyelesaian yang betul. 1358 01:04:00,490 --> 01:04:01,780 Mari kita lihat kembali pada ia sekali lagi. 1359 01:04:01,780 --> 01:04:04,080 Kita sebenarnya tidak pun perlu untuk memulakan ia. 1360 01:04:04,080 --> 01:04:05,520 >> Ia mungkin akan kelihatan sedikit bersih jika anda tidak meletakkan 1361 01:04:05,520 --> 01:04:07,680 sesuatu rawak di sana. 1362 01:04:07,680 --> 01:04:13,070 Titik ini, anda diperlukan untuk mewujudkan sedikit ruang untuk menyimpan sesuatu dari 1363 01:04:13,070 --> 01:04:15,530 fread dan mengambil sesuatu daripada fwrite. 1364 01:04:15,530 --> 01:04:18,400 Dan perkara yang terpaksa sama ada tempatan berubah-ubah pada timbunan - anda 1365 01:04:18,400 --> 01:04:19,890 boleh telah malloc'd sedikit ruang. 1366 01:04:19,890 --> 01:04:23,030 >> Oleh itu, kita sebenarnya boleh mempunyai malloc ditulis di sini, dan 1367 01:04:23,030 --> 01:04:25,420 yang akan bekerja. 1368 01:04:25,420 --> 01:04:28,660 Dan kemudian kita akan telah menyimpan barang-barang kami di suatu tempat di timbunan itu. 1369 01:04:28,660 --> 01:04:31,940 Tetapi ini sebenarnya, mungkin, penyelesaian yang paling elegan. 1370 01:04:31,940 --> 01:04:34,490 Hanya membuat sedikit ruang pada timbunan untuk perkara-perkara ini pergi. 1371 01:04:34,490 --> 01:04:37,690 1372 01:04:37,690 --> 01:04:38,990 >> Saya akan mempunyai dua pandangan lain. 1373 01:04:38,990 --> 01:04:44,650 Jika anda telah mengambil giliran dalam hal ini, dan kemudian mendapatkan menjaringkan ini, komen saya 1374 01:04:44,650 --> 01:04:47,400 adalah seperti berikut. 1375 01:04:47,400 --> 01:04:54,300 Ini 1 di sini, bagi saya, melihat seperti nombor sihir. 1376 01:04:54,300 --> 01:04:56,860 1, dari segi fread, masuk akal. 1377 01:04:56,860 --> 01:04:59,580 Itulah beberapa perkara membaca atau menulis. 1378 01:04:59,580 --> 01:05:03,740 >> Tetapi yang satu ini di sini perlu mungkin menjadi sesuatu yang lain. 1379 01:05:03,740 --> 01:05:05,180 Jadi apa yang salah satu penyelesaian? 1380 01:05:05,180 --> 01:05:06,545 >> PELAJAR 65: Saiz bait. 1381 01:05:06,545 --> 01:05:10,100 1382 01:05:10,100 --> 01:05:11,080 >> JASON Hirschhorn: Seperti yang? 1383 01:05:11,080 --> 01:05:13,130 >> PELAJAR 65: Saiz char. 1384 01:05:13,130 --> 01:05:13,820 >> JASON Hirschhorn: Saiz char. 1385 01:05:13,820 --> 01:05:15,290 Ya, bait bukan jenis yang. 1386 01:05:15,290 --> 01:05:16,320 Jadi saiz kerja-kerja char. 1387 01:05:16,320 --> 01:05:30,270 Kami boleh, di bahagian atas kod kami, # ditakrifkan itu. 1388 01:05:30,270 --> 01:05:33,410 Dipanggil sesuatu BYTE dan ia benar-benar char a. 1389 01:05:33,410 --> 01:05:37,675 Sebenarnya, pendekatan yang lebih baik mungkin telah ini - 1390 01:05:37,675 --> 01:05:39,391 uint. 1391 01:05:39,391 --> 01:05:40,780 Sesiapa sahaja tahu apa itu? 1392 01:05:40,780 --> 01:05:44,388 1393 01:05:44,388 --> 01:05:44,840 >> Maaf. 1394 01:05:44,840 --> 01:05:46,090 Saya mempunyai ia ke belakang. 1395 01:05:46,090 --> 01:05:51,620 1396 01:05:51,620 --> 01:05:52,200 Tunggu, tidak. 1397 01:05:52,200 --> 01:05:53,450 Jalan mana ia pergi? 1398 01:05:53,450 --> 01:05:58,071 1399 01:05:58,071 --> 01:05:59,660 Sesiapa sahaja tahu apa itu? 1400 01:05:59,660 --> 01:06:00,950 Yeah. 1401 01:06:00,950 --> 01:06:05,650 >> PELAJAR 67: sepatutnya untuk membantu menyeragamkan seluruh sistem perkara-perkara yang 1402 01:06:05,650 --> 01:06:08,760 mempunyai - seperti integer tidak ditandatangani yang mempunyai 8 bytes? 1403 01:06:08,760 --> 01:06:11,785 >> JASON Hirschhorn: Itu betul-betul betul. 1404 01:06:11,785 --> 01:06:14,310 Pada mesin yang berbeza, saiz char a - 1405 01:06:14,310 --> 01:06:15,180 biasanya tidak char a. 1406 01:06:15,180 --> 01:06:16,100 Aksara biasanya satu bait. 1407 01:06:16,100 --> 01:06:19,590 Tetapi saiz jenis data lain saiz yang berbeza pada mesin 32-bit 1408 01:06:19,590 --> 01:06:21,370 berbanding mesin 64-bit. 1409 01:06:21,370 --> 01:06:25,180 Uint8_t A sentiasa 8 bit - 1410 01:06:25,180 --> 01:06:27,210 sentiasa satu bait. 1411 01:06:27,210 --> 01:06:29,580 >> Dan saya perlu termasuk yang standard fail header int. 1412 01:06:29,580 --> 01:06:35,040 Jadi sekarang, ini akan mungkin menjadi cara terbaik untuk menulis kod ini. 1413 01:06:35,040 --> 01:06:40,160 1414 01:06:40,160 --> 01:06:41,450 Jadi saya menghilangkan nombor ajaib. 1415 01:06:41,450 --> 01:06:44,690 Dan saya juga mempunyai lebih logik menaip untuk penampan. 1416 01:06:44,690 --> 01:06:49,450 Ia bukan sekadar char, adalah satu bait, yang merupakan apa yang kita harapkan ia menjadi. 1417 01:06:49,450 --> 01:06:53,400 >> Dan di sini, kita telah benar-benar menjadi sedikit lebih teguh. 1418 01:06:53,400 --> 01:06:55,190 Kami tidak memanggil ia char, yang - 1419 01:06:55,190 --> 01:06:58,630 mungkin, yang tahu - boleh menjadi berbeza saiz pada mesin yang berbeza. 1420 01:06:58,630 --> 01:07:02,025 Kita sebenarnya mengatakan ini adalah betul-betul satu bait, sentiasa, tidak kira apa. 1421 01:07:02,025 --> 01:07:05,810 Dan jika kita lihat di sini, kami membuat cp. 1422 01:07:05,810 --> 01:07:08,340 Uh-oh. 1423 01:07:08,340 --> 01:07:09,590 Apa yang berlaku? 1424 01:07:09,590 --> 01:07:14,470 1425 01:07:14,470 --> 01:07:16,170 >> PELAJAR 68: Ia mungkin dihidupkan. 1426 01:07:16,170 --> 01:07:17,880 >> JASON Hirschhorn: Apa? 1427 01:07:17,880 --> 01:07:19,130 >> PELAJAR 69: Adakah ia? 1428 01:07:19,130 --> 01:07:21,940 1429 01:07:21,940 --> 01:07:25,080 >> PELAJAR 70: Anda tidak menentukan ia sebagai jenis yang. 1430 01:07:25,080 --> 01:07:28,684 >> PELAJAR 71: Tetapi ia perlu ditakrifkan dalam standard. 1431 01:07:28,684 --> 01:07:29,934 >> PELAJAR 72: Apa yang berlaku? 1432 01:07:29,934 --> 01:07:37,660 1433 01:07:37,660 --> 01:07:40,210 >> PELAJAR 73: Sekiranya menentukan semua topi? 1434 01:07:40,210 --> 01:07:41,370 >> JASON Hirschhorn: Jadi ia bukan # menentukan. 1435 01:07:41,370 --> 01:07:45,490 Sebenarnya, dalam kes ini, saya akan menggunakan typedef. 1436 01:07:45,490 --> 01:07:48,590 Kerana kita menggunakannya sebagai sejenis di satu lokasi. 1437 01:07:48,590 --> 01:07:51,990 Jadi dalam kes ini, kita benar-benar ingin typedef seperti kita mencetak jenis baru 1438 01:07:51,990 --> 01:07:54,490 bait, dan ia adalah, pada dasarnya, ini. 1439 01:07:54,490 --> 01:07:56,590 Ia agak berbeza daripada # menentukan. 1440 01:07:56,590 --> 01:08:02,740 >> Dan kini, kod kita berfungsi dengan sempurna. 1441 01:08:02,740 --> 01:08:05,230 Jadi, sekali lagi, # menentukan mengambil sesuatu, menggantikan mana-mana sahaja 1442 01:08:05,230 --> 01:08:06,780 dengan perkara yang lain. 1443 01:08:06,780 --> 01:08:07,920 Ia hanya makro - 1444 01:08:07,920 --> 01:08:09,420 trengkas untuk menghapuskan nombor ajaib. 1445 01:08:09,420 --> 01:08:11,360 Tetapi dalam kes ini, kerana kami menggunakannya sebagai jenis yang - 1446 01:08:11,360 --> 01:08:12,180 di sini - 1447 01:08:12,180 --> 01:08:19,880 agar yang ke tempat kerja, kita perlu untuk typedef apa sahaja bait adalah. 1448 01:08:19,880 --> 01:08:21,840 >> Dan kita menentukan ia di sini. 1449 01:08:21,840 --> 01:08:24,750 Ia bukan struct, ia sebenarnya hanya integer tak bertanda. 1450 01:08:24,750 --> 01:08:27,680 Ia satu bait panjang. 1451 01:08:27,680 --> 01:08:31,910 Kod ini boleh didapati dalam talian, dan anda semua harus mempunyai sekarang. 1452 01:08:31,910 --> 01:08:33,830 >> Oleh itu, kita mempunyai - 1453 01:08:33,830 --> 01:08:34,250 sempurna - 1454 01:08:34,250 --> 01:08:41,359 13 minit kiri untuk pergi masalah lebih menetapkan 5. 1455 01:08:41,359 --> 01:08:44,270 Saya mahu bergerak melalui copy.c bersama-sama, dan kemudian kita akan bercakap secara ringkas 1456 01:08:44,270 --> 01:08:47,120 mengenai bahagian-bahagian lain masalah yang ditetapkan. 1457 01:08:47,120 --> 01:08:48,899 Jadi biarlah saya tarik sehingga copy.c. 1458 01:08:48,899 --> 01:09:03,930 1459 01:09:03,930 --> 01:09:08,810 Dan perkara yang sejuk, kita telah benar-benar sudah menulis banyak kod ini. 1460 01:09:08,810 --> 01:09:11,180 >> Kod kita menulis betul-betul hanya keluar dari sini ketika saya 1461 01:09:11,180 --> 01:09:13,120 menulis ini pada saya sendiri. 1462 01:09:13,120 --> 01:09:16,990 Tetapi ini adalah copy.c, membentuk asas untuk kedua-dua bahagian pertama 1463 01:09:16,990 --> 01:09:22,340 masalah yang ditetapkan untuk whodunit.c, yang anda perlu menulis dan resize.c. 1464 01:09:22,340 --> 01:09:27,050 Recover.c, yang ketiga dan terakhir sebahagian daripada masalah yang ditetapkan, tidak 1465 01:09:27,050 --> 01:09:29,529 berdasarkan kira fail ini. 1466 01:09:29,529 --> 01:09:32,200 >> Anda akan perlu untuk menulis fail yang, kami memberi anda template untuk yang 1467 01:09:32,200 --> 01:09:34,620 fail, tetapi ia tiada kaitan dengan copy.c. 1468 01:09:34,620 --> 01:09:38,675 Tetapi kerana copy.c adalah asas untuk kedua-dua bahagian pertama, kita akan 1469 01:09:38,675 --> 01:09:42,000 berjalan melaluinya sekarang, supaya anda mempunyai perasaan yang baik dari apa yang ia. 1470 01:09:42,000 --> 01:09:43,640 >> Dan komen memberikan beberapa jauh. 1471 01:09:43,640 --> 01:09:45,120 Kami sudah menulis beberapa ini. 1472 01:09:45,120 --> 01:09:49,220 Pertama, kami memastikan kita akan mendapat tiga hujah. 1473 01:09:49,220 --> 01:09:50,560 Seterusnya, kita mengingati nama fail. 1474 01:09:50,560 --> 01:09:52,960 Oleh itu, kita dilangkau langkah ini apabila kita berkod perkara kami - 1475 01:09:52,960 --> 01:09:54,700 apabila cp kami. 1476 01:09:54,700 --> 01:09:56,750 Tetapi di sini, mereka membuat ia sedikit lebih bersih. 1477 01:09:56,750 --> 01:09:59,350 >> Mereka memeriksa untuk memastikan kedua-dua fail yang baik, dalam 1478 01:09:59,350 --> 01:10:00,450 Selain membuka mereka. 1479 01:10:00,450 --> 01:10:04,760 Kami menulis semua kod ini tadi, jadi saya tidak akan kekal di atas kod ini. 1480 01:10:04,760 --> 01:10:09,670 Seterusnya adalah beberapa barangan itu khusus untuk jenis fail yang kita gunakan, yang 1481 01:10:09,670 --> 01:10:12,240 adalah fail bitmap. 1482 01:10:12,240 --> 01:10:15,660 Fail bitmap mempunyai beberapa metadata berkaitan dengan mereka. 1483 01:10:15,660 --> 01:10:20,190 >> Jadi pasangan pertama bytes memberitahu anda tentang fail tersebut. 1484 01:10:20,190 --> 01:10:23,460 Mereka tidak warna piksel dalam imej itu. 1485 01:10:23,460 --> 01:10:25,120 Mereka memberitahu anda tentang fail tersebut. 1486 01:10:25,120 --> 01:10:28,220 Dan jika anda membaca masalah yang ditetapkan, anda akan mempunyai lebih banyak maklumat 1487 01:10:28,220 --> 01:10:33,100 kepada apa jenis struktur metadata termasuk dengan bitmap. 1488 01:10:33,100 --> 01:10:39,350 >> Tetapi itu sebabnya kita mempunyai ini pertama set - kod ini di sini. 1489 01:10:39,350 --> 01:10:42,490 Kita membaca metadata - 1490 01:10:42,490 --> 01:10:45,800 dua keping metadata - fail header header dan info. 1491 01:10:45,800 --> 01:10:51,030 Dan kita memeriksa beberapa bahagian itu untuk pastikan ia adalah fail bitmap benar 1492 01:10:51,030 --> 01:10:52,420 sebelum meneruskan. 1493 01:10:52,420 --> 01:10:55,470 >> Dan sekali lagi, ini adalah maklumat kita tidak perlu pergi ke dalam sekarang. 1494 01:10:55,470 --> 01:10:57,720 Jika anda membaca masalah yang ditetapkan, anda akan memahami ini. 1495 01:10:57,720 --> 01:11:01,370 Cerita panjang pendek, ini adalah hanya mengatakan, ini adalah fail bitmap, dan 1496 01:11:01,370 --> 01:11:02,810 mengesahkan bahawa. 1497 01:11:02,810 --> 01:11:05,180 >> Seterusnya, kami menulis mereka ke fail keluar. 1498 01:11:05,180 --> 01:11:05,660 Kami melihat bahawa di sini. 1499 01:11:05,660 --> 01:11:06,910 Kami menulis untuk penunjuk keluar. 1500 01:11:06,910 --> 01:11:09,260 1501 01:11:09,260 --> 01:11:11,320 Seterusnya, kami menentukan padding. 1502 01:11:11,320 --> 01:11:15,240 Jadi sekali lagi, seperti yang khas dengan fail bitmap, beberapa baris termasuk 1503 01:11:15,240 --> 01:11:16,840 padding pada akhir. 1504 01:11:16,840 --> 01:11:19,000 Dan jika anda membaca masalah yang ditetapkan, anda akan belajar lebih lanjut mengenai padding. 1505 01:11:19,000 --> 01:11:22,330 Ini adalah formula untuk mencari padding. 1506 01:11:22,330 --> 01:11:23,610 >> Penting untuk ingat - 1507 01:11:23,610 --> 01:11:29,720 apabila anda menukar saiz bitmap yang memfailkan, perubahan padding. 1508 01:11:29,720 --> 01:11:31,970 Apabila anda menukar saiz memfailkan, perubahan padding. 1509 01:11:31,970 --> 01:11:34,310 Ia tidak pernah akan menjadi lebih besar daripada 3 - 1510 01:11:34,310 --> 01:11:36,510 ia akan menjadi 0 hingga 3, inklusif. 1511 01:11:36,510 --> 01:11:38,930 Tetapi apabila anda menukar saiz sesuatu, perubahan padding. 1512 01:11:38,930 --> 01:11:47,100 >> Jika saya hanya mempunyai satu piksel berturut-turut itu, saya memerlukan tiga bait padding, kerana 1513 01:11:47,100 --> 01:11:51,190 setiap baris perlu gandaan empat bait panjang dalam fail bitmap. 1514 01:11:51,190 --> 01:11:56,120 Tetapi jika saya dua kali ganda, untuk pergi dari satu piksel dua piksel, setiap yang, 1515 01:11:56,120 --> 01:11:59,510 katakan, adalah satu bait, maka saya perlu dua bait padding untuk membuat 1516 01:11:59,510 --> 01:12:00,970 yang sama dengan empat. 1517 01:12:00,970 --> 01:12:04,200 >> Oleh itu, apabila saya menukar saiz sesuatu, Saya perlu menukar jumlah yang 1518 01:12:04,200 --> 01:12:06,551 padding saya. 1519 01:12:06,551 --> 01:12:08,100 Adakah ini masuk akal untuk semua orang? 1520 01:12:08,100 --> 01:12:12,020 1521 01:12:12,020 --> 01:12:18,720 Seterusnya, kami melelar atas setiap baris, atau melalui semua baris. 1522 01:12:18,720 --> 01:12:21,400 Dan kemudian kita melelar melalui setiap lajur dalam setiap baris. 1523 01:12:21,400 --> 01:12:25,330 Kami merawat bitmap ini seperti grid, seperti yang kita telah dirawat 1524 01:12:25,330 --> 01:12:26,490 lembaga dalam 15. 1525 01:12:26,490 --> 01:12:29,200 >> Seperti kita dirawat batu bata apabila kita dicetak mereka pada skrin. 1526 01:12:29,200 --> 01:12:31,350 Satu grid baris dan lajur. 1527 01:12:31,350 --> 01:12:32,350 Kemudian - kita melihat ini. 1528 01:12:32,350 --> 01:12:33,840 Kami sebenarnya hanya berkod ini. 1529 01:12:33,840 --> 01:12:35,780 Kami mencipta beberapa penyimpanan sementara. 1530 01:12:35,780 --> 01:12:38,710 Kita baca di sana, dan kemudian kita menulis ia keluar. 1531 01:12:38,710 --> 01:12:42,680 Ini betul-betul apa yang kita hanya lakukan. 1532 01:12:42,680 --> 01:12:46,760 >> Seterusnya, kerana saya berkata setiap baris berakhir dalam beberapa padding, kita 1533 01:12:46,760 --> 01:12:48,260 melangkau lebih padding yang - 1534 01:12:48,260 --> 01:12:51,000 yang padding lama. 1535 01:12:51,000 --> 01:12:52,630 Dan kemudian kita menambahkan kembali. 1536 01:12:52,630 --> 01:12:55,140 Dalam kes ini, kita mewujudkan fail yang tepat sama. 1537 01:12:55,140 --> 01:12:56,180 Kami hanya menirunya. 1538 01:12:56,180 --> 01:12:57,700 Jadi garis ini adalah jenis bodoh. 1539 01:12:57,700 --> 01:12:59,660 Kita boleh benar-benar hanya meletakkan padding masuk 1540 01:12:59,660 --> 01:13:04,290 >> Tetapi jika anda menukar saiz fail, adakah anda masih mahu baris ini? 1541 01:13:04,290 --> 01:13:08,510 1542 01:13:08,510 --> 01:13:11,560 Jadi, jika kita menukar saiz fail, kita masih mahu melangkau 1543 01:13:11,560 --> 01:13:12,810 lebih padding yang lama? 1544 01:13:12,810 --> 01:13:15,170 1545 01:13:15,170 --> 01:13:15,970 >> PELAJAR 74: Ya. 1546 01:13:15,970 --> 01:13:17,090 >> JASON Hirschhorn: Jadi yang kita lakukan. 1547 01:13:17,090 --> 01:13:19,290 Kerana ini, sekali lagi, tawaran dengan fail sumber. 1548 01:13:19,290 --> 01:13:21,570 Kami tidak mengambil berat tentang padding dari fail sumber. 1549 01:13:21,570 --> 01:13:23,410 Kami mahu pergi ke baris seterusnya. 1550 01:13:23,410 --> 01:13:28,850 Tetapi kita tidak hanya meletakkan kembali jumlah yang lama padding. 1551 01:13:28,850 --> 01:13:31,540 Kita perlu meletakkan belakang kadar baru padding. 1552 01:13:31,540 --> 01:13:35,810 >> Oleh itu, apabila kita berubah saiz fail, kita masih mahu melangkau ke atas 1553 01:13:35,810 --> 01:13:38,270 padding dalam fail lama - apa kita membaca dari. 1554 01:13:38,270 --> 01:13:40,370 Tetapi apa yang kita menulis kepada, kita akan perlu untuk meletakkan kembali beberapa yang berbeza 1555 01:13:40,370 --> 01:13:41,890 beberapa padding yang kami telah ditentukan. 1556 01:13:41,890 --> 01:13:42,780 Yeah. 1557 01:13:42,780 --> 01:13:44,550 >> PELAJAR 75: Perintah-dua garis tidak kira, bukan? 1558 01:13:44,550 --> 01:13:46,160 Kerana anda mengendalikan fail yang berbeza. 1559 01:13:46,160 --> 01:13:46,620 >> JASON Hirschhorn: Tepat sekali. 1560 01:13:46,620 --> 01:13:48,220 Perintah kedua-dua baris tidak mengapa. 1561 01:13:48,220 --> 01:13:49,790 Kami menulis baris ini. 1562 01:13:49,790 --> 01:13:51,430 Ini adalah di sini untuk fail yang kita menulis untuk. 1563 01:13:51,430 --> 01:13:54,370 Yang penting, jadi kita mendapat jumlah hak padding. 1564 01:13:54,370 --> 01:13:57,560 Ini telah berurusan dengan fail dalam. 1565 01:13:57,560 --> 01:13:58,560 Kami mahu melangkau hak lebih padding itu. 1566 01:13:58,560 --> 01:13:59,470 >> Kami tidak mahu membaca - 1567 01:13:59,470 --> 01:14:01,500 jika kita membaca bait pada satu masa, kita tidak mengambil berat tentang mereka bytes padding. 1568 01:14:01,500 --> 01:14:04,070 Kami mahu bergerak ke baris seterusnya. 1569 01:14:04,070 --> 01:14:11,800 Akhirnya sama seperti Lucy memberi untuk kita, kita menutup fail-fail dan kembali 0. 1570 01:14:11,800 --> 01:14:13,890 Jadi ini adalah copy.c. 1571 01:14:13,890 --> 01:14:17,850 Dan kita sebenarnya menulis - kita menghabiskan sebahagian besar seksyen menulis ini, pada asasnya. 1572 01:14:17,850 --> 01:14:18,740 >> Anda membuat ini. 1573 01:14:18,740 --> 01:14:22,440 Jadi diharapkan anda mempunyai perasaan yang baik daripada apa yang berlaku di sini. 1574 01:14:22,440 --> 01:14:25,890 Perbezaan besar, jujur, hanya Bahagian pertama ini yang memperkatakan 1575 01:14:25,890 --> 01:14:29,970 kepelikan fail bitmap. 1576 01:14:29,970 --> 01:14:33,570 Jadi saya sebagai slaid depan saya, apa yang perlu kita lakukan? 1577 01:14:33,570 --> 01:14:35,510 Nah, mari kita berfikir tentang Kisah penyiasatan. 1578 01:14:35,510 --> 01:14:38,080 >> Dan bagi seseorang yang membaca masalah yang ditetapkan, apa yang kita 1579 01:14:38,080 --> 01:14:41,410 perlu lakukan dalam Kisah penyiasatan? 1580 01:14:41,410 --> 01:14:42,080 Semata-mata. 1581 01:14:42,080 --> 01:14:42,460 Aleja. 1582 01:14:42,460 --> 01:14:48,570 >> Aleja: Bolehkah anda mengambil bahagian yang bagi setiap piksel yang menandakan merah. 1583 01:14:48,570 --> 01:14:49,730 Dan kemudian - 1584 01:14:49,730 --> 01:14:50,730 jenis? 1585 01:14:50,730 --> 01:14:51,860 >> JASON Hirschhorn: OK. 1586 01:14:51,860 --> 01:14:54,460 Jadi mengambil pihak setiap pixel yang menandakan merah. 1587 01:14:54,460 --> 01:14:57,234 Yang dekat, tetapi tidak semua itu. 1588 01:14:57,234 --> 01:14:59,780 >> PELAJAR 76: Nah, ada cara yang berbeza untuk melakukannya. 1589 01:14:59,780 --> 01:14:59,870 >> JASON Hirschhorn: OK. 1590 01:14:59,870 --> 01:15:03,070 Berikan saya satu cara. 1591 01:15:03,070 --> 01:15:08,240 >> PELAJAR 76: Ambil semua merah, dan kemudian menekankan biru dan hijau. 1592 01:15:08,240 --> 01:15:10,010 >> JASON Hirschhorn: OK. 1593 01:15:10,010 --> 01:15:11,830 Jadi diberikan kedua-dua cara - 1594 01:15:11,830 --> 01:15:15,210 ia kedengaran seperti kita memberikan piksel, ia mempunyai tahap yang merah, biru, dan hijau. 1595 01:15:15,210 --> 01:15:19,350 Kami mahu menukar tahap relatif merah, biru, dan hijau, bergantung 1596 01:15:19,350 --> 01:15:20,740 pada pixel itu. 1597 01:15:20,740 --> 01:15:28,380 Jika dalam kod ini kita perlu mengubah merah relatif, biru, dan hijau 1598 01:15:28,380 --> 01:15:29,720 tahap pixel yang diberikan. 1599 01:15:29,720 --> 01:15:30,600 Selepas kami membacanya - 1600 01:15:30,600 --> 01:15:32,520 sebelum kita menulisnya? 1601 01:15:32,520 --> 01:15:34,564 Berikan saya beberapa baris. 1602 01:15:34,564 --> 01:15:35,950 >> PELAJAR PELBAGAI: 83. 1603 01:15:35,950 --> 01:15:37,320 >> JASON Hirschhorn: 83. 1604 01:15:37,320 --> 01:15:38,570 Jadi di sini. 1605 01:15:38,570 --> 01:15:40,830 1606 01:15:40,830 --> 01:15:45,710 Untuk Kisah penyiasatan, kod yang anda perlukan untuk tuliskan semua perlu pergi di sana. 1607 01:15:45,710 --> 01:15:47,640 Dan itulah satu-satunya kod anda perlu untuk menulis. 1608 01:15:47,640 --> 01:15:51,520 Kerana, seperti yang kita dengar, semua yang anda perlu lakukan adalah menukar ini biru relatif, 1609 01:15:51,520 --> 01:15:54,420 tahap merah, dan hijau dari setiap piksel. 1610 01:15:54,420 --> 01:15:58,250 >> Anda telah membaca di dalam, dan kini anda akan menulis ia keluar. 1611 01:15:58,250 --> 01:16:03,100 Bagaimana saya mendapat - jika saya mempunyai perkara ini dipanggil tiga kali ganda, di sini, dan ia daripada 1612 01:16:03,100 --> 01:16:04,570 menaip RGBTRIPLE - 1613 01:16:04,570 --> 01:16:08,650 baik, jika kita melihat di bmp.h, apa yang RGBTRIPLE? 1614 01:16:08,650 --> 01:16:11,450 1615 01:16:11,450 --> 01:16:12,700 >> PELAJAR 77: Ia struct a. 1616 01:16:12,700 --> 01:16:17,440 1617 01:16:17,440 --> 01:16:18,900 >> JASON Hirschhorn: RGBTRIPLE adalah struct a. 1618 01:16:18,900 --> 01:16:22,330 Kita lihat bahawa sampai di sini. 1619 01:16:22,330 --> 01:16:26,600 Dan jadi jika saya mahu akses, berkata, tahap merah struct itu, bagaimana saya 1620 01:16:26,600 --> 01:16:30,005 mengakses tahap merah struct ini? 1621 01:16:30,005 --> 01:16:37,280 >> [KELAS murmurs] 1622 01:16:37,280 --> 01:16:38,530 >> PELAJAR 78: RGBTRIPLE.rgbtred? 1623 01:16:38,530 --> 01:16:47,250 1624 01:16:47,250 --> 01:16:48,856 >> JASON Hirschhorn: Adakah itu betul? 1625 01:16:48,856 --> 01:16:53,040 >> PELAJAR 79: Ia perlu tiga kali ganda dot, bukan RGBTRIPLE dot? 1626 01:16:53,040 --> 01:16:54,120 >> JASON Hirschhorn: Triple. 1627 01:16:54,120 --> 01:16:56,700 Triple adalah pembolehubah tempatan, jadi di sini, tidak ada petunjuk di sini. 1628 01:16:56,700 --> 01:16:58,400 Oleh itu, kita hanya menggunakan notasi titik. 1629 01:16:58,400 --> 01:17:00,480 Ini akan memberikan saya tahap merah. 1630 01:17:00,480 --> 01:17:06,180 Jika saya ingin mengubahnya, saya hanya menetapkan ia sama untuk sesuatu yang berbeza. 1631 01:17:06,180 --> 01:17:13,190 Jadi sekali lagi, ini selaras kod mengakses pembolehubah ini di dalam struct ini, dan 1632 01:17:13,190 --> 01:17:15,070 kita boleh menetapkan ia untuk sesuatu yang baru. 1633 01:17:15,070 --> 01:17:20,040 >> Jadi bagi Kisah penyiasatan, sekali lagi, ini adalah, pada dasarnya, apa yang kita perlu lakukan. 1634 01:17:20,040 --> 01:17:21,170 Sangat mudah. 1635 01:17:21,170 --> 01:17:25,020 Hanya menukar beberapa tahap relatif, dan ini adalah di mana kod yang pergi. 1636 01:17:25,020 --> 01:17:27,720 Saiz semula, di sisi lain, agak sukar. 1637 01:17:27,720 --> 01:17:30,900 Malah, saiz semula mungkin adalah sebahagian trickiest masalah ini ditetapkan. 1638 01:17:30,900 --> 01:17:32,720 Kami mempunyai tiga minit untuk pergi ke atasnya. 1639 01:17:32,720 --> 01:17:34,910 >> Apapun, kita sudah menulis kebanyakan kod ini, jadi kami 1640 01:17:34,910 --> 01:17:36,500 harus cukup biasa. 1641 01:17:36,500 --> 01:17:40,750 Apakah beberapa perkara yang kita mahu lakukan dalam mengubah saiz, jika anda telah membaca sepanjang 1642 01:17:40,750 --> 01:17:43,470 masalah ditetapkan? 1643 01:17:43,470 --> 01:17:45,290 Jika anda memberikan mereka kepada saya, kita boleh bercakap tentang mereka. 1644 01:17:45,290 --> 01:17:47,340 Apakah beberapa perkara yang kita mahu lakukan? 1645 01:17:47,340 --> 01:17:47,970 >> PELAJAR 80: Menegak - 1646 01:17:47,970 --> 01:17:52,360 jadi anda perlu melintang mengubah saiz, tetapi menegak mengubah saiz ia juga? 1647 01:17:52,360 --> 01:17:58,475 >> JASON Hirschhorn: Jadi jika kita diberikan pixel, dan kita mahu mengubah saiz oleh 1648 01:17:58,475 --> 01:18:03,460 faktor dua, ia kini perlu saiznya mendatar dan saiznya 1649 01:18:03,460 --> 01:18:05,220 menegak. 1650 01:18:05,220 --> 01:18:06,640 Adakah ini masuk akal? 1651 01:18:06,640 --> 01:18:07,060 Yeah. 1652 01:18:07,060 --> 01:18:09,300 Jadi, itu mungkin yang Cabaran yang paling besar. 1653 01:18:09,300 --> 01:18:10,430 Dan kita akan bercakap tentang itu dalam sebentar. 1654 01:18:10,430 --> 01:18:11,065 Yeah. 1655 01:18:11,065 --> 01:18:15,270 >> PELAJAR 81: Cara saya fikir ia telah anda diperlukan cetak keluar - 1656 01:18:15,270 --> 01:18:15,490 >> JASON Hirschhorn: Tunggu. 1657 01:18:15,490 --> 01:18:17,580 Jangan beritahu kami apa yang anda lakukan. 1658 01:18:17,580 --> 01:18:20,620 Kami akan bercakap dalam logik. 1659 01:18:20,620 --> 01:18:21,870 >> PELAJAR 81: OK. 1660 01:18:21,870 --> 01:18:25,090 1661 01:18:25,090 --> 01:18:27,410 Apa soalan? 1662 01:18:27,410 --> 01:18:28,892 >> JASON Hirschhorn: Anda hanya dibangkitkan tangan anda. 1663 01:18:28,892 --> 01:18:31,600 Tidak ada soalan. 1664 01:18:31,600 --> 01:18:32,520 Biar saya mengemukakannya. 1665 01:18:32,520 --> 01:18:34,560 Biarlah saya hanya membincangkan secara ringkas ini. 1666 01:18:34,560 --> 01:18:38,400 Oleh itu, kita mempunyai satu pixel, kami mahu meniru ia mendatar dan 1667 01:18:38,400 --> 01:18:39,360 menegak. 1668 01:18:39,360 --> 01:18:48,920 Begitu ideal apa yang kita lakukan di sini, kita dibaca pixel kami, kami menulis 1669 01:18:48,920 --> 01:18:51,690 bagaimanapun banyak kali. 1670 01:18:51,690 --> 01:18:54,720 >> Tetapi kita mempunyai helah kami di sini, kerana maka kita mahu melangkau ke 1671 01:18:54,720 --> 01:18:57,660 garis depan dan menulisnya di permulaan baris berikutnya. 1672 01:18:57,660 --> 01:19:02,960 Jadi, jika kita mahu meniru kedua-dua mendatar dan menegak, apa yang 1673 01:19:02,960 --> 01:19:05,050 satu cara yang baik untuk berbuat demikian - 1674 01:19:05,050 --> 01:19:06,780 satu yang baik walaupun untuk melakukan itu? 1675 01:19:06,780 --> 01:19:11,950 Oleh itu, kita tidak perlu sentiasa berusaha sekitar fail kami untuk meletakkan sesuatu. 1676 01:19:11,950 --> 01:19:14,360 >> Soalan yang mungkin tidak mempunyai masuk akal, tetapi saya fikir satu 1677 01:19:14,360 --> 01:19:15,800 menjawab kepadanya akan membantu. 1678 01:19:15,800 --> 01:19:17,210 >> PELAJAR 82: Buat satu pameran? 1679 01:19:17,210 --> 01:19:20,090 >> JASON Hirschhorn: Jadi mari kita berfikir setiap fail sebagai berturut-turut. 1680 01:19:20,090 --> 01:19:22,550 Mari kita berfikir dari segi baris. 1681 01:19:22,550 --> 01:19:26,670 Jika kita mempunyai baris pertama kami dari kecil kami gambar, kita boleh membuat baris yang 1682 01:19:26,670 --> 01:19:30,640 ke dalam satu barisan yang besar dari gambar yang besar, dan kemudian meniru baris tersebut bagaimanapun 1683 01:19:30,640 --> 01:19:34,250 banyak kali ia perlu ditiru, bukannya pergi piksel dengan, 1684 01:19:34,250 --> 01:19:37,260 yang mendapat mengelirukan apabila menangani fail-fail. 1685 01:19:37,260 --> 01:19:38,730 >> Kerana jika kita mempunyai - 1686 01:19:38,730 --> 01:19:41,260 Saya kehabisan ruang. 1687 01:19:41,260 --> 01:19:46,490 Jika ini adalah fail kami, dan kami mempunyai yang satu piksel di sana, dan kami mahu meletakkannya 1688 01:19:46,490 --> 01:19:49,840 di sana, kita masih mempunyai beberapa perkara yang bahawa keperluan untuk pergi ke sana apabila kita 1689 01:19:49,840 --> 01:19:51,450 menulis dan mencipta fail baru kami - 1690 01:19:51,450 --> 01:19:53,250 fail kami itu dua kali ganda besar. 1691 01:19:53,250 --> 01:19:56,820 >> Tetapi ia benar-benar sukar dengan fungsi fail melangkau sekitar untuk garisan baru 1692 01:19:56,820 --> 01:20:00,260 seperti itu, dan kemudian kembali di sini dan meletakkan perkara di sana. 1693 01:20:00,260 --> 01:20:04,500 Ia hampir mustahil untuk melakukan sesuatu seperti itu, jika yang masuk akal. 1694 01:20:04,500 --> 01:20:10,180 Jadi, jika kita berfikir dari segi baris, kita boleh mengambil barisan kita, dan kemudian meletakkan ia - 1695 01:20:10,180 --> 01:20:11,720 meniru baris menegak. 1696 01:20:11,720 --> 01:20:15,860 >> Dan itulah bagaimana kita berurusan dengan saiz semula menegak bukan melintang. 1697 01:20:15,860 --> 01:20:18,810 Itu adalah jenis cepat, dan sedikit mengelirukan. 1698 01:20:18,810 --> 01:20:22,375 Malangnya masa kita terpulang. 1699 01:20:22,375 --> 01:20:27,340 Saya akan berdiri di luar untuk mereka di sini yang mempunyai soalan mengenai 1700 01:20:27,340 --> 01:20:30,500 set masalah, termasuk pulih. 1701 01:20:30,500 --> 01:20:32,320 >> Jadi mari kita menangguhkan buat masa ini. 1702 01:20:32,320 --> 01:20:34,480 Dan sekali lagi, jika anda mempunyai sebarang soalan, kita boleh berbual di luar. 1703 01:20:34,480 --> 01:20:38,294