1 00:00:00,000 --> 00:00:07,810 2 00:00:07,810 --> 00:00:09,840 >> JASON HIRSCHHORN:歡迎光臨, 每個人,至第6週。 3 00:00:09,840 --> 00:00:14,790 我很高興看到你們都活得很好 測驗0後,因為我知道, 4 00:00:14,790 --> 00:00:15,810 是有點粗糙。 5 00:00:15,810 --> 00:00:18,370 但幸運的是,你的所有 做了令人難以置信的好。 6 00:00:18,370 --> 00:00:21,680 所以這是美妙的。 7 00:00:21,680 --> 00:00:25,840 如果你在我的部分,我已經給了最 你已經備份你的測驗。 8 00:00:25,840 --> 00:00:28,050 >> 一對夫婦的你,我滿足 下課。 9 00:00:28,050 --> 00:00:32,360 如果你是一個擴展的學生, 您還沒有收到您的回測驗 10 00:00:32,360 --> 00:00:35,490 然而,你的TF可能是工作就可以了 和分級它,將它找回來 11 00:00:35,490 --> 00:00:36,490 給您回复。 12 00:00:36,490 --> 00:00:39,650 所以,我的擴展學生誰 看現在 - 希望生活 - 13 00:00:39,650 --> 00:00:42,880 我會得到你的測驗 短期內也是如此。 14 00:00:42,880 --> 00:00:45,670 >> 我們今天的議程如下。 15 00:00:45,670 --> 00:00:50,170 首先,我們要介紹一些 資源CS50提供給你。 16 00:00:50,170 --> 00:00:54,590 我們要投奔測驗0下了, 我會回答任何問題,任何人 17 00:00:54,590 --> 00:00:57,360 有關於特定問題。 18 00:00:57,360 --> 00:01:02,050 然後,我們將去了 文件I / O和習題集5。 19 00:01:02,050 --> 00:01:07,360 那些過去的兩個主題將採取 達今日欄目的體積。 20 00:01:07,360 --> 00:01:11,680 >> 我每星期把這個列表為一個 提醒你所有,但核心 21 00:01:11,680 --> 00:01:14,650 節中,我們只為90分鐘 - 我們 不能涵蓋一切,我 22 00:01:14,650 --> 00:01:16,280 很想掩護你們。 23 00:01:16,280 --> 00:01:21,170 但我們有一噸的資源,為 你借鑒,你了解 24 00:01:21,170 --> 00:01:24,000 通過材料和工 你的習題集。 25 00:01:24,000 --> 00:01:30,810 >> 提醒一下,我有一個在線文字 中,設置為你填寫,如果你 26 00:01:30,810 --> 00:01:33,250 有任何意見對我來說, 正面和 27 00:01:33,250 --> 00:01:35,180 建設性的,關於部分。 28 00:01:35,180 --> 00:01:38,600 該URL坐落在此地。 29 00:01:38,600 --> 00:01:43,250 所以,請花一點時間,如果您有任何 反饋,無論是節期間, 30 00:01:43,250 --> 00:01:48,030 或之後,或者在您觀看視頻 在網上,給我你的反饋。 31 00:01:48,030 --> 00:01:52,100 我真的很感激它的任何和所有。 32 00:01:52,100 --> 00:01:55,730 >> 所以我一直有小對話 有很多我的 33 00:01:55,730 --> 00:01:59,350 學生們整個星期 - 因為我的手 回測驗,說起 34 00:01:59,350 --> 00:02:01,480 當然,看你怎麼做。 35 00:02:01,480 --> 00:02:05,120 和一個主題已經拿出了過來, 在多談論 - 在 36 00:02:05,120 --> 00:02:05,660 特別是 - 37 00:02:05,660 --> 00:02:07,710 習題集。 38 00:02:07,710 --> 00:02:13,090 我已經封裝的主題 在黑板上現在。 39 00:02:13,090 --> 00:02:16,630 >> 從本質上講,有一個區別 在轉彎的東西是間 40 00:02:16,630 --> 00:02:19,590 正確辦什麼事 做到這一點很好。 41 00:02:19,590 --> 00:02:22,920 大多數人一直在做夢幻 在正確性方面 - 42 00:02:22,920 --> 00:02:25,460 5人或4對所有的pset。 43 00:02:25,460 --> 00:02:27,930 大多數人越來越 這些所有的時間。 44 00:02:27,930 --> 00:02:31,150 >> 然而,僅僅因為你所做的 正確的事情並​​不意味著你已經 45 00:02:31,150 --> 00:02:34,450 做了一些為優雅,或 有效,或乾淨的你 46 00:02:34,450 --> 00:02:35,270 可以辦到的。 47 00:02:35,270 --> 00:02:36,790 而這正是設計 - 48 00:02:36,790 --> 00:02:39,230 並在較小的程度,風格 - 49 00:02:39,230 --> 00:02:40,450 軸的。 50 00:02:40,450 --> 00:02:45,130 因此,我推你的一切,和其他轉錄因子 是推動你們,不僅轉 51 00:02:45,130 --> 00:02:48,320 的事情是正確的,但把 在編碼很好的事情。 52 00:02:48,320 --> 00:02:53,060 >> 如果不這樣做不必要的FOR循環, 不重新計算的變量,如果 53 00:02:53,060 --> 00:02:53,800 你不必。 54 00:02:53,800 --> 00:02:58,520 例如,回想問題集 4,放置在磚時 55 00:02:58,520 --> 00:03:03,070 屏幕上,每一行 - 在每一個磚 給定的行具有相同的y坐標 - 56 00:03:03,070 --> 00:03:04,390 相同的高度坐標。 57 00:03:04,390 --> 00:03:07,930 >> 使y坐標也沒必要 可以在內部計算內 58 00:03:07,930 --> 00:03:11,070 嵌套的for循環,你可能使用 把屏幕上的磚塊。 59 00:03:11,070 --> 00:03:14,030 它僅需要將每一個計算 一次交換一排,或 60 00:03:14,030 --> 00:03:15,200 向下移動一行。 61 00:03:15,200 --> 00:03:19,760 所以說,如果有10個磚頭在 行,每一塊磚可以有相同的 62 00:03:19,760 --> 00:03:22,260 y坐標,而y坐標 可以只計算 63 00:03:22,260 --> 00:03:23,550 一旦所有這些的。 64 00:03:23,550 --> 00:03:27,810 >> 它並不需要計算10 次,也沒有那個必要計算 65 00:03:27,810 --> 00:03:30,220 要發生在實際 函數調用 - 66 00:03:30,220 --> 00:03:33,020 新gracked函數調用。 67 00:03:33,020 --> 00:03:37,820 因此,如果這是一個有點混亂的 你,更一般地,事 68 00:03:37,820 --> 00:03:40,730 並不需要發生的每一次 你經過一個FOR循環不應該 69 00:03:40,730 --> 00:03:42,900 把FOR循環裡面,不應該 發生一次你去的時間 70 00:03:42,900 --> 00:03:44,080 通過FOR循環。 71 00:03:44,080 --> 00:03:49,270 >> 我們看到了另一個很好的設計實例 在第3週為15,你可以保持 72 00:03:49,270 --> 00:03:50,500 軌道零。 73 00:03:50,500 --> 00:03:53,600 所以,當你初始化板, 保存 - 在一個全局變量,也許 - 74 00:03:53,600 --> 00:03:56,140 x和y坐標的零點。 75 00:03:56,140 --> 00:03:57,520 然後每當你 - 76 00:03:57,520 --> 00:04:00,310 在您的移動功能,只要您 一個成功的舉動,您更新 77 00:04:00,310 --> 00:04:02,040 零的位置。 78 00:04:02,040 --> 00:04:06,240 >> 這將節省您不必做 嵌套的for循環,以期待通過 79 00:04:06,240 --> 00:04:10,700 登上每一次在你的移動功能 並找到了零,或者找瓷磚, 80 00:04:10,700 --> 00:04:12,460 然後檢查接下來會發生什麼吧。 81 00:04:12,460 --> 00:04:16,329 相反,你必須的位置 零,你可以看上面,下面, 82 00:04:16,329 --> 00:04:21,160 以及它的左側和右側,以找到 你要找的瓷磚。 83 00:04:21,160 --> 00:04:24,970 >> 因此,在我們的節目條款 寫作,他們是永遠不夠大 84 00:04:24,970 --> 00:04:28,580 其中一些設計決策 真的要妨礙你 85 00:04:28,580 --> 00:04:31,670 程序,或使其運行速度比較慢, 或者甚至耗盡內存。 86 00:04:31,670 --> 00:04:35,030 但我們仍堅持你們 寫的優雅 87 00:04:35,030 --> 00:04:36,450 高效的代碼越好。 88 00:04:36,450 --> 00:04:39,910 >> 所以,如果你做的寫出來的東西 具有顯著較大 89 00:04:39,910 --> 00:04:44,660 範圍,它們將被寫入具有良好的 設計除了是正確的。 90 00:04:44,660 --> 00:04:46,300 因此,一些有 帶了這一點。 91 00:04:46,300 --> 00:04:48,560 這是我們正在尋找的 - 東西我們要繼續 92 00:04:48,560 --> 00:04:49,840 按你們的。 93 00:04:49,840 --> 00:04:52,460 >> 如果你有關於任何問題 你的程序設計,可以自由 94 00:04:52,460 --> 00:04:56,870 接觸到我,我很高興 走過你的程序和你在一起, 95 00:04:56,870 --> 00:05:01,320 並指出一些設計 你做,給你一些決定 96 00:05:01,320 --> 00:05:06,240 如何提出建議,甚至 更好的設計決策。 97 00:05:06,240 --> 00:05:08,870 >> 所以,我們要繼續前進 要說起測驗0。 98 00:05:08,870 --> 00:05:11,300 在我們這樣做,是否有人 有任何疑問什麼 99 00:05:11,300 --> 00:05:14,252 我已經介紹了這麼遠嗎? 100 00:05:14,252 --> 00:05:21,500 >> [沙沙噪聲] 101 00:05:21,500 --> 00:05:22,750 >> JASON HIRSCHHORN:七秒。 102 00:05:22,750 --> 00:05:23,250 確定。 103 00:05:23,250 --> 00:05:24,970 讓我們來談談測驗0位。 104 00:05:24,970 --> 00:05:26,700 大多數時候,你有你的測驗0的背上。 105 00:05:26,700 --> 00:05:29,820 如果你不這樣做,希望 你還記得它一下。 106 00:05:29,820 --> 00:05:34,770 但是,如果你已經採取測驗0,那麼你 在還可以使用到PDF在線 107 00:05:34,770 --> 00:05:35,890 樣品溶液。 108 00:05:35,890 --> 00:05:39,480 >> 沒有任何人有之前的任何問題 我們跳進了一周的有關材料 109 00:05:39,480 --> 00:05:41,520 在測驗0的特殊問題 - 110 00:05:41,520 --> 00:05:44,630 為什麼答案是它是什麼? 111 00:05:44,630 --> 00:05:47,255 是任何人都感到困惑什麼? 112 00:05:47,255 --> 00:05:50,230 即使你得到了正確的問題,但 只是希望我解釋了一下 113 00:05:50,230 --> 00:05:52,640 更多的,我很高興現在這樣做。 114 00:05:52,640 --> 00:05:57,800 >> 於是我問你們來 要準備好一些 115 00:05:57,800 --> 00:05:59,440 有關測驗0的想法。 116 00:05:59,440 --> 00:06:02,660 那麼,誰願意讓我們 開始用的問題或 117 00:06:02,660 --> 00:06:04,655 有關測驗0個評論? 118 00:06:04,655 --> 00:06:07,435 119 00:06:07,435 --> 00:06:10,410 >> [紙張的沙沙聲] 120 00:06:10,410 --> 00:06:11,470 >> JASON HIRSCHHORN:不是每個人都 做完美。 121 00:06:11,470 --> 00:06:12,720 所以我知道(笑) 122 00:06:12,720 --> 00:06:15,950 有有一些問題 關於測驗0。 123 00:06:15,950 --> 00:06:27,940 124 00:06:27,940 --> 00:06:28,590 確定。 125 00:06:28,590 --> 00:06:29,210 是。 126 00:06:29,210 --> 00:06:29,600 Ompica。 127 00:06:29,600 --> 00:06:30,520 >> OMPICA:10號。 128 00:06:30,520 --> 00:06:33,560 >> JASON HIRSCHHORN:10號。 129 00:06:33,560 --> 00:06:35,400 其中一個是10號? 130 00:06:35,400 --> 00:06:35,840 >> OMPICA:本 - 131 00:06:35,840 --> 00:06:36,420 >> JASON HIRSCHHORN:我haven't - 132 00:06:36,420 --> 00:06:37,670 >> OMPICA:將包括 - 133 00:06:37,670 --> 00:06:40,060 134 00:06:40,060 --> 00:06:42,180 >> JASON HIRSCHHORN:10號是八 為i - 寫八到我? 135 00:06:42,180 --> 00:06:42,980 >> OMPICA:是啊。 136 00:06:42,980 --> 00:06:43,630 >> JASON HIRSCHHORN:確定。 137 00:06:43,630 --> 00:06:47,390 所以另外一個問題,你可以有 問了我我有先見之明? 138 00:06:47,390 --> 00:06:48,630 答案是肯定的。 139 00:06:48,630 --> 00:06:52,060 在測驗前一節,我問 你們的代碼​​既英鎊和 140 00:06:52,060 --> 00:06:52,980 八到我。 141 00:06:52,980 --> 00:06:54,770 他們都發生在 出現在測驗。 142 00:06:54,770 --> 00:06:57,510 所以希望,你付出 注意這一點。 143 00:06:57,510 --> 00:07:02,520 >> 如果你有,那麼你將不得不 大概就這兩個做得很好。 144 00:07:02,520 --> 00:07:06,030 但八到我,我們實際上並沒有代碼 在課堂上,但它是,再次, 145 00:07:06,030 --> 00:07:07,500 問的測驗。 146 00:07:07,500 --> 00:07:13,270 因此,一對夫婦的事情要 注意編碼八到我的時候。 147 00:07:13,270 --> 00:07:17,320 的第一件事,每問題,是 你需要檢查字符串 148 00:07:17,320 --> 00:07:20,300 等於空。 149 00:07:20,300 --> 00:07:28,060 >> 一對夫婦的人試圖檢查以後 在程序中如果s支架我是 - 150 00:07:28,060 --> 00:07:30,940 在這樣一個特定的字符 字符串 - 等於空。 151 00:07:30,940 --> 00:07:35,600 但要記住,空本質上是 - 它的好,想到的 152 00:07:35,600 --> 00:07:39,100 null作為一個零指針 - 一個指針到零 - 153 00:07:39,100 --> 00:07:40,920 某處在內存中 你永遠無法訪問。 154 00:07:40,920 --> 00:07:44,730 >> 所以,如果事情是為null,則 知道它沒有被初始化, 155 00:07:44,730 --> 00:07:46,430 或者有什麼也沒有。 156 00:07:46,430 --> 00:07:50,950 所以s是一個char明星,S 支架i是一個char。 157 00:07:50,950 --> 00:07:57,410 所以是有意義的比較s到空, 但不發支架I為null。 158 00:07:57,410 --> 00:07:59,390 但是再一次 - 所以這是第一件事情 你應該做的事情 - 159 00:07:59,390 --> 00:08:03,510 檢查以確保你真正 有了一個真正的字符串。 160 00:08:03,510 --> 00:08:08,020 >> 接下來,你想去通過 每個字符的字符串。 161 00:08:08,020 --> 00:08:12,500 所以這將是像一個s支架 我舉個例子,如果我是你的迭代器。 162 00:08:12,500 --> 00:08:17,250 並採取該字符,然後 得到它的實際價值。 163 00:08:17,250 --> 00:08:21,800 你有它存儲為一個char,但 零的ASCII值 - 164 00:08:21,800 --> 00:08:23,010 零的性格 - 165 00:08:23,010 --> 00:08:25,450 實際上不是整數為零。 166 00:08:25,450 --> 00:08:28,700 它的一些其他數字,你可以 查ASCII表中。 167 00:08:28,700 --> 00:08:30,790 >> 這樣的一種方式來糾正該 - 可能糾正的最佳方式 168 00:08:30,790 --> 00:08:33,760 這 - ​​是從它減去 字符值 - 169 00:08:33,760 --> 00:08:35,140 零的一個字符。 170 00:08:35,140 --> 00:08:38,490 所以減去單引號,零, 另一個單引號。 171 00:08:38,490 --> 00:08:44,620 這將需要的任何數字你有 作為一個字符,並得到它等於 172 00:08:44,620 --> 00:08:46,720 數作為實際的整數。 173 00:08:46,720 --> 00:08:50,300 >> 那是非常相似的方法 很多人在發生 174 00:08:50,300 --> 00:08:52,800 問題設置2,與凱撒 和Viginere - 175 00:08:52,800 --> 00:08:55,160 這些密碼,當你 被旋轉它們。 176 00:08:55,160 --> 00:08:59,210 你擁有了它作為一個從打完 零到9,然後 - 視 177 00:08:59,210 --> 00:09:02,750 它不用在最終的數字 - 你需要乘以 178 00:09:02,750 --> 00:09:04,120 以10的冪。 179 00:09:04,120 --> 00:09:07,340 >> 有些人從後面移動到 前,再乘以個人 180 00:09:07,340 --> 00:09:08,940 以10的冪數。 181 00:09:08,940 --> 00:09:11,160 有些人感動 從前到後 - 182 00:09:11,160 --> 00:09:14,430 等了最高 訂單號第一 - 183 00:09:14,430 --> 00:09:18,190 並會拯救那些在 全局計數器變量。 184 00:09:18,190 --> 00:09:20,880 然後通過對每個時間 循環,乘以全球巨頭 185 00:09:20,880 --> 00:09:25,640 10計數器變量,使 空間的下一個字符。 186 00:09:25,640 --> 00:09:28,750 >> 所以這是沒有一點混亂 我寫在黑板上。 187 00:09:28,750 --> 00:09:31,550 但試樣溶液 是提供給您。 188 00:09:31,550 --> 00:09:32,870 但是,這些都是大事情 我們所期待的。 189 00:09:32,870 --> 00:09:36,400 另外一個檢查,以確保每個 個性確實是一個 190 00:09:36,400 --> 00:09:39,780 零點九,而不是字符之間 其他一些字符,比如一個A, 191 00:09:39,780 --> 00:09:41,160 例如。 192 00:09:41,160 --> 00:09:43,150 >> 這些都是我們所期待的東西 對於這個問題。 193 00:09:43,150 --> 00:09:46,510 194 00:09:46,510 --> 00:09:47,980 這是否回答你的問題? 195 00:09:47,980 --> 00:09:49,320 >> OMPICA:是啊。 196 00:09:49,320 --> 00:09:50,240 >> JASON HIRSCHHORN:確定。 197 00:09:50,240 --> 00:09:53,940 是否有任何其他問題 有關測驗0? 198 00:09:53,940 --> 00:09:55,440 怎麼樣編譯? 199 00:09:55,440 --> 00:09:56,740 每個人都編譯吧? 200 00:09:56,740 --> 00:09:58,370 號 201 00:09:58,370 --> 00:09:58,840 當時有 - 202 00:09:58,840 --> 00:10:01,010 [笑] 203 00:10:01,010 --> 00:10:03,265 有關的任何問題 編譯過程? 204 00:10:03,265 --> 00:10:06,050 205 00:10:06,050 --> 00:10:06,966 哇。 206 00:10:06,966 --> 00:10:11,090 >> [紙張的沙沙聲] 207 00:10:11,090 --> 00:10:11,520 >> JASON HIRSCHHORN:是的。 208 00:10:11,520 --> 00:10:11,700 邁克爾。 209 00:10:11,700 --> 00:10:14,140 >> 邁克爾:是7號 - 隨機? 210 00:10:14,140 --> 00:10:16,500 >> JASON HIRSCHHORN:號碼7。 211 00:10:16,500 --> 00:10:20,670 數字7是得到一個隨機整數。 212 00:10:20,670 --> 00:10:21,110 優秀的。 213 00:10:21,110 --> 00:10:25,630 所以你給出一個整數a和 整數b,你想一個隨機 214 00:10:25,630 --> 00:10:28,710 a和b之間的整數。 215 00:10:28,710 --> 00:10:31,740 實際上,我們可以這樣寫一個關於 該板,因為這一個 216 00:10:31,740 --> 00:10:33,320 是一行代碼 - 217 00:10:33,320 --> 00:10:34,390 一種方式來做到這一點。 218 00:10:34,390 --> 00:10:37,810 >> 所以我們作為一個給定的DRAND 函數我們可以使用。 219 00:10:37,810 --> 00:10:38,820 又是什麼DRAND - 220 00:10:38,820 --> 00:10:40,290 假設它已經播種 - 221 00:10:40,290 --> 00:10:42,316 是什麼DRAND返回? 222 00:10:42,316 --> 00:10:44,840 >> MICHAEL:0.0和1.0之間的浮點數。 223 00:10:44,840 --> 00:10:45,530 >> JASON HIRSCHHORN:許多 - 是啊。 224 00:10:45,530 --> 00:10:47,910 一個數字0和1之間。 225 00:10:47,910 --> 00:10:51,760 因此,我們有b和。 226 00:10:51,760 --> 00:10:55,480 然後,我們有我們的隨機數 0和1之間賜給我們DRAND。 227 00:10:55,480 --> 00:11:01,480 228 00:11:01,480 --> 00:11:06,630 有些人試圖把B或B減 一,什麼裡面那些 229 00:11:06,630 --> 00:11:07,960 括號內。 230 00:11:07,960 --> 00:11:11,210 這將意味著他們 參數給這個函數。 231 00:11:11,210 --> 00:11:13,450 >> DRAND不帶任何參數 - 喜歡做的getString 232 00:11:13,450 --> 00:11:14,330 不帶任何參數。 233 00:11:14,330 --> 00:11:16,600 所以它只是開括號,靠近 括號 - 這,本身就是 234 00:11:16,600 --> 00:11:17,330 函數調用。 235 00:11:17,330 --> 00:11:19,770 這給了你一個數字 0和1之間。 236 00:11:19,770 --> 00:11:22,820 當然,我們有一個整體範圍 該號碼可以是英寸 237 00:11:22,820 --> 00:11:28,470 >> 說,如果b為10和5,我們真的 想用範圍為5的數。 238 00:11:28,470 --> 00:11:36,940 因此,我們需要做的下一件事是 由範圍B減一乘這一點。 239 00:11:36,940 --> 00:11:40,380 這樣假設的成倍增加。 240 00:11:40,380 --> 00:11:42,590 而這將給我們一個數 在給定的範圍內。 241 00:11:42,590 --> 00:11:46,610 而這特定範圍即 B減一之間的差異。 242 00:11:46,610 --> 00:11:50,030 >> 終於,那將只能從給它 - 說B減一之間的範圍 243 00:11:50,030 --> 00:11:52,520 是5,那會給我們一個 數從0到5。 244 00:11:52,520 --> 00:11:56,000 但是,如果實際上5,我們需要提高 這個範圍可達到它的 245 00:11:56,000 --> 00:12:01,380 其實應該是,通過增加一個。 246 00:12:01,380 --> 00:12:02,580 從而使得到的邏輯正確。 247 00:12:02,580 --> 00:12:03,745 然後,你會不會有 另一個問題? 248 00:12:03,745 --> 00:12:04,547 >> MICHAEL:號 249 00:12:04,547 --> 00:12:06,010 我只是覺得非常愚蠢的現在。 250 00:12:06,010 --> 00:12:06,405 [笑] 251 00:12:06,405 --> 00:12:06,730 >> JASON HIRSCHHORN:號 252 00:12:06,730 --> 00:12:08,640 不要覺得自己很愚蠢。 253 00:12:08,640 --> 00:12:10,560 許多人掙扎 帶著這樣的疑問。 254 00:12:10,560 --> 00:12:13,920 然後,其他的問題是,DRAND, 你說,給你一個浮動 - 255 00:12:13,920 --> 00:12:14,940 返回一個浮點數。 256 00:12:14,940 --> 00:12:18,020 但這個功能居然問 對於一個整數返回。 257 00:12:18,020 --> 00:12:23,700 >> 你不需要顯式轉換本 為整數,因為這些 258 00:12:23,700 --> 00:12:29,090 操作將把它作為一個全 浮動 - 作為一個浮點數。 259 00:12:29,090 --> 00:12:31,570 這樣的意志 - 哪怕這 是一個整數,這將 260 00:12:31,570 --> 00:12:32,890 正確地成倍增加。 261 00:12:32,890 --> 00:12:34,000 所有的乘法會的工作。 262 00:12:34,000 --> 00:12:35,060 你不需要在這裡投。 263 00:12:35,060 --> 00:12:36,480 其實,你不應該投它。 264 00:12:36,480 --> 00:12:37,310 >> 那會 - 265 00:12:37,310 --> 00:12:40,750 如果你想投一個數字 這是介於0和1 - 266 00:12:40,750 --> 00:12:42,680 一個隨機數,一個浮點 - 267 00:12:42,680 --> 00:12:47,850 然後它要么是只有0或1,所以 你將失去所有的精度。 268 00:12:47,850 --> 00:12:50,120 但最後,當您返回時, 它會自動獲取 269 00:12:50,120 --> 00:12:51,620 發送回為整數。 270 00:12:51,620 --> 00:12:56,870 所以,你不需要做 該鑄造自己。 271 00:12:56,870 --> 00:13:00,810 >> 因此,這是答案 這個問題,數字7。 272 00:13:00,810 --> 00:13:02,190 在測驗0沒有其他問題? 273 00:13:02,190 --> 00:13:03,300 是啊,安妮。 274 00:13:03,300 --> 00:13:05,050 >> 安妮:我們什麼時候使用遞歸 - 275 00:13:05,050 --> 00:13:07,850 當我們使用迭代循環? 276 00:13:07,850 --> 00:13:10,210 >> JASON HIRSCHHORN:你什麼時候使用 遞歸 - 因此更一般地,本 277 00:13:10,210 --> 00:13:14,110 與遞歸的利弊 迭代方法。 278 00:13:14,110 --> 00:13:17,110 誰能提供一個親還是一個反面? 279 00:13:17,110 --> 00:13:19,460 請? 280 00:13:19,460 --> 00:13:20,140 沒有任何人可以。 281 00:13:20,140 --> 00:13:22,526 誰可以提供一個專業或一個反面? 282 00:13:22,526 --> 00:13:26,963 >> [紙張的沙沙聲] 283 00:13:26,963 --> 00:13:29,730 >> 學生1:遞歸是少 編碼 - 少打字? 284 00:13:29,730 --> 00:13:33,170 >> JASON HIRSCHHORN:那麼一般, 遞歸尤其是,函數 - 285 00:13:33,170 --> 00:13:35,750 或者像合併的算法 排序 - 這使它 286 00:13:35,750 --> 00:13:37,300 以遞歸的方法 - 287 00:13:37,300 --> 00:13:40,710 可能是更直接 編寫遞歸。 288 00:13:40,710 --> 00:13:43,940 而就更有意義 遞歸地做到這一點。 289 00:13:43,940 --> 00:13:46,230 所以這將是一個親以遞歸。 290 00:13:46,230 --> 00:13:46,610 其他人呢? 291 00:13:46,610 --> 00:13:47,467 是嗎? 292 00:13:47,467 --> 00:13:49,240 >> 學生2:CON遞歸 - 293 00:13:49,240 --> 00:13:50,940 它使用更多的內存。 294 00:13:50,940 --> 00:13:52,200 >> JASON HIRSCHHORN:那麼完全正確。 295 00:13:52,200 --> 00:13:55,720 遞歸函數將繼續增加 堆棧幀堆棧。 296 00:13:55,720 --> 00:13:59,690 所以,如果你經營了很多的 數字和必須調用此 297 00:13:59,690 --> 00:14:02,560 功能很多,那麼你肯定會 佔用更多的內存,而 298 00:14:02,560 --> 00:14:05,810 迭代的方法只會把一 堆棧幀堆棧上,因為 299 00:14:05,810 --> 00:14:08,420 這一切在一個函數中發生。 300 00:14:08,420 --> 00:14:11,010 >> 任何其它的優點和缺點? 301 00:14:11,010 --> 00:14:11,500 是啊。 302 00:14:11,500 --> 00:14:12,550 >> 學生3:優點遞歸。 303 00:14:12,550 --> 00:14:15,950 您不必確定 提前多少次 304 00:14:15,950 --> 00:14:17,660 代碼必須被重複。 305 00:14:17,660 --> 00:14:22,810 可以有預定數量的 你必須遍歷,那麼次 306 00:14:22,810 --> 00:14:26,420 遞歸是更好的,因為 它需要的結果。 307 00:14:26,420 --> 00:14:27,780 >> JASON HIRSCHHORN:我認為這是真的。 308 00:14:27,780 --> 00:14:30,770 但我認為,在這兩種情況下 你永遠不會 - 309 00:14:30,770 --> 00:14:33,290 你可能會得到一些 來自用戶的輸入。 310 00:14:33,290 --> 00:14:35,990 或該功能將有一定的投入 這將確定多少次 311 00:14:35,990 --> 00:14:36,730 應該運行。 312 00:14:36,730 --> 00:14:39,520 所以通常,你不會硬編碼 - 即使是在迭代的方法 - 如何 313 00:14:39,520 --> 00:14:40,940 很多次,循環應該運行。 314 00:14:40,940 --> 00:14:46,100 315 00:14:46,100 --> 00:14:48,670 >> 你是否也有另一個你 想著,安妮? 316 00:14:48,670 --> 00:14:49,330 確定。 317 00:14:49,330 --> 00:14:51,650 因此,那些可能是兩個 - 318 00:14:51,650 --> 00:14:54,370 最大的親和最大的 CON到一個遞歸與 319 00:14:54,370 --> 00:14:57,080 迭代方法。 320 00:14:57,080 --> 00:14:57,690 確定。 321 00:14:57,690 --> 00:14:59,465 什麼都在測驗0? 322 00:14:59,465 --> 00:15:08,940 323 00:15:08,940 --> 00:15:09,920 >> 讓我們繼續前進。 324 00:15:09,920 --> 00:15:15,260 文件I / O。有一個絕妙的短 本週在文件I / O有希望 325 00:15:15,260 --> 00:15:19,270 你看過多 時間和欽佩。 326 00:15:19,270 --> 00:15:22,910 大量的工作去成,我也 聽說它是出奇的幫助。 327 00:15:22,910 --> 00:15:25,740 我也包括在這張幻燈片的鏈接, 如果你還沒有一個 328 00:15:25,740 --> 00:15:29,160 機會觀看它的10倍。 329 00:15:29,160 --> 00:15:35,280 >> 所以,我們要簡要地走在 主要步驟來打開和工作 330 00:15:35,280 --> 00:15:38,400 與文件,然後我們將 潛入編碼問題之前, 331 00:15:38,400 --> 00:15:40,400 檢查問題集。 332 00:15:40,400 --> 00:15:44,330 所以,再一次,我打算把這段話放在 在屏幕上,但我要談的 333 00:15:44,330 --> 00:15:47,630 只是一個關於什麼我們是分鐘 與文件在這裡做I/O-- 334 00:15:47,630 --> 00:15:49,090 這是什麼意思? 335 00:15:49,090 --> 00:15:55,280 >> 這意味著,我們可以創建 的程序,然後有我們的節目 336 00:15:55,280 --> 00:16:00,370 退出,並沒有作出任何影響 我們的計劃之外的世界。 337 00:16:00,370 --> 00:16:04,630 但是,當我們開始對文件進行工作 - 兩個讀他們和創造 338 00:16:04,630 --> 00:16:10,460 他們 - 我們可以對一些效果 我們的計劃外面的世界。 339 00:16:10,460 --> 00:16:15,440 >> 就像如果Microsoft Word中無法 做任何Word文檔,然後 340 00:16:15,440 --> 00:16:18,710 一旦微軟的Word退出,所有的 工作將消失,並會 341 00:16:18,710 --> 00:16:19,740 真的是無用的。 342 00:16:19,740 --> 00:16:23,620 我們最終希望能夠 編寫能夠影響計劃的 343 00:16:23,620 --> 00:16:31,350 他們周圍的世界,無論是通過採取在 複雜的輸入 - 在文件中的條款, 344 00:16:31,350 --> 00:16:37,080 通過文件,並且還創造有趣 和令人信服的輸出 - 345 00:16:37,080 --> 00:16:39,520 在不同類型的文件方面。 346 00:16:39,520 --> 00:16:43,730 >> 所以這就是為什麼我們開始 學習如何處理文件。 347 00:16:43,730 --> 00:16:47,080 更具體地,什麼 我們做的是如下。 348 00:16:47,080 --> 00:16:47,680 這是非常簡單的。 349 00:16:47,680 --> 00:16:51,530 目前只有幾個步驟,和 在此列出的這些代碼。 350 00:16:51,530 --> 00:16:55,130 因此,我們要經過 這段代碼的每一行。 351 00:16:55,130 --> 00:16:57,630 >> 首先,可以看到突出 - 352 00:16:57,630 --> 00:17:01,330 當你正在使用的文件, 不管文件的類型是, 353 00:17:01,330 --> 00:17:02,670 你需要將其打開。 354 00:17:02,670 --> 00:17:05,130 而這是通過調用FOPEN - 355 00:17:05,130 --> 00:17:05,950 就在這裡。 356 00:17:05,950 --> 00:17:07,980 您包含文件的名稱。 357 00:17:07,980 --> 00:17:11,930 如果文件是不是在你的目錄中, 或者所在的文件夾這個程序 358 00:17:11,930 --> 00:17:15,910 生活,那麼你還需要包括 一個路徑,如該文件是。 359 00:17:15,910 --> 00:17:19,099 >> 我們將假定這 所謂“的text.txt”文件 - 360 00:17:19,099 --> 00:17:24,220 一個簡單的文本文件 - 在 同一文件夾作為這個計劃是。 361 00:17:24,220 --> 00:17:26,859 所以這是另一回事,以保持在 心態 - 如果你想打開一個文件 362 00:17:26,859 --> 00:17:30,050 在其他地方,你的實際需要 以包括它的位置。 363 00:17:30,050 --> 00:17:33,520 >> 其次,你可以將參數傳遞給 FOPEN,這就是你想要做什麼 364 00:17:33,520 --> 00:17:34,620 與該文件。 365 00:17:34,620 --> 00:17:38,450 有三個主要的論據, 你要傳遞給fopen。 366 00:17:38,450 --> 00:17:40,060 誰可以給我那三個? 367 00:17:40,060 --> 00:17:44,960 368 00:17:44,960 --> 00:17:47,130 誰可以給我其中之一嗎? 369 00:17:47,130 --> 00:17:48,130 是。 370 00:17:48,130 --> 00:17:50,010 >> 學生4:文件名? 371 00:17:50,010 --> 00:17:50,440 >> JASON HIRSCHHORN:對不起。 372 00:17:50,440 --> 00:17:55,490 您可以通過三種主要觀點 作為第二個參數給fopen。 373 00:17:55,490 --> 00:17:57,060 你說得對 - 文件名 是第一個參數。 374 00:17:57,060 --> 00:18:01,620 但第二個參數給fopen是 一般三根弦,和 - 是的。 375 00:18:01,620 --> 00:18:02,210 位於Aleja。 376 00:18:02,210 --> 00:18:03,490 >> ALEJA:A可以進行追加。 377 00:18:03,490 --> 00:18:06,840 >> JASON HIRSCHHORN:A,如果你想 追加到已存在的文件。 378 00:18:06,840 --> 00:18:07,810 >> 學生5:R讀取。 379 00:18:07,810 --> 00:18:09,930 >> JASON HIRSCHHORN:A,如果你 想從一個文件中讀取。 380 00:18:09,930 --> 00:18:10,670 >> 學生6:W表示寫。 381 00:18:10,670 --> 00:18:12,840 >> JASON HIRSCHHORN:和W,如果你 要寫入文件。 382 00:18:12,840 --> 00:18:17,570 因此,在這種情況下,我們正在編寫 到文件,所以我們有瓦特 383 00:18:17,570 --> 00:18:22,360 你打開它,你也必須保存 文件的地方,那就是與 384 00:18:22,360 --> 00:18:26,000 代碼的左手側 賦值運算符 - 385 00:18:26,000 --> 00:18:31,220 我創建一個指向文件 叫,在這種情況下,文件。 386 00:18:31,220 --> 00:18:36,070 >> 我們不會擔心什麼 這全部大寫作品就是。 387 00:18:36,070 --> 00:18:40,600 不必多說,它是一個長 零和一的流。 388 00:18:40,600 --> 00:18:44,970 這就是我們如何來 運行它,了解它。 389 00:18:44,970 --> 00:18:47,300 >> 接下來的事情,我們需要做的 - 和 這是非常重要的 - 390 00:18:47,300 --> 00:18:49,070 每當你打開一個文件 - 391 00:18:49,070 --> 00:18:54,250 其實,只要你調用malloc,為 例如,並得到一些內存,並嘗試 392 00:18:54,250 --> 00:18:57,980 並將其保存在一個指針,你總是 要檢查,以確保該 393 00:18:57,980 --> 00:19:00,230 函數沒有返回null。 394 00:19:00,230 --> 00:19:05,230 >> 因此,在這種情況下,我們檢查,以 確保我們實際上打開了 395 00:19:05,230 --> 00:19:10,230 文件正確,並且有 在我們的程序沒有錯誤。 396 00:19:10,230 --> 00:19:15,160 接下來,一旦我們檢查,以確保 我們有一個工作的文件,我們可以 397 00:19:15,160 --> 00:19:18,520 寫入或讀出, 或追加到文件。 398 00:19:18,520 --> 00:19:24,270 在這種情況下,我只是簡單地打印 一行到該文件。 399 00:19:24,270 --> 00:19:25,450 >> 我怎麼知道? 400 00:19:25,450 --> 00:19:27,990 好吧,我使用這個功能 所謂FPRINTF。 401 00:19:27,990 --> 00:19:30,970 所有將要使用的功能 寫入或從其中讀出或當 402 00:19:30,970 --> 00:19:34,950 操作文件將類似於 你已經看到過,但是功能 403 00:19:34,950 --> 00:19:38,420 先從字母F, 站立文件。 404 00:19:38,420 --> 00:19:43,440 和fprintf,不像我們的正常打印 應用程序,需要一個額外的參數, 405 00:19:43,440 --> 00:19:47,800 那是文件,你 希望此行打印到。 406 00:19:47,800 --> 00:19:50,640 >> 我沒有什麼要 ohai的右側。 407 00:19:50,640 --> 00:19:52,860 我沒有第三 參數對printf - 408 00:19:52,860 --> 00:19:57,030 或者第二個參數的printf時, 第三個參數fprintf等,因為我 409 00:19:57,030 --> 00:19:59,480 沒有在這裡任何佔位符。 410 00:19:59,480 --> 00:20:01,070 我不包括任何變量。 411 00:20:01,070 --> 00:20:06,070 但同樣,和FPRINTF所有這些文件的 與文件操作的函數 412 00:20:06,070 --> 00:20:09,820 通常將需要的文件 上,他們正在運作。 413 00:20:09,820 --> 00:20:15,960 >> 最後,最後重要的事情 做的是關閉該文件,​​就像 414 00:20:15,960 --> 00:20:19,530 與 - 每當我們用malloc的東西, 我們要釋放的東西,免得我們 415 00:20:19,530 --> 00:20:22,730 有內存洩漏 - 我們希望 關閉我們的文件。 416 00:20:22,730 --> 00:20:28,180 如果該程序沒有關閉退出 該文件,賠率是不會有事 417 00:20:28,180 --> 00:20:30,050 錯了,特別是如果它 是個小巧的文件。 418 00:20:30,050 --> 00:20:35,020 >> 但肯定是良好的編碼風格 實踐總是閉上你的文件 419 00:20:35,020 --> 00:20:38,050 當你使用它就完蛋了。 420 00:20:38,050 --> 00:20:43,630 所以這是文件的基本I / O。 你可能已經看到過,或 421 00:20:43,630 --> 00:20:45,710 在這夢幻般的短看著它。 422 00:20:45,710 --> 00:20:48,410 沒有任何人有任何疑問,前 我們進入一些練習編碼 423 00:20:48,410 --> 00:20:51,800 問題,關於文件I / O或 步驟我剛剛去了? 424 00:20:51,800 --> 00:21:00,198 425 00:21:00,198 --> 00:21:03,162 >> [打字聲音] 426 00:21:03,162 --> 00:21:04,150 >> JASON HIRSCHHORN:你 有一個問題,AVI? 427 00:21:04,150 --> 00:21:04,660 >> AVI:號 428 00:21:04,660 --> 00:21:04,740 >> JASON HIRSCHHORN:確定。 429 00:21:04,740 --> 00:21:06,746 我打算再等 7秒。 430 00:21:06,746 --> 00:21:07,590 [笑] 431 00:21:07,590 --> 00:21:08,620 這是一個非常好的提示。 432 00:21:08,620 --> 00:21:10,750 你們就是不喜歡 問這問那。 433 00:21:10,750 --> 00:21:11,660 這很好。 434 00:21:11,660 --> 00:21:12,330 確定。 435 00:21:12,330 --> 00:21:17,620 所以,我們的第一個實踐的問題是,我們是 要複製的功能 436 00:21:17,620 --> 00:21:22,330 一個命令行工具,你可能 副本 - 前使用 - 437 00:21:22,330 --> 00:21:23,500 複製工具。 438 00:21:23,500 --> 00:21:28,050 如果您鍵入CP,然後傳遞兩個 參數傳遞到你的終端,你可以 439 00:21:28,050 --> 00:21:28,980 複製文件。 440 00:21:28,980 --> 00:21:31,220 而這正是我們要 到現在寫的。 441 00:21:31,220 --> 00:21:35,830 >> 所以,再一次,讀了這張幻燈片中,我倒是 你寫一個程序,需要 442 00:21:35,830 --> 00:21:38,130 二,只有兩個命令行 論據 - 443 00:21:38,130 --> 00:21:40,750 源文件和目標文件 - 444 00:21:40,750 --> 00:21:44,590 並複製源中的內容 文件複製到目標文件 445 00:21:44,590 --> 00:21:46,960 1字節的時間。 446 00:21:46,960 --> 00:21:48,510 所以這是一個很多要求。 447 00:21:48,510 --> 00:21:52,200 >> 同樣,一個好方法,這是對 沒有直奔C代碼,但 448 00:21:52,200 --> 00:21:54,280 把它分解成幾個步驟。 449 00:21:54,280 --> 00:21:58,400 首先,想想邏輯 - 正是 就是我要問你做 - 450 00:21:58,400 --> 00:22:00,620 並了解所有的 步驟對這個問題。 451 00:22:00,620 --> 00:22:04,410 不是在C中,只是在一些偽代碼, 或者甚至是心理模型 452 00:22:04,410 --> 00:22:06,030 這是怎麼回事。 453 00:22:06,030 --> 00:22:10,050 >> 接下來,一旦你有偽下來, 弄清楚如何的偽代碼 454 00:22:10,050 --> 00:22:14,600 地圖上的工具和事情,我們已經 學會了在C使用 455 00:22:14,600 --> 00:22:19,070 >> 最後,一旦你把所有的 在一起,你可以編寫問題。 456 00:22:19,070 --> 00:22:23,370 需要5到10分鐘,以 在這個問題上工作。 457 00:22:23,370 --> 00:22:25,800 我把說明書 備份在第二。 458 00:22:25,800 --> 00:22:27,990 然後我們要去投奔 的偽代碼,和代碼 459 00:22:27,990 --> 00:22:29,230 它生活作為一個群體。 460 00:22:29,230 --> 00:22:31,640 >> 如果您有任何問題,而你 這方面的工作,可以自由地提高 461 00:22:31,640 --> 00:22:34,260 你的手,我會來 周圍並回答他們。 462 00:22:34,260 --> 00:22:37,020 463 00:22:37,020 --> 00:22:39,330 >> 學生7:我可以刷卡 一張紙? 464 00:22:39,330 --> 00:22:41,537 >> JASON HIRSCHHORN:這是怎麼回事? 465 00:22:41,537 --> 00:26:46,047 466 00:26:46,047 --> 00:26:48,043 >> [打字聲音] 467 00:26:48,043 --> 00:26:48,730 >> JASON HIRSCHHORN:確定。 468 00:26:48,730 --> 00:26:51,710 讓我們在第一偽代碼,和 然後我給你一對夫婦更 469 00:26:51,710 --> 00:26:52,960 分鐘完成編碼。 470 00:26:52,960 --> 00:26:55,540 471 00:26:55,540 --> 00:26:58,650 >> 誰願意開始我關閉 與第一線 472 00:26:58,650 --> 00:27:00,030 偽代碼這個功能呢? 473 00:27:00,030 --> 00:27:03,330 474 00:27:03,330 --> 00:27:05,740 >> 學生8:檢查以確保 給您提供兩個文件。 475 00:27:05,740 --> 00:27:06,990 >> JASON HIRSCHHORN:確定。 476 00:27:06,990 --> 00:27:21,270 477 00:27:21,270 --> 00:27:22,990 如果我們不是? 478 00:27:22,990 --> 00:27:25,974 >> 學生8:我將返回0。 479 00:27:25,974 --> 00:27:27,872 >> JASON HIRSCHHORN:我們是否應該返回0? 480 00:27:27,872 --> 00:27:30,182 >> 學生8:返回一個 - 481 00:27:30,182 --> 00:27:30,650 消隱。 482 00:27:30,650 --> 00:27:30,850 抱歉。 483 00:27:30,850 --> 00:27:31,210 >> JASON HIRSCHHORN:是啊。 484 00:27:31,210 --> 00:27:32,710 可能不為0。 485 00:27:32,710 --> 00:27:34,680 因為0表示一切都很好。 486 00:27:34,680 --> 00:27:35,030 確定。 487 00:27:35,030 --> 00:27:36,730 所以這是第一行 的偽代碼。 488 00:27:36,730 --> 00:27:38,715 誰擁有偽代碼的第二行? 489 00:27:38,715 --> 00:27:40,630 >> 學生9:打開這兩個文件? 490 00:27:40,630 --> 00:27:41,880 >> JASON HIRSCHHORN:打開這兩個文件。 491 00:27:41,880 --> 00:27:49,970 492 00:27:49,970 --> 00:27:50,920 好不好? 493 00:27:50,920 --> 00:27:52,850 >> 學生10:檢查 如果該文件是否為NULL? 494 00:27:52,850 --> 00:28:10,906 495 00:28:10,906 --> 00:28:12,580 >> JASON HIRSCHHORN:檢查並 肯定也不是NULL。 496 00:28:12,580 --> 00:28:15,800 順便說一句 - 497 00:28:15,800 --> 00:28:17,540 斜線0 - 498 00:28:17,540 --> 00:28:18,887 是空? 499 00:28:18,887 --> 00:28:20,080 >> 學生11:第 500 00:28:20,080 --> 00:28:21,190 >> JASON HIRSCHHORN:這是不是NULL。 501 00:28:21,190 --> 00:28:23,400 這就是所謂的NULL結束。 502 00:28:23,400 --> 00:28:25,580 它實際上是拼寫只有一個湖 503 00:28:25,580 --> 00:28:28,580 所以,檢查針對的東西是 - 這實際上是一個字 - 504 00:28:28,580 --> 00:28:31,710 因此檢查針對的東西是 不一樣的檢查,看它是否 505 00:28:31,710 --> 00:28:32,690 等於NULL。 506 00:28:32,690 --> 00:28:34,100 >> 有的人 - 507 00:28:34,100 --> 00:28:36,040 在他們的測驗和他們的問題 套 - 已經得到了 508 00:28:36,040 --> 00:28:36,890 二那些混淆。 509 00:28:36,890 --> 00:28:38,830 但其中的兩個是 其實不同。 510 00:28:38,830 --> 00:28:40,220 一個結尾的字符串 - 511 00:28:40,220 --> 00:28:43,210 1是一個指針為0。 512 00:28:43,210 --> 00:28:46,490 >> 學生12:你為什麼不檢查 確保該文件是不是NULL 513 00:28:46,490 --> 00:28:48,670 你打開它們之前? 514 00:28:48,670 --> 00:28:54,772 >> JASON HIRSCHHORN:所以節省開 一些在該文件中。 515 00:28:54,772 --> 00:28:57,780 如果你去回到這裡 - 516 00:28:57,780 --> 00:28:59,520 所以這條線 - FOPEN - 517 00:28:59,520 --> 00:29:05,300 會給你一個地址和存儲 在文件中的地址,如果它的工作原理。 518 00:29:05,300 --> 00:29:07,650 如果它不工作,它 將存儲NULL - 519 00:29:07,650 --> 00:29:08,020 >> 學生12:哦。 520 00:29:08,020 --> 00:29:08,180 確定。 521 00:29:08,180 --> 00:29:08,500 得了你。 522 00:29:08,500 --> 00:29:09,050 >> JASON HIRSCHHORN:在文件中。 523 00:29:09,050 --> 00:29:11,990 所以,你可以不檢查是否為NULL 你打開它們。 524 00:29:11,990 --> 00:29:13,520 NULL表示什麼都沒有 正常工作。 525 00:29:13,520 --> 00:29:18,030 526 00:29:18,030 --> 00:29:18,740 確定。 527 00:29:18,740 --> 00:29:22,590 因此,檢查,以確保兩者都不是? 528 00:29:22,590 --> 00:29:23,200 或者是? 529 00:29:23,200 --> 00:29:23,770 我們會怎麼想? 530 00:29:23,770 --> 00:29:24,310 我們將一起去了。 531 00:29:24,310 --> 00:29:24,520 >> 學生13:是。 532 00:29:24,520 --> 00:29:25,020 >> JASON HIRSCHHORN:是? 533 00:29:25,020 --> 00:29:25,930 兩者都不是? 534 00:29:25,930 --> 00:29:26,350 >> 學生13:是。 535 00:29:26,350 --> 00:29:26,390 >> JASON HIRSCHHORN:確定。 536 00:29:26,390 --> 00:29:28,510 我們似乎有一些 在這種共識。 537 00:29:28,510 --> 00:29:30,520 無論是NULL。 538 00:29:30,520 --> 00:29:32,250 OK,偽代碼的下一行。 539 00:29:32,250 --> 00:29:33,600 誰沒有給我行了嗎? 540 00:29:33,600 --> 00:29:37,350 541 00:29:37,350 --> 00:29:38,295 我們會等你的。 542 00:29:38,295 --> 00:29:39,020 是啊。 543 00:29:39,020 --> 00:29:40,895 >> 學生14:您必須閱讀 從第一個文件? 544 00:29:40,895 --> 00:29:42,290 >> JASON HIRSCHHORN:確定。 545 00:29:42,290 --> 00:29:46,240 >> 學生14:或者我們用fscanf和 類似的東西,第一個文件? 546 00:29:46,240 --> 00:29:50,650 >> JASON HIRSCHHORN:因此,我們要 從第一個文件中讀取和 - 547 00:29:50,650 --> 00:29:51,900 讓我們把這種權利在這裡。 548 00:29:51,900 --> 00:30:00,600 549 00:30:00,600 --> 00:30:01,880 讀取源文件。 550 00:30:01,880 --> 00:30:05,370 然後,就在我們我們做什麼 從源文件中讀取? 551 00:30:05,370 --> 00:30:06,620 別人? 552 00:30:06,620 --> 00:30:09,150 553 00:30:09,150 --> 00:30:12,190 >> 學生15:寫入到 目標文件? 554 00:30:12,190 --> 00:30:22,080 555 00:30:22,080 --> 00:30:25,620 >> JASON HIRSCHHORN:我們寫 目標文件,以及 - 556 00:30:25,620 --> 00:30:26,210 確定。 557 00:30:26,210 --> 00:30:30,030 是我們缺少什麼? 558 00:30:30,030 --> 00:30:32,460 其他人誰沒有給我一個 代碼行了 - 偽代碼。 559 00:30:32,460 --> 00:30:33,510 是啊。 560 00:30:33,510 --> 00:30:36,540 >> 學生16:也許你可以隨時查詢 是否有東西可以讀, 561 00:30:36,540 --> 00:30:37,970 就像下一行? 562 00:30:37,970 --> 00:30:39,550 這就像下一行, 看它是否存在。 563 00:30:39,550 --> 00:30:40,660 >> [電子提示音] 564 00:30:40,660 --> 00:30:41,095 >> JASON HIRSCHHORN:哎呀。 565 00:30:41,095 --> 00:30:43,120 這是我的日記軟件。 566 00:30:43,120 --> 00:30:43,580 是嗎? 567 00:30:43,580 --> 00:30:44,960 >> 學生16:是啊。 568 00:30:44,960 --> 00:30:48,940 >> JASON HIRSCHHORN:所以給 它給我更多的時間。 569 00:30:48,940 --> 00:30:51,640 >> 學生16:檢查是否有 從靜止的下一行 570 00:30:51,640 --> 00:30:52,920 源文件中讀取。 571 00:30:52,920 --> 00:30:53,500 >> JASON HIRSCHHORN:確定。 572 00:30:53,500 --> 00:30:56,060 因此,我們不讀線 - 這裡被讀取字節 - 573 00:30:56,060 --> 00:30:57,590 但你是正確的。 574 00:30:57,590 --> 00:31:00,040 我們要讀取和寫入,直到 有沒有更多的字節。 575 00:31:00,040 --> 00:31:11,430 576 00:31:11,430 --> 00:31:11,735 確定。 577 00:31:11,735 --> 00:31:16,940 等等這些真正應該縮進 有點,因為他們在那裡。 578 00:31:16,940 --> 00:31:17,470 對不對? 579 00:31:17,470 --> 00:31:20,620 直到我們出的字節,我們要 從源文件讀取和寫入 580 00:31:20,620 --> 00:31:22,160 到目標文件。 581 00:31:22,160 --> 00:31:24,510 >> 然後,什麼是最後的 偽代碼的行? 582 00:31:24,510 --> 00:31:26,380 誰不給誰的 我的東西呢。 583 00:31:26,380 --> 00:31:29,270 584 00:31:29,270 --> 00:31:30,260 >> 學生17:關閉文件? 585 00:31:30,260 --> 00:31:31,510 >> JASON HIRSCHHORN:沒錯。 586 00:31:31,510 --> 00:31:36,370 587 00:31:36,370 --> 00:31:37,450 關閉文件。 588 00:31:37,450 --> 00:31:38,400 所以這是我們的偽代碼。 589 00:31:38,400 --> 00:31:41,870 我打算把偽代碼為 gedit的,並在一兩分鐘我們 590 00:31:41,870 --> 00:31:44,626 將共同編寫的。 591 00:31:44,626 --> 00:33:55,280 592 00:33:55,280 --> 00:33:56,000 >> 確定。 593 00:33:56,000 --> 00:33:58,290 讓我們開始為一組。 594 00:33:58,290 --> 00:33:59,940 NISHANT,我有我的新文件。 595 00:33:59,940 --> 00:34:01,130 我剛剛開了這家了。 596 00:34:01,130 --> 00:34:01,880 無標題文檔1。 597 00:34:01,880 --> 00:34:05,490 什麼是我應該做的第一件事? 598 00:34:05,490 --> 00:34:07,040 >> NISHANT:包括庫? 599 00:34:07,040 --> 00:34:08,219 >> JASON HIRSCHHORN:確定。 600 00:34:08,219 --> 00:34:11,070 哪些圖書館? 601 00:34:11,070 --> 00:34:17,570 >> NISHANT:stdio.h中,stdlib.h中,我相信? 602 00:34:17,570 --> 00:34:18,000 >> JASON HIRSCHHORN:確定。 603 00:34:18,000 --> 00:34:21,592 什麼是stdlib的呢? 604 00:34:21,592 --> 00:34:23,010 >> NISHANT:我忘了。 605 00:34:23,010 --> 00:34:23,219 >> JASON HIRSCHHORN:確定。 606 00:34:23,219 --> 00:34:24,179 因此,包括標準輸入輸出。 607 00:34:24,179 --> 00:34:28,630 我應該怎麼做,甚至在 我開始編碼? 608 00:34:28,630 --> 00:34:29,710 >> NISHANT:寫一個頭? 609 00:34:29,710 --> 00:34:31,830 >> JASON HIRSCHHORN:如何 我把它上色? 610 00:34:31,830 --> 00:34:34,060 >> [插VOICES] 611 00:34:34,060 --> 00:34:35,040 >> NISHANT:你怎麼得到它的顏色? 612 00:34:35,040 --> 00:34:38,060 >> JASON HIRSCHHORN:如何 我的顏色編碼? 613 00:34:38,060 --> 00:34:38,570 >> NISHANT:我不知道。 614 00:34:38,570 --> 00:34:38,830 呵呵。 615 00:34:38,830 --> 00:34:39,389 保存。 616 00:34:39,389 --> 00:34:39,929 >> JASON HIRSCHHORN:保存。 617 00:34:39,929 --> 00:34:40,270 是。 618 00:34:40,270 --> 00:34:41,760 我應該將其保存為。角 619 00:34:41,760 --> 00:34:46,239 因此,將它保存在桌面的cp.c.上 620 00:34:46,239 --> 00:34:47,280 甜蜜。 621 00:34:47,280 --> 00:34:51,199 如果我想要得到完整的風格 點,我應該怎麼 622 00:34:51,199 --> 00:34:53,085 包括在頂部? 623 00:34:53,085 --> 00:34:58,390 >> NISHANT:你可以寫你的名字,名字 該程序,並且該目的的 624 00:34:58,390 --> 00:34:59,640 方案呢? 625 00:34:59,640 --> 00:35:08,400 626 00:35:08,400 --> 00:35:10,040 >> JASON HIRSCHHORN:看起來不錯。 627 00:35:10,040 --> 00:35:10,470 優秀的。 628 00:35:10,470 --> 00:35:12,940 所以,你已經開始了我們完美的。 629 00:35:12,940 --> 00:35:13,720 #包括 - 630 00:35:13,720 --> 00:35:15,365 我們也寫 - 631 00:35:15,365 --> 00:35:30,050 632 00:35:30,050 --> 00:35:30,870 確定。 633 00:35:30,870 --> 00:35:33,520 所以,我想我所有的設置去。 634 00:35:33,520 --> 00:35:38,003 誰擁有的第一行代碼對我來說 - 或代碼的第一行是 635 00:35:38,003 --> 00:35:41,280 這將需要滿足我們的第一個 在偽代碼有何評論? 636 00:35:41,280 --> 00:35:41,985 您。 637 00:35:41,985 --> 00:35:48,780 >> 學生18:難道不應該是int ARGC,然後字符* argv的? 638 00:35:48,780 --> 00:35:49,490 >> JASON HIRSCHHORN:我覺得 你說得對。 639 00:35:49,490 --> 00:35:56,270 讓我們來改變它為int主,開括號, 整型的argc,逗號,字符* argv的? 640 00:35:56,270 --> 00:35:57,150 喜歡嗎? 641 00:35:57,150 --> 00:35:57,410 >> 學生18:括號。 642 00:35:57,410 --> 00:35:58,260 >> JASON HIRSCHHORN:括號。 643 00:35:58,260 --> 00:35:59,860 打開支架,接近支架, 接近父母。 644 00:35:59,860 --> 00:36:00,240 完美的。 645 00:36:00,240 --> 00:36:02,160 現在,我可以帶命令行參數。 646 00:36:02,160 --> 00:36:02,430 確定。 647 00:36:02,430 --> 00:36:04,250 確保我們給出兩個文件。 648 00:36:04,250 --> 00:36:07,905 你可以給我說,好。 649 00:36:07,905 --> 00:36:09,180 >> 學生18:如果ARGC - 650 00:36:09,180 --> 00:36:11,060 這其中不等於3。 651 00:36:11,060 --> 00:36:14,360 >> JASON HIRSCHHORN:如果開括號 的argc不等於3? 652 00:36:14,360 --> 00:36:16,970 >> 學生18:是啊,你回 1或任何東西。 653 00:36:16,970 --> 00:36:17,460 >> JASON HIRSCHHORN:對不起。 654 00:36:17,460 --> 00:36:19,120 >> 學生18:返回1或任​​何東西。 655 00:36:19,120 --> 00:36:20,270 >> JASON HIRSCHHORN:返回1。 656 00:36:20,270 --> 00:36:22,230 好不好? 657 00:36:22,230 --> 00:36:22,970 大。 658 00:36:22,970 --> 00:36:24,290 打開這兩個文件。 659 00:36:24,290 --> 00:36:26,160 誰可以幫我打開這兩個文件? 660 00:36:26,160 --> 00:36:28,125 誰沒有給我的代碼嗎? 661 00:36:28,125 --> 00:36:31,510 662 00:36:31,510 --> 00:36:32,320 庫爾特? 663 00:36:32,320 --> 00:36:36,145 >> KURT:所以全部大寫F-Ⅰ-L-E星源。 664 00:36:36,145 --> 00:36:39,390 665 00:36:39,390 --> 00:36:40,920 >> JASON HIRSCHHORN:我要去 取出元音。 666 00:36:40,920 --> 00:36:41,570 這些都是很酷的。 667 00:36:41,570 --> 00:36:42,716 這就像QQ空間分享。 668 00:36:42,716 --> 00:36:44,610 >> 學生18:等於FOPEN - 669 00:36:44,610 --> 00:36:46,612 >> JASON HIRSCHHORN:等於FOPEN? 670 00:36:46,612 --> 00:36:49,870 >> 學生18:開括號, argv的,開放的支架。 671 00:36:49,870 --> 00:36:50,055 >> JASON HIRSCHHORN:等待。 672 00:36:50,055 --> 00:36:50,240 抱歉。 673 00:36:50,240 --> 00:36:51,050 開括號。 674 00:36:51,050 --> 00:36:51,456 確定。 675 00:36:51,456 --> 00:36:53,080 >> 學生18:是啊。 676 00:36:53,080 --> 00:36:55,110 ARGV子1。 677 00:36:55,110 --> 00:36:55,860 >> JASON HIRSCHHORN:子1? 678 00:36:55,860 --> 00:36:56,140 >> 學生18:是啊。 679 00:36:56,140 --> 00:36:58,540 argv的開放式支架1 - 680 00:36:58,540 --> 00:36:59,730 是。 681 00:36:59,730 --> 00:37:06,470 然後逗號,然後開雙 報價河,雙引號, 682 00:37:06,470 --> 00:37:08,250 接近括號,分號。 683 00:37:08,250 --> 00:37:09,450 >> JASON HIRSCHHORN:甜。 684 00:37:09,450 --> 00:37:10,950 又是怎麼回事另外一個? 685 00:37:10,950 --> 00:37:16,030 >> 學生18:十分相似,而是 S-R-C中,你會稱之為D-S-T。 686 00:37:16,030 --> 00:37:17,060 >> JASON HIRSCHHORN:哦哦! 687 00:37:17,060 --> 00:37:17,772 我喜歡這樣。 688 00:37:17,772 --> 00:37:20,010 >> 學生18:只要D-S-T。是啊。 689 00:37:20,010 --> 00:37:23,057 然後的argv,打開支架,2。 690 00:37:23,057 --> 00:37:23,200 是啊。 691 00:37:23,200 --> 00:37:26,720 然後瓦特,而不是河 692 00:37:26,720 --> 00:37:27,620 是啊。 693 00:37:27,620 --> 00:37:29,630 >> JASON HIRSCHHORN:太好了。 694 00:37:29,630 --> 00:37:31,360 接下來幾行。 695 00:37:31,360 --> 00:37:34,040 另外,如果有人有事情要添加到 我們所做的線條,隨意 696 00:37:34,040 --> 00:37:35,690 添加這些為好。 697 00:37:35,690 --> 00:37:37,520 檢查以確保既不為NULL。 698 00:37:37,520 --> 00:37:41,450 誰可以給我我需要的代碼 滿足該行偽代碼的? 699 00:37:41,450 --> 00:37:44,430 700 00:37:44,430 --> 00:37:45,870 弓箭手。 701 00:37:45,870 --> 00:37:58,645 >> ARCHER:如果SRC等於等於 NULL或DST等於等於 702 00:37:58,645 --> 00:38:04,590 NULL,則返回 - 703 00:38:04,590 --> 00:38:07,130 704 00:38:07,130 --> 00:38:07,976 >> JASON HIRSCHHORN:什麼? 705 00:38:07,976 --> 00:38:08,890 >> ARCHER:返回2? 706 00:38:08,890 --> 00:38:09,760 >> JASON HIRSCHHORN:返回2。 707 00:38:09,760 --> 00:38:14,400 所以,如果開括號的src等於 等於NULL,或者 - 708 00:38:14,400 --> 00:38:15,590 不管這thing's - 管? 709 00:38:15,590 --> 00:38:16,346 管? 710 00:38:16,346 --> 00:38:17,140 我們會打電話給它管。 711 00:38:17,140 --> 00:38:22,340 管材,管件,DST等於等於 NULL,則返回2。 712 00:38:22,340 --> 00:38:23,900 好不好? 713 00:38:23,900 --> 00:38:26,060 直到我們出的字節 - 714 00:38:26,060 --> 00:38:29,820 我們有點跳過此步驟 偽代碼部分將在這裡。 715 00:38:29,820 --> 00:38:31,970 >> 但是,直到我們出的字節 - 這是什麼樣的聲音? 716 00:38:31,970 --> 00:38:34,680 什麼C的結構類型 - 717 00:38:34,680 --> 00:38:36,160 但我不使用這個詞的結構, 因為我們要開始使用 718 00:38:36,160 --> 00:38:37,350 在其他情況下 - 719 00:38:37,350 --> 00:38:39,495 但C刀這聽起來像不像? 720 00:38:39,495 --> 00:38:39,970 >> 學生19:一個循環。 721 00:38:39,970 --> 00:38:40,980 >> JASON HIRSCHHORN:一個循環。 722 00:38:40,980 --> 00:38:43,060 聽起來像是一個循環。 723 00:38:43,060 --> 00:38:49,670 那麼,誰可以給我的第一行 的循環代碼就在這裡? 724 00:38:49,670 --> 00:38:56,320 725 00:38:56,320 --> 00:39:01,980 您也可以選擇什麼樣的 循環你想,如果你給我 726 00:39:01,980 --> 00:39:03,215 這行代碼。 727 00:39:03,215 --> 00:39:04,150 有三種。 728 00:39:04,150 --> 00:39:06,530 你來挑。 729 00:39:06,530 --> 00:39:08,080 我會建議其中之一。 730 00:39:08,080 --> 00:39:08,410 阿維。 731 00:39:08,410 --> 00:39:09,230 哪一個你想要什麼? 732 00:39:09,230 --> 00:39:09,960 >> AVI:FOR。 733 00:39:09,960 --> 00:39:11,460 >> JASON HIRSCHHORN:FOR。 734 00:39:11,460 --> 00:39:15,180 >> AVI:INT I等於零。 735 00:39:15,180 --> 00:39:17,360 >> JASON HIRSCHHORN:確定。 736 00:39:17,360 --> 00:39:18,570 >> AVI:這部分我不知道。 737 00:39:18,570 --> 00:39:29,080 但i小於大小 星源? 738 00:39:29,080 --> 00:39:31,128 我不知道這一點。 739 00:39:31,128 --> 00:39:32,580 >> JASON HIRSCHHORN:確定。 740 00:39:32,580 --> 00:39:35,870 >> AVI:因為你想要的 一個文件的大小,對不對? 741 00:39:35,870 --> 00:39:41,090 >> JASON HIRSCHHORN:那麼這可能不會 給我們的實際大小 742 00:39:41,090 --> 00:39:43,010 文件中的字節。 743 00:39:43,010 --> 00:39:47,680 所以,我們還有什麼可以做? 744 00:39:47,680 --> 00:39:48,810 這是另一種類型的循環? 745 00:39:48,810 --> 00:39:50,180 還是應該堅持使用FOR循環? 746 00:39:50,180 --> 00:39:55,350 747 00:39:55,350 --> 00:39:57,900 >> 學生20:你能不能做一個WHILE循環? 748 00:39:57,900 --> 00:40:01,350 然後,你會做的是you'd - 749 00:40:01,350 --> 00:40:03,930 因為我們有一個char *的文件。 750 00:40:03,930 --> 00:40:07,950 所以,如果我們只是一味的遞增 直到我們會發現在NULL字符 751 00:40:07,950 --> 00:40:08,500 它的結束? 752 00:40:08,500 --> 00:40:11,130 或者沒有,是不是文件如何工作的? 753 00:40:11,130 --> 00:40:14,300 >> JASON HIRSCHHORN:所以我們可以保持 遞增的char * 754 00:40:14,300 --> 00:40:16,340 直到我們找到空 - 755 00:40:16,340 --> 00:40:18,580 >> 學生20:從本質上繼續前進 逐字符,直到我們打 756 00:40:18,580 --> 00:40:21,250 該文件的末尾。 757 00:40:21,250 --> 00:40:21,600 >> JASON HIRSCHHORN:是的。 758 00:40:21,600 --> 00:40:22,560 所以,這就是我們想要做的。 759 00:40:22,560 --> 00:40:24,545 我們要堅持讀書,性格 由字符,直到我們得到 760 00:40:24,545 --> 00:40:25,080 該文件的末尾。 761 00:40:25,080 --> 00:40:25,375 >> 學生20:是啊。 762 00:40:25,375 --> 00:40:25,860 發現 - 763 00:40:25,860 --> 00:40:28,540 什麼是結束或停止的跡象 在一個文本文件的末尾。 764 00:40:28,540 --> 00:40:28,620 >> JASON HIRSCHHORN:確定。 765 00:40:28,620 --> 00:40:30,140 所以,當我們到達文件的末尾 - 我們怎麼知道我們已經達到 766 00:40:30,140 --> 00:40:33,200 一個文件的末尾? 767 00:40:33,200 --> 00:40:34,710 如果我打電話 - 768 00:40:34,710 --> 00:40:35,910 所以讓我們退一步。 769 00:40:35,910 --> 00:40:37,550 什麼是函數? 770 00:40:37,550 --> 00:40:39,360 讓我們去這條線就在這裡。 771 00:40:39,360 --> 00:40:40,630 讀取源文件。 772 00:40:40,630 --> 00:40:41,880 誰可以給我那行代碼? 773 00:40:41,880 --> 00:40:45,592 774 00:40:45,592 --> 00:40:47,590 >> 學生21:的fscanf? 775 00:40:47,590 --> 00:40:49,110 >> JASON HIRSCHHORN:的fscanf。 776 00:40:49,110 --> 00:40:49,510 確定。 777 00:40:49,510 --> 00:40:52,240 如果我想讀什麼,很 具體而言,1字節? 778 00:40:52,240 --> 00:40:55,012 779 00:40:55,012 --> 00:40:56,860 >> 學生21:我不知道。 780 00:40:56,860 --> 00:40:57,110 >> JASON HIRSCHHORN:確定。 781 00:40:57,110 --> 00:40:59,380 甚至比的fscanf簡單 - 什麼是 - 782 00:40:59,380 --> 00:41:01,890 我想從一個源文件中讀取? 783 00:41:01,890 --> 00:41:03,720 讀取源文件。 784 00:41:03,720 --> 00:41:04,850 什麼是函數 - 是啊。 785 00:41:04,850 --> 00:41:05,380 >> 學生22:這是用fread? 786 00:41:05,380 --> 00:41:06,070 >> JASON HIRSCHHORN:FREAD。 787 00:41:06,070 --> 00:41:07,550 我認為讓我們堅持使用 那一個現在。 788 00:41:07,550 --> 00:41:10,380 789 00:41:10,380 --> 00:41:13,650 什麼樣的參數 並用fread走? 790 00:41:13,650 --> 00:41:17,410 >> 學生22:可能的文件類型, 然後在文件中的位置? 791 00:41:17,410 --> 00:41:19,550 >> JASON HIRSCHHORN:我可以在這裡輸入 要弄清楚什麼類型的參數 792 00:41:19,550 --> 00:41:20,950 FREAD需要? 793 00:41:20,950 --> 00:41:23,710 >> 多名學生:人的fread。 794 00:41:23,710 --> 00:41:24,740 >> JASON HIRSCHHORN:男性 fread和fwrite的。 795 00:41:24,740 --> 00:41:25,980 看起來他們一起掛出。 796 00:41:25,980 --> 00:41:29,589 所以用fread需要多少個參數? 797 00:41:29,589 --> 00:41:30,920 >> 學生23:四。 798 00:41:30,920 --> 00:41:32,690 >> JASON HIRSCHHORN:這需要 四個參數。 799 00:41:32,690 --> 00:41:41,100 它需要一個指針,一個大小,而 的事情,這是奇怪的,和一些文件。 800 00:41:41,100 --> 00:41:42,000 好不好? 801 00:41:42,000 --> 00:41:43,990 讓我們看一下這裡。 802 00:41:43,990 --> 00:41:49,370 “函數fread顯示為N MEMB 數據元素,每個元素的字節大小 803 00:41:49,370 --> 00:41:53,840 長,從流指向 流,將它們存儲在該位置 804 00:41:53,840 --> 00:41:56,170 通過指針發出。“ 805 00:41:56,170 --> 00:41:57,960 >> 所以四個參數。 806 00:41:57,960 --> 00:42:04,510 為什麼不讓我只是複製這個, ,並將其粘貼在這裡。 807 00:42:04,510 --> 00:42:10,060 808 00:42:10,060 --> 00:42:10,770 確定。 809 00:42:10,770 --> 00:42:13,673 那麼,誰可以開始填寫 這些論點對我? 810 00:42:13,673 --> 00:42:15,840 阿維。 811 00:42:15,840 --> 00:42:17,720 >> AVI:取出無效。 812 00:42:17,720 --> 00:42:20,530 把剛剛SRC。 813 00:42:20,530 --> 00:42:23,142 取出指針和明星。 814 00:42:23,142 --> 00:42:26,102 把src中。 815 00:42:26,102 --> 00:42:27,050 然後 - 816 00:42:27,050 --> 00:42:28,500 >> JASON HIRSCHHORN:所以我打算停止 你在那裡,因為這是不正確。 817 00:42:28,500 --> 00:42:32,590 818 00:42:32,590 --> 00:42:34,710 你說得對與SRC,但是 應該在哪裡SRC去了? 819 00:42:34,710 --> 00:42:35,960 >> [插VOICES] 820 00:42:35,960 --> 00:42:38,976 821 00:42:38,976 --> 00:42:41,610 >> JASON HIRSCHHORN:應該 走在這裡。 822 00:42:41,610 --> 00:42:43,790 這就是SRC - 我們的src是一個類型。 823 00:42:43,790 --> 00:42:44,610 讓我們來看看這裡。 824 00:42:44,610 --> 00:42:49,610 這要求一個類型FILE *,我們 其實平時看到他們這樣。 825 00:42:49,610 --> 00:42:57,630 因此,這是要求的參數 類型的文件名為*流為src。 826 00:42:57,630 --> 00:42:58,480 好不好? 827 00:42:58,480 --> 00:43:00,410 >> 事情做大小 我們要讀? 828 00:43:00,410 --> 00:43:03,340 我在給你這 問題說明。 829 00:43:03,340 --> 00:43:04,370 >> 學生24:一次一個字節。 830 00:43:04,370 --> 00:43:05,340 >> JASON HIRSCHHORN:一個字節。 831 00:43:05,340 --> 00:43:08,205 多大是一個字節? 832 00:43:08,205 --> 00:43:11,642 它的大小是以字節為單位,還等什麼 我可以把在那裡? 833 00:43:11,642 --> 00:43:12,910 >> 學生25:一。 834 00:43:12,910 --> 00:43:14,730 >> JASON HIRSCHHORN:一。 835 00:43:14,730 --> 00:43:17,020 右。 836 00:43:17,020 --> 00:43:19,940 它的大小是在單位字節, 所以1是1個字節。 837 00:43:19,940 --> 00:43:22,284 有多少我想讀的時間。 838 00:43:22,284 --> 00:43:23,520 >> 學生26:一? 839 00:43:23,520 --> 00:43:24,270 >> JASON HIRSCHHORN:一件事。 840 00:43:24,270 --> 00:43:28,540 我想讀的大小一件事 1,一咬的時間。 841 00:43:28,540 --> 00:43:32,110 和我在哪裡把它,一旦我讀它? 842 00:43:32,110 --> 00:43:35,050 843 00:43:35,050 --> 00:43:36,510 >> 學生27:目的地? 844 00:43:36,510 --> 00:43:39,270 >> JASON HIRSCHHORN:所以我不能把 它直接進入目的地。 845 00:43:39,270 --> 00:43:40,800 >> 學生28:你會放 它到第三指針? 846 00:43:40,800 --> 00:43:41,780 >> 學生27:到了目的地。 847 00:43:41,780 --> 00:43:42,270 >> JASON HIRSCHHORN:確定。 848 00:43:42,270 --> 00:43:42,630 是啊。 849 00:43:42,630 --> 00:43:46,820 >> 學生29:你可以聲明某事 作為一個臨時存儲較早。 850 00:43:46,820 --> 00:43:47,350 >> JASON HIRSCHHORN:確定。 851 00:43:47,350 --> 00:43:50,080 給我說。 852 00:43:50,080 --> 00:43:53,930 >> 學生29:另一個文件 指針,也許? 853 00:43:53,930 --> 00:43:54,220 >> JASON HIRSCHHORN:確定。 854 00:43:54,220 --> 00:43:55,585 因此,這是無效的明星 - 855 00:43:55,585 --> 00:43:57,750 它是一個void類型的明星,所以也沒有 必須是一個文件指針。 856 00:43:57,750 --> 00:44:02,520 如果我在讀一個字節, 那裡將是一個不錯的地方 857 00:44:02,520 --> 00:44:03,850 存儲一個字節? 858 00:44:03,850 --> 00:44:04,660 >> 學生29:一個數組? 859 00:44:04,660 --> 00:44:05,770 >> JASON HIRSCHHORN:一個數組。 860 00:44:05,770 --> 00:44:07,730 確定。 861 00:44:07,730 --> 00:44:14,040 還有什麼是值得的 確切大小一個字節? 862 00:44:14,040 --> 00:44:16,980 863 00:44:16,980 --> 00:44:18,060 >> 學生30:一個char *? 864 00:44:18,060 --> 00:44:18,530 >> 學生29:是啊。 865 00:44:18,530 --> 00:44:19,880 >> JASON HIRSCHHORN:一個char * 不是一個字節。 866 00:44:19,880 --> 00:44:20,440 >> 學生29:一個字符。 867 00:44:20,440 --> 00:44:21,810 >> JASON HIRSCHHORN:一個char是一個字節。 868 00:44:21,810 --> 00:44:22,920 對不對? 869 00:44:22,920 --> 00:44:26,740 因此,讓我們稱這個緩衝區是一個通用的 名稱用於這些東西存儲 870 00:44:26,740 --> 00:44:27,910 一些暫時的。 871 00:44:27,910 --> 00:44:30,880 所以我創建了一個緩衝區。 872 00:44:30,880 --> 00:44:31,150 對不對? 873 00:44:31,150 --> 00:44:32,990 但它確實需要一個void *。 874 00:44:32,990 --> 00:44:38,660 因此,也許你是對的,它 應該是大小為0的緩衝區。 875 00:44:38,660 --> 00:44:41,070 因此,它存儲一個 - 876 00:44:41,070 --> 00:44:41,280 右。 877 00:44:41,280 --> 00:44:43,560 >> 因為在這裡權利 - 炭 緩衝器是一個字符,但 878 00:44:43,560 --> 00:44:45,110 這需要一個void * - 879 00:44:45,110 --> 00:44:45,870 一個指針。 880 00:44:45,870 --> 00:44:50,640 所以我可以做到這一點,現在 緩衝器是一個指針。 881 00:44:50,640 --> 00:44:53,214 我還能做什麼? 882 00:44:53,214 --> 00:44:55,775 >> 學生31:把為char未來的明星。 883 00:44:55,775 --> 00:44:58,380 >> JASON HIRSCHHORN:我可以 創建它的char *。 884 00:44:58,380 --> 00:45:00,216 確定。 885 00:45:00,216 --> 00:45:03,131 什麼是另一回事,我能怎麼辦? 886 00:45:03,131 --> 00:45:04,050 還是讓我們一起去這一個。 887 00:45:04,050 --> 00:45:05,740 字符*緩衝區,所以什麼 我擺在這裡? 888 00:45:05,740 --> 00:45:08,290 889 00:45:08,290 --> 00:45:09,310 >> 學生31:緩衝區。 890 00:45:09,310 --> 00:45:10,560 >> JASON HIRSCHHORN:緩衝區。 891 00:45:10,560 --> 00:45:12,640 892 00:45:12,640 --> 00:45:14,500 緩衝區是一個指針,指向一個char。 893 00:45:14,500 --> 00:45:19,480 並在該位置,我們把 的東西,我們已經讀取一個字節。 894 00:45:19,480 --> 00:45:19,980 是啊。 895 00:45:19,980 --> 00:45:20,700 阿維。 896 00:45:20,700 --> 00:45:21,230 >> AVI:只是一個快速的問題。 897 00:45:21,230 --> 00:45:24,440 你想用malloc緩衝? 898 00:45:24,440 --> 00:45:25,930 >> JASON HIRSCHHORN:誰能 回答這個問題? 899 00:45:25,930 --> 00:45:30,210 >> 學生32:嗯,它並不真正的 點任何東西的權利,所以 - 900 00:45:30,210 --> 00:45:32,610 >> JASON HIRSCHHORN:但是做 我們想用malloc呢? 901 00:45:32,610 --> 00:45:35,600 >> 學生32:如果你是這樣做的 這樣,我想,是啊,因為你需要 902 00:45:35,600 --> 00:45:36,990 一些地方為它指向。 903 00:45:36,990 --> 00:45:38,350 >> JASON HIRSCHHORN:我們 必須用malloc呢? 904 00:45:38,350 --> 00:45:40,580 >> 學生33:如果你要 使用它的環的外側。 905 00:45:40,580 --> 00:45:42,524 >> JASON HIRSCHHORN:我們是否要 使用它的循環之外? 906 00:45:42,524 --> 00:45:44,392 >> 學生34:是的。 907 00:45:44,392 --> 00:45:44,860 >> 學生35:等待。 908 00:45:44,860 --> 00:45:46,980 難道我們要聲明它 在環路以外? 909 00:45:46,980 --> 00:45:50,100 >> JASON HIRSCHHORN:所以我想我們有 在這裡,我們是一些偽WHILE循環 910 00:45:50,100 --> 00:45:51,950 想弄清楚,那 我們還沒有得到到呢。 911 00:45:51,950 --> 00:45:54,710 912 00:45:54,710 --> 00:45:56,010 我們不需要將malloc它。 913 00:45:56,010 --> 00:45:59,310 我們的主要工作時,它一定會 要使用這個循環中。 914 00:45:59,310 --> 00:46:00,540 它不需要存在 超出此。 915 00:46:00,540 --> 00:46:02,340 >> 因此,它可以是一個局部變量。 916 00:46:02,340 --> 00:46:03,925 你有一個指針 一個局部變量。 917 00:46:03,925 --> 00:46:07,984 918 00:46:07,984 --> 00:46:09,590 >> 學生36:但它不是 指向任何東西。 919 00:46:09,590 --> 00:46:11,540 >> JASON HIRSCHHORN:不,這不是 初始化為任何東西。 920 00:46:11,540 --> 00:46:12,790 但我們不打算使用它也。 921 00:46:12,790 --> 00:46:15,300 我們要裝上去 這是我們第一次使用它。 922 00:46:15,300 --> 00:46:16,580 所以,似乎確定。 923 00:46:16,580 --> 00:46:17,780 所以我們這裡不需要的malloc。 924 00:46:17,780 --> 00:46:19,360 我認為這是確定不變。 925 00:46:19,360 --> 00:46:24,350 926 00:46:24,350 --> 00:46:25,790 確定。 927 00:46:25,790 --> 00:46:27,190 我們是fread線。 928 00:46:27,190 --> 00:46:28,490 讓我們做的下一行。 929 00:46:28,490 --> 00:46:32,984 >> 如果我們要寫入一個文件,什麼是 一個很好的函數用來做呢? 930 00:46:32,984 --> 00:46:33,770 >> 學生37:fwrite的? 931 00:46:33,770 --> 00:46:35,140 >> 學生38:FPRINTF? 932 00:46:35,140 --> 00:46:36,010 >> JASON HIRSCHHORN:是FPRINTF之一。 933 00:46:36,010 --> 00:46:37,260 有什麼其它的嗎? 934 00:46:37,260 --> 00:46:37,680 >> 學生39:fwrite的。 935 00:46:37,680 --> 00:46:38,510 >> JASON HIRSCHHORN:fwrite的。 936 00:46:38,510 --> 00:46:41,250 而對於我們來說,fwrite的, 我們在這裡看到的,是 937 00:46:41,250 --> 00:46:42,500 可能是更好的選擇。 938 00:46:42,500 --> 00:46:51,970 939 00:46:51,970 --> 00:46:53,950 它有四個參數為好。 940 00:46:53,950 --> 00:46:57,570 NISHANT,你可以給 我的論點? 941 00:46:57,570 --> 00:47:00,570 >> NISHANT:第一個是怎麼回事 是公正的緩衝區。 942 00:47:00,570 --> 00:47:02,210 >> JASON HIRSCHHORN:確定。 943 00:47:02,210 --> 00:47:06,752 >> NISHANT:第二個的 只是要1。 944 00:47:06,752 --> 00:47:09,510 第三個將是1。 945 00:47:09,510 --> 00:47:11,470 而第四個將是DST。 946 00:47:11,470 --> 00:47:18,010 947 00:47:18,010 --> 00:47:19,550 >> JASON HIRSCHHORN:沒有任何人有 關於該行的任何問題嗎? 948 00:47:19,550 --> 00:47:28,370 949 00:47:28,370 --> 00:47:29,130 這看起來不錯。 950 00:47:29,130 --> 00:47:29,590 確定。 951 00:47:29,590 --> 00:47:34,250 所以,現在它看起來像一件事情我們 失踪 - 其實,讓我們寫 952 00:47:34,250 --> 00:47:35,090 這最後一道防線。 953 00:47:35,090 --> 00:47:36,300 關閉文件。 954 00:47:36,300 --> 00:47:38,880 誰可以完成了我們的寫作 這最後的兩行? 955 00:47:38,880 --> 00:47:39,120 是。 956 00:47:39,120 --> 00:47:39,850 對不起,你叫什麼名字? 957 00:47:39,850 --> 00:47:40,580 >> 露西:露西。 958 00:47:40,580 --> 00:47:41,580 >> JASON HIRSCHHORN:露西。 959 00:47:41,580 --> 00:47:47,560 >> 露西:FCLOSE src和再 FCLOSE目的地。 960 00:47:47,560 --> 00:47:52,430 >> JASON HIRSCHHORN:FCLOSE,開括號, SRC,關閉括號,分號。 961 00:47:52,430 --> 00:47:53,680 和FCLOSE - 962 00:47:53,680 --> 00:47:57,560 963 00:47:57,560 --> 00:47:58,090 是嗎? 964 00:47:58,090 --> 00:48:01,710 >> 露西:開括號,DST 然後分號。 965 00:48:01,710 --> 00:48:02,520 >> JASON HIRSCHHORN:太好了。 966 00:48:02,520 --> 00:48:04,338 而且我應該在年底包括哪些內容? 967 00:48:04,338 --> 00:48:05,210 >> 露西:返回0。 968 00:48:05,210 --> 00:48:05,570 >> JASON HIRSCHHORN:返回0。 969 00:48:05,570 --> 00:48:06,820 難道我有什麼打算? 970 00:48:06,820 --> 00:48:10,560 971 00:48:10,560 --> 00:48:12,590 只是一個問題。 972 00:48:12,590 --> 00:48:14,957 是否一定要包括返回0? 973 00:48:14,957 --> 00:48:16,240 >> 多名學生:號 974 00:48:16,240 --> 00:48:16,430 >> JASON HIRSCHHORN:號 975 00:48:16,430 --> 00:48:18,090 主要的自動完成 如果你到達終點。 976 00:48:18,090 --> 00:48:20,580 但我認為這是很好的 包括它明確。 977 00:48:20,580 --> 00:48:23,860 特別是當我們返回其他 整個事情的程序。 978 00:48:23,860 --> 00:48:24,810 確定。 979 00:48:24,810 --> 00:48:26,230 這是我們錯過了什麼 - 980 00:48:26,230 --> 00:48:28,520 WHILE什麼? 981 00:48:28,520 --> 00:48:31,630 誰又能想到一些 - 982 00:48:31,630 --> 00:48:35,240 有一些感覺是什麼東西 能去那裡? 983 00:48:35,240 --> 00:48:37,350 即使它只是在一些偽代碼 喜歡的語言? 984 00:48:37,350 --> 00:48:41,330 >> 什麼是我們真正 - 什麼 我們想要去,直到? 985 00:48:41,330 --> 00:48:41,980 是啊,露西。 986 00:48:41,980 --> 00:48:43,240 >> 露西:文件的末尾。 987 00:48:43,240 --> 00:48:44,990 >> JASON HIRSCHHORN:文件的末尾。 988 00:48:44,990 --> 00:48:49,280 所以,你是什麼文件到底意味著什麼? 989 00:48:49,280 --> 00:48:50,955 >> 露西:一旦你到達 該文件的末尾,停下來。 990 00:48:50,955 --> 00:48:51,240 >> JASON HIRSCHHORN:確定。 991 00:48:51,240 --> 00:48:53,460 所以一旦我們到達文件的末尾。 992 00:48:53,460 --> 00:48:56,893 我們怎麼知道什麼時候我們已經達到 該文件的末尾? 993 00:48:56,893 --> 00:48:59,900 >> 學生40:我認為緩衝區 將被設置為NULL。 994 00:48:59,900 --> 00:49:01,885 >> 學生41:緩衝區聲明 內循環。 995 00:49:01,885 --> 00:49:03,670 >> JASON HIRSCHHORN:所以你認為 緩衝區將被設置為NULL。 996 00:49:03,670 --> 00:49:05,850 為什麼緩衝區設置為NULL? 997 00:49:05,850 --> 00:49:10,420 >> 學生40:因為當你 用fread,你試圖把 998 00:49:10,420 --> 00:49:13,528 什麼到緩衝區。 999 00:49:13,528 --> 00:49:13,980 >> JASON HIRSCHHORN:確定。 1000 00:49:13,980 --> 00:49:15,550 所以,你在想用fread - 1001 00:49:15,550 --> 00:49:19,000 當我們已經達到的結束 文件,什麼是用fread怎麼辦呢? 1002 00:49:19,000 --> 00:49:21,230 我認為這是問題 我們必須弄清楚。 1003 00:49:21,230 --> 00:49:21,960 什麼是FREAD辦? 1004 00:49:21,960 --> 00:49:25,640 它把空的緩衝區,或 它做別的嗎? 1005 00:49:25,640 --> 00:49:27,510 我們怎樣才能弄清楚它? 1006 00:49:27,510 --> 00:49:28,190 >> 學生42:人。 1007 00:49:28,190 --> 00:49:28,810 >> JASON HIRSCHHORN:人。 1008 00:49:28,810 --> 00:49:32,280 所以,讓我們來看看在這裡。 1009 00:49:32,280 --> 00:49:34,000 返回值。 1010 00:49:34,000 --> 00:49:39,620 如果成功,fread和fwrite的返回 讀出或寫入的項目數。 1011 00:49:39,620 --> 00:49:43,700 這個數目等於字節數 轉讓只有當大小為1。 1012 00:49:43,700 --> 00:49:47,780 如果發生錯誤,或者在該端 到達文件,返回值是一個 1013 00:49:47,780 --> 00:49:51,490 短期項目數或0。 1014 00:49:51,490 --> 00:49:57,860 >> 所以對於我們來說,如果用fread河段 該文件的末尾,以及從讀出 1015 00:49:57,860 --> 00:50:02,100 文件末尾,什麼都不剩 閱讀,什麼是它要回來嗎? 1016 00:50:02,100 --> 00:50:03,290 >> 學生43:零? 1017 00:50:03,290 --> 00:50:04,540 >> JASON HIRSCHHORN:什麼? 1018 00:50:04,540 --> 00:50:05,300 >> 學生43:零? 1019 00:50:05,300 --> 00:50:05,690 >> JASON HIRSCHHORN:零。 1020 00:50:05,690 --> 00:50:06,940 它會返回零。 1021 00:50:06,940 --> 00:50:09,360 1022 00:50:09,360 --> 00:50:13,010 所以我們知道,用fread,當我們已經 到達文件的結尾,會 1023 00:50:13,010 --> 00:50:13,690 返回零。 1024 00:50:13,690 --> 00:50:17,460 我們怎樣才能用它來我們的優勢在哪裡? 1025 00:50:17,460 --> 00:50:21,733 >> AVI:你可以在外面聲明一個變量 所謂單向循環。 1026 00:50:21,733 --> 00:50:27,040 如果檢查等於 - 1027 00:50:27,040 --> 00:50:28,190 現在 - 之一。 1028 00:50:28,190 --> 00:50:28,920 >> JASON HIRSCHHORN:確定。 1029 00:50:28,920 --> 00:50:38,050 >> AVI:然後你可以把一個IF 之後用fread說,如果聲明 1030 00:50:38,050 --> 00:50:42,600 用fread等於零 - 1031 00:50:42,600 --> 00:50:43,850 沒有。 1032 00:50:43,850 --> 00:50:46,002 1033 00:50:46,002 --> 00:50:47,252 >> JASON HIRSCHHORN:誰 可以幫助阿維出來? 1034 00:50:47,252 --> 00:50:49,690 1035 00:50:49,690 --> 00:50:52,410 >> AVI:什麼是價值 通過用fread返回? 1036 00:50:52,410 --> 00:50:54,060 >> JASON HIRSCHHORN:我們只是 走過去的。 1037 00:50:54,060 --> 00:50:55,450 >> AVI:你怎麼表示呢? 1038 00:50:55,450 --> 00:50:57,190 >> JASON HIRSCHHORN:所以它返回 - 讓我們 期待在這裡 - 它返回一個 1039 00:50:57,190 --> 00:50:59,340 為size_t,它實質上是 的整數。 1040 00:50:59,340 --> 00:51:02,240 1041 00:51:02,240 --> 00:51:03,410 因此,它返回一個整數。 1042 00:51:03,410 --> 00:51:05,160 而在我們的例子中,它會 返回1或0 - 1043 00:51:05,160 --> 00:51:08,760 1,如果它讀一件事 - 一個字節, 和0,如果我們已經走到了盡頭。 1044 00:51:08,760 --> 00:51:13,560 1045 00:51:13,560 --> 00:51:16,450 所以,如果用fread - 1046 00:51:16,450 --> 00:51:16,855 是嗎? 1047 00:51:16,855 --> 00:51:20,330 >> 學生45:你不能只是把全 用fread(緩衝液,1,1,SRC)進 1048 00:51:20,330 --> 00:51:21,660 while循環? 1049 00:51:21,660 --> 00:51:26,510 >> JASON HIRSCHHORN:所以你建議 這樣做有進入這個? 1050 00:51:26,510 --> 00:51:27,600 >> [插VOICES] 1051 00:51:27,600 --> 00:51:29,520 >> JASON HIRSCHHORN:等一下。 1052 00:51:29,520 --> 00:51:30,885 因此,我們擺脫這一點。 1053 00:51:30,885 --> 00:51:33,300 所以你建議把 用fread到那裡? 1054 00:51:33,300 --> 00:51:35,457 我們應該怎麼也動 如果你想這樣做? 1055 00:51:35,457 --> 00:51:36,740 >> 學生45:緩衝區以外。 1056 00:51:36,740 --> 00:51:38,110 >> JASON HIRSCHHORN:我們應該 也可以移動這個在這裡。 1057 00:51:38,110 --> 00:51:41,700 >> 學生45:但這是否不斷 向前移動? 1058 00:51:41,700 --> 00:51:42,950 >> [插VOICES] 1059 00:51:42,950 --> 00:51:46,540 1060 00:51:46,540 --> 00:51:47,470 >> JASON HIRSCHHORN:確定。 1061 00:51:47,470 --> 00:51:50,570 因此,這是Okshar建議。 1062 00:51:50,570 --> 00:51:51,930 我們創建緩衝區。 1063 00:51:51,930 --> 00:51:57,020 我們WHILE的fread,那麼我們fwrite的。 1064 00:51:57,020 --> 00:51:59,760 對此怎麼看? 1065 00:51:59,760 --> 00:52:04,050 >> 學生46:我唯一的問題是,會 它實際上執行命令的fread? 1066 00:52:04,050 --> 00:52:06,175 >> JASON HIRSCHHORN:大問題。 1067 00:52:06,175 --> 00:52:11,050 當你把一個函數調用 的條件裡面,這是否 1068 00:52:11,050 --> 00:52:12,300 函數調用執行? 1069 00:52:12,300 --> 00:52:15,760 1070 00:52:15,760 --> 00:52:17,770 我們以前見過這樣的例子。 1071 00:52:17,770 --> 00:52:24,900 1072 00:52:24,900 --> 00:52:25,660 對不對? 1073 00:52:25,660 --> 00:52:26,125 >> 學生46:確定。 1074 00:52:26,125 --> 00:52:26,590 是啊。 1075 00:52:26,590 --> 00:52:30,140 所以它確實執行。 1076 00:52:30,140 --> 00:52:31,790 >> JASON HIRSCHHORN:我們已經看到的東西 像之前,我們有一個 1077 00:52:31,790 --> 00:52:33,550 的條件裡面的函數調用。 1078 00:52:33,550 --> 00:52:35,540 這是否函數調用執行? 1079 00:52:35,540 --> 00:52:36,350 是。 1080 00:52:36,350 --> 00:52:37,410 因此,答案是肯定的。 1081 00:52:37,410 --> 00:52:41,010 此函數調用將被執行。 1082 00:52:41,010 --> 00:52:42,418 但同樣,這是我們想要的嗎? 1083 00:52:42,418 --> 00:52:49,250 1084 00:52:49,250 --> 00:52:52,204 >> 什麼是我們可以計算的一種方法 它是否是我們想要的嗎? 1085 00:52:52,204 --> 00:52:53,470 >> 多名學生:運行呢? 1086 00:52:53,470 --> 00:52:54,460 >> JASON HIRSCHHORN:我們可以運行它。 1087 00:52:54,460 --> 00:52:57,500 但在此之前,我們做到這一點,我們可以 也有理由通過這一點。 1088 00:52:57,500 --> 00:52:57,920 如果 - 1089 00:52:57,920 --> 00:53:01,920 說我們有一個字節我們 文件中,我們會得到在這裡, 1090 00:53:01,920 --> 00:53:02,660 我們會得到這個代碼。 1091 00:53:02,660 --> 00:53:03,620 這將運行。 1092 00:53:03,620 --> 00:53:07,780 用fread將返回一個字節, 將其存儲在緩衝器中。 1093 00:53:07,780 --> 00:53:11,290 這將評估為1, 右,後,他返回1。 1094 00:53:11,290 --> 00:53:12,640 >> 因此,儘管1。 1095 00:53:12,640 --> 00:53:15,325 這是否意味著裡面的代碼 WHILE循環將執行? 1096 00:53:15,325 --> 00:53:15,453 >> 學生47:是啊。 1097 00:53:15,453 --> 00:53:16,040 這是真的。 1098 00:53:16,040 --> 00:53:16,290 >> JASON HIRSCHHORN:是的。 1099 00:53:16,290 --> 00:53:17,490 圖1是真實的。 1100 00:53:17,490 --> 00:53:18,240 這不是0。 1101 00:53:18,240 --> 00:53:20,360 所以,在這裡裡面的代碼將被執行。 1102 00:53:20,360 --> 00:53:22,300 因此,我們將編寫一個。 1103 00:53:22,300 --> 00:53:25,340 我們將回遷到這個 行一次。 1104 00:53:25,340 --> 00:53:26,850 現在,我們有 - 1105 00:53:26,850 --> 00:53:28,550 我們是在我們的文件的末尾。 1106 00:53:28,550 --> 00:53:30,980 我們從文件末尾讀, 因為我們只有一個字節在裡面。 1107 00:53:30,980 --> 00:53:34,270 >> 用fread返回0,門店 東西在緩衝區中。 1108 00:53:34,270 --> 00:53:35,890 老實說,我不知道是什麼 它存儲在緩衝區中。 1109 00:53:35,890 --> 00:53:38,380 我們也許可以仰望 來看看它做什麼。 1110 00:53:38,380 --> 00:53:40,130 我真的不知道。 1111 00:53:40,130 --> 00:53:43,090 我們不知道,誰在乎什麼 它在緩衝存儲? 1112 00:53:43,090 --> 00:53:44,010 但它確實返回0。 1113 00:53:44,010 --> 00:53:45,440 並同時0執行? 1114 00:53:45,440 --> 00:53:49,950 1115 00:53:49,950 --> 00:53:51,180 >> WHILE 0將不會執行。 1116 00:53:51,180 --> 00:53:54,030 所以後來我們就搬到這裡了。 1117 00:53:54,030 --> 00:53:58,870 因此,讓我們一舉手,如果這 是我們應該運行,或者如果我們的代碼 1118 00:53:58,870 --> 00:54:00,140 首先應該做的改變。 1119 00:54:00,140 --> 00:54:02,180 所以,如果你想 - 你必須投票。 1120 00:54:02,180 --> 00:54:06,885 如果您認為我們應該運行這個代碼 原樣,請舉手。 1121 00:54:06,885 --> 00:54:12,440 1122 00:54:12,440 --> 00:54:13,400 >> 確定。 1123 00:54:13,400 --> 00:54:14,315 還有一個 - 1124 00:54:14,315 --> 00:54:17,260 你有一個問題,關注? 1125 00:54:17,260 --> 00:54:18,080 是啊。 1126 00:54:18,080 --> 00:54:21,240 >> 學生48:當我們移動緩衝區 在循環之外,我們做 1127 00:54:21,240 --> 00:54:22,670 必須用malloc呢? 1128 00:54:22,670 --> 00:54:23,310 >> JASON HIRSCHHORN:大問題。 1129 00:54:23,310 --> 00:54:26,670 當我們移動的外部緩衝 循環,我們必須用malloc呢? 1130 00:54:26,670 --> 00:54:28,400 這是一個範圍的問題。 1131 00:54:28,400 --> 00:54:32,130 如果我們初始化緩衝區外 這個循環的,將它存在 1132 00:54:32,130 --> 00:54:33,534 內循環的? 1133 00:54:33,534 --> 00:54:35,230 >> 多名學生:是的。 1134 00:54:35,230 --> 00:54:35,580 >> JASON HIRSCHHORN:是的。 1135 00:54:35,580 --> 00:54:40,100 其範圍涵蓋了循環內, 和,真的,裡面的東西在它下面 1136 00:54:40,100 --> 00:54:42,460 這個代碼,包括中 這裡裡面的東西。 1137 00:54:42,460 --> 00:54:43,930 所以我們並不需要用malloc它。 1138 00:54:43,930 --> 00:54:47,766 這是一個局部變量,其範圍 還包括循環。 1139 00:54:47,766 --> 00:54:49,540 >> 學生49:我們是否需要釋放呢? 1140 00:54:49,540 --> 00:54:51,770 >> JASON HIRSCHHORN:我們 需要空閒緩衝區? 1141 00:54:51,770 --> 00:54:53,860 >> 學生49:是的,如果我們不這樣做的malloc。 1142 00:54:53,860 --> 00:54:55,750 >> JASON HIRSCHHORN:我們 需要空閒緩衝區? 1143 00:54:55,750 --> 00:54:57,160 我們不知道。 1144 00:54:57,160 --> 00:55:01,280 再次,這是一個局部變量, 所以我們並不需要釋放它。 1145 00:55:01,280 --> 00:55:02,170 確定。 1146 00:55:02,170 --> 00:55:03,480 讓我們看看會發生什麼。 1147 00:55:03,480 --> 00:55:17,290 1148 00:55:17,290 --> 00:55:18,220 因此,它是未初始化的。 1149 00:55:18,220 --> 00:55:20,830 那是什麼東西, 馬庫斯較早前建議。 1150 00:55:20,830 --> 00:55:25,340 因此,我們有這個錯誤,變量緩衝區 這裡使用的時候被初始化。 1151 00:55:25,340 --> 00:55:26,590 >> 怎樣才能解決這個問題? 1152 00:55:26,590 --> 00:55:29,460 1153 00:55:29,460 --> 00:55:30,960 >> 學生50:malloc的呢? 1154 00:55:30,960 --> 00:55:31,770 >> 學生51:等於null? 1155 00:55:31,770 --> 00:55:33,000 >> 學生52:假設緩衝區的值等於NULL。 1156 00:55:33,000 --> 00:55:34,250 >> JASON HIRSCHHORN:確定。 1157 00:55:34,250 --> 00:55:40,040 1158 00:55:40,040 --> 00:55:40,770 看起來不錯。 1159 00:55:40,770 --> 00:55:42,410 我們現在擁有它。 1160 00:55:42,410 --> 00:55:45,630 讓我們創建一些嘗試複製。 1161 00:55:45,630 --> 00:56:08,990 1162 00:56:08,990 --> 00:56:10,490 因此,我們有我們的文本文件。 1163 00:56:10,490 --> 00:56:11,740 我們怎樣才能運行這個程序? 1164 00:56:11,740 --> 00:56:14,140 1165 00:56:14,140 --> 00:56:15,472 是啊。 1166 00:56:15,472 --> 00:56:22,230 >> 學生53:你可以做點 斜線CP,test.txt的。 1167 00:56:22,230 --> 00:56:25,140 然後你就可以指定任何其他文件 它會存儲到。 1168 00:56:25,140 --> 00:56:25,510 >> JASON HIRSCHHORN:確定。 1169 00:56:25,510 --> 00:56:27,380 我們叫它out.txt的。 1170 00:56:27,380 --> 00:56:28,630 酷? 1171 00:56:28,630 --> 00:56:31,700 1172 00:56:31,700 --> 00:56:34,320 賽格故障。 1173 00:56:34,320 --> 00:56:35,570 思考的賽格故障? 1174 00:56:35,570 --> 00:56:40,900 1175 00:56:40,900 --> 00:56:41,390 這是偉大的。 1176 00:56:41,390 --> 00:56:45,040 我們怎樣才能找出 賽格故障? 1177 00:56:45,040 --> 00:56:45,680 什麼? 1178 00:56:45,680 --> 00:56:45,990 >> 學生54:GDB。 1179 00:56:45,990 --> 00:56:47,240 >> JASON HIRSCHHORN:GDB。 1180 00:56:47,240 --> 00:56:51,400 1181 00:56:51,400 --> 00:56:55,300 我們運行gdb的寫點gdb的斜線, 我們的程序的名稱。 1182 00:56:55,300 --> 00:56:57,020 沒有命令行參數那裡。 1183 00:56:57,020 --> 00:56:59,570 我們將設置一個 斷點為主。 1184 00:56:59,570 --> 00:57:02,190 如果我想啟動gdb,我該怎麼辦? 1185 00:57:02,190 --> 00:57:02,730 >> 學生55:R。 1186 00:57:02,730 --> 00:57:08,910 >> JASON HIRSCHHORN:R.然後呢? 1187 00:57:08,910 --> 00:57:09,400 >> 學生55:該參數呢? 1188 00:57:09,400 --> 00:57:10,650 >> JASON HIRSCHHORN:然後, 命令行參數。 1189 00:57:10,650 --> 00:57:15,890 1190 00:57:15,890 --> 00:57:17,120 讓我們通過。 1191 00:57:17,120 --> 00:57:19,090 N的只是把我一行一行。 1192 00:57:19,090 --> 00:57:21,450 我會去,直到 我讓我的賽格故障。 1193 00:57:21,450 --> 00:57:22,700 還有我的賽格故障。 1194 00:57:22,700 --> 00:57:24,960 1195 00:57:24,960 --> 00:57:27,875 它看起來像用fread引起 我的賽格故障。 1196 00:57:27,875 --> 00:57:30,570 1197 00:57:30,570 --> 00:57:32,770 我知道用fread引起我的賽格故障, 因為這是 1198 00:57:32,770 --> 00:57:34,950 行,我們只是執行。 1199 00:57:34,950 --> 00:57:36,530 >> 而那是唯一 發生在該行 - 1200 00:57:36,530 --> 00:57:37,520 兩件事情都發生了。 1201 00:57:37,520 --> 00:57:40,610 FREAD要去,然後我們 做一些檢查時。 1202 00:57:40,610 --> 00:57:44,820 我敢打賭,在WHILE 檢查並沒有引起我的賽格故障。 1203 00:57:44,820 --> 00:57:46,950 最有可能的,是FREAD 造成我的賽格故障。 1204 00:57:46,950 --> 00:57:49,260 我也看到一些東西在這裡,存儲器複製。 1205 00:57:49,260 --> 00:57:50,500 >> 內存拷貝。 1206 00:57:50,500 --> 00:57:53,820 聽起來像移動存儲 一個位置移動到另一個。 1207 00:57:53,820 --> 00:57:56,890 聽起來似乎會發生 在用fread,也許有些記憶 1208 00:57:56,890 --> 00:57:58,910 從這裡搬到這裡。 1209 00:57:58,910 --> 00:58:01,740 1210 00:58:01,740 --> 00:58:03,860 讓我們通過這一次。 1211 00:58:03,860 --> 00:58:06,900 我如何在啟動它 並再次運行它? 1212 00:58:06,900 --> 00:58:08,092 是啊。 1213 00:58:08,092 --> 00:58:15,140 >> 學生56:你需要把 緩衝區之前的符號? 1214 00:58:15,140 --> 00:58:17,800 >> JASON HIRSCHHORN:所以在與符號 緩衝會給我的地址 1215 00:58:17,800 --> 00:58:22,330 緩衝,這是一個char *。 1216 00:58:22,330 --> 00:58:25,250 讓我們通過這一次運行。 1217 00:58:25,250 --> 00:58:28,248 我如何通過它運行一次嗎? 1218 00:58:28,248 --> 00:58:29,210 >> 學生57:你能剛 再鍵入run? 1219 00:58:29,210 --> 00:58:32,050 >> JASON HIRSCHHORN:只需再次鍵入運行。 1220 00:58:32,050 --> 00:58:33,415 因此,我們不打算 執行這條線。 1221 00:58:33,415 --> 00:58:36,250 1222 00:58:36,250 --> 00:58:39,240 因此,緩衝區是一個NULL指針。 1223 00:58:39,240 --> 00:58:40,490 正確嗎? 1224 00:58:40,490 --> 00:58:45,870 1225 00:58:45,870 --> 00:58:47,060 它指向 - 讓我們來看看。 1226 00:58:47,060 --> 00:58:48,500 如果我們有我們 - 1227 00:58:48,500 --> 00:58:50,430 畫出這是一個快速的畫面。 1228 00:58:50,430 --> 00:58:53,500 大家可以看看 我寫在這裡? 1229 00:58:53,500 --> 00:59:02,890 >> 因此堆棧中,我們有一個本地 變量,它被稱為緩衝液,並 1230 00:59:02,890 --> 00:59:08,230 它是一個指針,指向一個char。 1231 00:59:08,230 --> 00:59:10,325 什麼地址是這個字符的? 1232 00:59:10,325 --> 00:59:12,550 >> 學生58:0X0。 1233 00:59:12,550 --> 00:59:13,400 >> JASON HIRSCHHORN:對。 1234 00:59:13,400 --> 00:59:14,200 那這是什麼。 1235 00:59:14,200 --> 00:59:17,600 在這裡,內部緩衝區,存儲0X0。 1236 00:59:17,600 --> 00:59:20,480 這就是我們所擁有的 - 的 安裝我們現在所擁有的。 1237 00:59:20,480 --> 00:59:27,540 所以這條線,用fread,把東西 從源代碼在哪裡? 1238 00:59:27,540 --> 00:59:30,560 這個框或此框? 1239 00:59:30,560 --> 00:59:31,060 這盒? 1240 00:59:31,060 --> 00:59:33,290 左框或右邊的框中? 1241 00:59:33,290 --> 00:59:34,750 這項權利箱。 1242 00:59:34,750 --> 00:59:38,440 >> 它遵循的指針, 並把它放在這裡。 1243 00:59:38,440 --> 00:59:42,620 當我們在嘗試和觸摸記憶 位置0,我們得到什麼? 1244 00:59:42,620 --> 00:59:45,050 分段錯誤。 1245 00:59:45,050 --> 00:59:46,550 這就是我們現在所擁有的錯誤。 1246 00:59:46,550 --> 00:59:46,970 是啊。 1247 00:59:46,970 --> 00:59:48,410 >> 學生59:你不是有 把明星緩衝? 1248 00:59:48,410 --> 00:59:49,180 還是沒有? 1249 00:59:49,180 --> 00:59:50,050 對於FREAD? 1250 00:59:50,050 --> 00:59:51,450 >> JASON HIRSCHHORN:所以用fread 需要一個指針。 1251 00:59:51,450 --> 00:59:54,920 1252 00:59:54,920 --> 00:59:55,900 因此它在緩衝傳遞。 1253 00:59:55,900 --> 00:59:58,980 然後它會去參考 它裡面的某個地方的fread。 1254 00:59:58,980 --> 01:00:00,700 但是再一次,我們看到,它需要一個指針。 1255 01:00:00,700 --> 01:00:02,560 我們並不需要把它star緩衝。 1256 01:00:02,560 --> 01:00:05,350 這將是路過 它無論是在這裡。 1257 01:00:05,350 --> 01:00:07,980 而這將可能給我們一個錯誤 因為我們去引用它。 1258 01:00:07,980 --> 01:00:08,150 >> 對不對? 1259 01:00:08,150 --> 01:00:10,690 當我們去引用這個指針,當 我們試圖訪問這個位置, 1260 01:00:10,690 --> 01:00:13,140 我們得到一個錯誤 - 我們的分段錯誤。 1261 01:00:13,140 --> 01:00:15,800 所以 - 1262 01:00:15,800 --> 01:00:16,690 哎呀。 1263 01:00:16,690 --> 01:00:19,090 我們要退出了GDB的。 1264 01:00:19,090 --> 01:00:20,160 我們的產品線 - 1265 01:00:20,160 --> 01:00:22,990 我們的問題 - 是正確的 這裡在這條線。 1266 01:00:22,990 --> 01:00:26,410 這是一個問題,因為 的這一行。 1267 01:00:26,410 --> 01:00:31,780 >> 我們怎樣才能創建一個框, 訪問中的fread。 1268 01:00:31,780 --> 01:00:31,980 對不對? 1269 01:00:31,980 --> 01:00:35,190 我們需要創建一個框的One 字節大,一個char的大小。 1270 01:00:35,190 --> 01:00:38,590 但是,我們需要這個盒子是可訪問 當這個函數執行。 1271 01:00:38,590 --> 01:00:39,390 那麼, - 1272 01:00:39,390 --> 01:00:39,640 是的。 1273 01:00:39,640 --> 01:00:40,440 任何想法? 1274 01:00:40,440 --> 01:00:43,615 >> 學生60:只需將其設置為 任何隨機字符。 1275 01:00:43,615 --> 01:00:49,150 1276 01:00:49,150 --> 01:00:51,640 只是做字符緩衝區的equals 的字符。 1277 01:00:51,640 --> 01:00:53,795 然後,當你已經緩衝那裡 - 1278 01:00:53,795 --> 01:00:54,110 >> JASON HIRSCHHORN:等待。 1279 01:00:54,110 --> 01:00:55,110 字符緩衝區? 1280 01:00:55,110 --> 01:00:55,880 因此,沒有明星? 1281 01:00:55,880 --> 01:00:56,390 >> 學生60:是啊。 1282 01:00:56,390 --> 01:00:58,560 取出的明星。 1283 01:00:58,560 --> 01:01:00,690 等於一個隨機字符。 1284 01:01:00,690 --> 01:01:01,460 >> JASON HIRSCHHORN:確定。 1285 01:01:01,460 --> 01:01:02,420 所以給我一個。 1286 01:01:02,420 --> 01:01:03,170 >> 學生60:像什麼的。 1287 01:01:03,170 --> 01:01:06,160 然後當你有緩衝 在那裡,你用 - 1288 01:01:06,160 --> 01:01:06,420 >> 學生61:星? 1289 01:01:06,420 --> 01:01:07,650 哦,不,連字符。 1290 01:01:07,650 --> 01:01:09,000 >> 學生60:使用符號。 1291 01:01:09,000 --> 01:01:09,470 >> JASON HIRSCHHORN:確定。 1292 01:01:09,470 --> 01:01:11,320 和什麼有關fwrite的? 1293 01:01:11,320 --> 01:01:14,150 >> 學生60:再次使用該符號。 1294 01:01:14,150 --> 01:01:14,320 >> JASON HIRSCHHORN:好吧。 1295 01:01:14,320 --> 01:01:20,970 所以,你的想法是,我們創建了一個char和 裝上去,然後 1296 01:01:20,970 --> 01:01:22,612 寫入該字符。 1297 01:01:22,612 --> 01:01:23,760 >> 學生60:是啊。 1298 01:01:23,760 --> 01:01:25,916 >> JASON HIRSCHHORN:什麼 人們認為呢? 1299 01:01:25,916 --> 01:01:27,770 >> 學生62:這是令人費解。 1300 01:01:27,770 --> 01:01:28,460 >> JASON HIRSCHHORN:確定。 1301 01:01:28,460 --> 01:01:29,760 讓我們把它畫出來。 1302 01:01:29,760 --> 01:01:35,720 所以這一次,我要在此畫 紅色棧這裡,然後我們 1303 01:01:35,720 --> 01:01:36,410 將有 - 1304 01:01:36,410 --> 01:01:36,822 哦! 1305 01:01:36,822 --> 01:01:38,060 抱歉。 1306 01:01:38,060 --> 01:01:45,930 所以這個時候,我們有一些所謂 緩衝器,它是在棧上。 1307 01:01:45,930 --> 01:01:48,430 正確嗎? 1308 01:01:48,430 --> 01:01:51,520 而我們在保存它,最初。 1309 01:01:51,520 --> 01:01:53,830 >> 然後,我們有我們要的fread調用。 1310 01:01:53,830 --> 01:02:01,300 它是需要一個字節從什麼用fread 我們的文件,並把它的地方。 1311 01:02:01,300 --> 01:02:04,570 它把它在無論 事情的指向。 1312 01:02:04,570 --> 01:02:09,130 好了,我們有這個地址之前 - 1313 01:02:09,130 --> 01:02:10,250 0X0。 1314 01:02:10,250 --> 01:02:13,349 現在,我們有什麼地址? 1315 01:02:13,349 --> 01:02:14,650 >> 學生63:無論 地址緩衝區。 1316 01:02:14,650 --> 01:02:15,970 >> JASON HIRSCHHORN:無論 地址緩衝區。 1317 01:02:15,970 --> 01:02:22,370 它可能會是 類似的東西。 1318 01:02:22,370 --> 01:02:26,950 可能將開始與b和 一個f,然後讓其他六個 1319 01:02:26,950 --> 01:02:27,970 十六進制數字。 1320 01:02:27,970 --> 01:02:28,480 沒關係。 1321 01:02:28,480 --> 01:02:29,470 一些地址。 1322 01:02:29,470 --> 01:02:31,410 我們正在通過該地址英寸 1323 01:02:31,410 --> 01:02:34,790 >> 我們打算把我們的單 字節的東西在那個地址。 1324 01:02:34,790 --> 01:02:38,470 因此,我們打算把我們的單 字節裡面的東西在這裡。 1325 01:02:38,470 --> 01:02:40,800 然後我們要去從寫 什麼是內部過這裡。 1326 01:02:40,800 --> 01:02:43,425 1327 01:02:43,425 --> 01:02:45,380 沒有任何人有任何疑問, 有關? 1328 01:02:45,380 --> 01:02:50,990 1329 01:02:50,990 --> 01:02:54,690 誰認為這代碼將工作? 1330 01:02:54,690 --> 01:02:56,020 >> 舉起你的手,如果你認為 這段代碼將正常工作。 1331 01:02:56,020 --> 01:02:57,270 你必須採取的立場。 1332 01:02:57,270 --> 01:03:00,670 1333 01:03:00,670 --> 01:03:02,500 和誰認為這代碼將無法正常工作? 1334 01:03:02,500 --> 01:03:04,610 舉起你的手。 1335 01:03:04,610 --> 01:03:06,750 其他人都應該 提高他們的手。 1336 01:03:06,750 --> 01:03:07,670 確定。 1337 01:03:07,670 --> 01:03:09,390 邁克爾,你在哪裡站著? 1338 01:03:09,390 --> 01:03:10,680 >> 邁克爾:我不能決定。 1339 01:03:10,680 --> 01:03:12,070 樣的在中間。 1340 01:03:12,070 --> 01:03:12,736 >> JASON HIRSCHHORN:你 在中間。 1341 01:03:12,736 --> 01:03:13,092 挑一。 1342 01:03:13,092 --> 01:03:14,400 >> 邁克爾:我有信心 並說,它會奏效。 1343 01:03:14,400 --> 01:03:14,660 >> JASON HIRSCHHORN:確定。 1344 01:03:14,660 --> 01:03:16,047 你有信心,說出來的作品? 1345 01:03:16,047 --> 01:03:26,490 1346 01:03:26,490 --> 01:03:27,020 發生了什麼事? 1347 01:03:27,020 --> 01:03:28,270 >> [插VOICES] 1348 01:03:28,270 --> 01:03:35,170 1349 01:03:35,170 --> 01:03:35,950 >> JASON HIRSCHHORN:無賽格故障。 1350 01:03:35,950 --> 01:03:40,320 我們怎樣才能檢查,看看是否 兩件事情都是平等的? 1351 01:03:40,320 --> 01:03:42,060 兩個文件都是平等的。 1352 01:03:42,060 --> 01:03:43,300 >> 學生64:沒有變化。 1353 01:03:43,300 --> 01:03:45,490 >> JASON HIRSCHHORN:沒有變化。 1354 01:03:45,490 --> 01:03:51,630 的diff檢查之間的差異 兩個文件,並且如果它返回 1355 01:03:51,630 --> 01:03:52,890 什麼都沒有,他們是一致的。 1356 01:03:52,890 --> 01:03:59,030 如果我們打開了,我們得到的文件。 1357 01:03:59,030 --> 01:04:00,490 所以這是正確的解決方案。 1358 01:04:00,490 --> 01:04:01,780 讓我們來回顧一下它一次。 1359 01:04:01,780 --> 01:04:04,080 事實上,我們甚至沒有 需要對它進行初始化。 1360 01:04:04,080 --> 01:04:05,520 >> 它可能看起來有點 清潔劑,如果你沒有把 1361 01:04:05,520 --> 01:04:07,680 隨機的東西在裡面。 1362 01:04:07,680 --> 01:04:13,070 問題的關鍵是,你需要創建 一些空間來存放東西從 1363 01:04:13,070 --> 01:04:15,530 fread和拿東西 fwrite的出來的。 1364 01:04:15,530 --> 01:04:18,400 而這件事必須是本地 變量在堆棧上 - 你 1365 01:04:18,400 --> 01:04:19,890 可能已經malloc'd一些空間。 1366 01:04:19,890 --> 01:04:23,030 >> 所以,我們其實可以有 這裡寫的malloc和 1367 01:04:23,030 --> 01:04:25,420 這將有工作。 1368 01:04:25,420 --> 01:04:28,660 然後我們會一直存儲 我們的東西在某處堆上。 1369 01:04:28,660 --> 01:04:31,940 但其實這是,也許, 最優雅的解決方案。 1370 01:04:31,940 --> 01:04:34,490 只是在棧上創建一些空間 為這些事情去了。 1371 01:04:34,490 --> 01:04:37,690 1372 01:04:37,690 --> 01:04:38,990 >> 我有兩個其他意見。 1373 01:04:38,990 --> 01:04:44,650 如果你要輪流在這一點, 然後得到得分在此,我的意見 1374 01:04:44,650 --> 01:04:47,400 將如下所示。 1375 01:04:47,400 --> 01:04:54,300 這些1在這裡,對我來說,看 像幻數。 1376 01:04:54,300 --> 01:04:56,860 這個1的方法,用fread而言, 有道理。 1377 01:04:56,860 --> 01:04:59,580 這是事物的數量 要讀取或寫入。 1378 01:04:59,580 --> 01:05:03,740 >> 但是這一次在這裡應 也許是別的東西。 1379 01:05:03,740 --> 01:05:05,180 那麼,什麼是一個解決方案? 1380 01:05:05,180 --> 01:05:06,545 >> 學生65:字節大小。 1381 01:05:06,545 --> 01:05:10,100 1382 01:05:10,100 --> 01:05:11,080 >> JASON HIRSCHHORN:像這樣? 1383 01:05:11,080 --> 01:05:13,130 >> 學生65:字符的大小。 1384 01:05:13,130 --> 01:05:13,820 >> JASON HIRSCHHORN:字符的大小。 1385 01:05:13,820 --> 01:05:15,290 是啊,字節是不是一個類型。 1386 01:05:15,290 --> 01:05:16,320 所以,大小字符的作品。 1387 01:05:16,320 --> 01:05:30,270 我們可以有,在頂部 我們的代碼,#定義。 1388 01:05:30,270 --> 01:05:33,410 叫什麼BYTE和 這真是一個字符。 1389 01:05:33,410 --> 01:05:37,675 其實,一個更好的辦法 可能是這一點 - 1390 01:05:37,675 --> 01:05:39,391 UINT。 1391 01:05:39,391 --> 01:05:40,780 任何人都知道是什麼嗎? 1392 01:05:40,780 --> 01:05:44,388 1393 01:05:44,388 --> 01:05:44,840 >> 抱歉。 1394 01:05:44,840 --> 01:05:46,090 我弄錯了。 1395 01:05:46,090 --> 01:05:51,620 1396 01:05:51,620 --> 01:05:52,200 等待,沒有。 1397 01:05:52,200 --> 01:05:53,450 哪一種方式它走? 1398 01:05:53,450 --> 01:05:58,071 1399 01:05:58,071 --> 01:05:59,660 任何人都知道是什麼嗎? 1400 01:05:59,660 --> 01:06:00,950 是啊。 1401 01:06:00,950 --> 01:06:05,650 >> 學生67:應該幫助規範 跨系統的東西, 1402 01:06:05,650 --> 01:06:08,760 有 - 像無符號整數 有8個字節? 1403 01:06:08,760 --> 01:06:11,785 >> JASON HIRSCHHORN:這是 完全正確。 1404 01:06:11,785 --> 01:06:14,310 在不同的機器, 一個char的大小 - 1405 01:06:14,310 --> 01:06:15,180 通常不是一個字符。 1406 01:06:15,180 --> 01:06:16,100 chars通常是一個字節。 1407 01:06:16,100 --> 01:06:19,590 但其他數據類型的大小是 在32位機器上不同大小 1408 01:06:19,590 --> 01:06:21,370 對一個64位的機器。 1409 01:06:21,370 --> 01:06:25,180 一個uint8_t有始終是8位 - 1410 01:06:25,180 --> 01:06:27,210 總是一個字節。 1411 01:06:27,210 --> 01:06:29,580 >> 我需要包括 標準整型的頭文件。 1412 01:06:29,580 --> 01:06:35,040 所以,現在,這將有可能被 寫這段代碼的最佳方式。 1413 01:06:35,040 --> 01:06:40,160 1414 01:06:40,160 --> 01:06:41,450 所以我擺脫幻數。 1415 01:06:41,450 --> 01:06:44,690 而且我也有一個更符合邏輯 鍵入緩衝區。 1416 01:06:44,690 --> 01:06:49,450 這不是一個簡單的字符,它是一個字節, 這正是我們所期望的那樣。 1417 01:06:49,450 --> 01:06:53,400 >> 而在這裡,我們實際上已經 一直有點更強大。 1418 01:06:53,400 --> 01:06:55,190 我們不認為它是一個字符,而 - 1419 01:06:55,190 --> 01:06:58,630 也許,誰知道 - 可能是一個不同的 大小不同的機器上。 1420 01:06:58,630 --> 01:07:02,025 實際上我們說這正是 一個字節,總是,不管是什麼。 1421 01:07:02,025 --> 01:07:05,810 如果我們看看在這裡,我們做CP。 1422 01:07:05,810 --> 01:07:08,340 嗯,哦。 1423 01:07:08,340 --> 01:07:09,590 發生了什麼事? 1424 01:07:09,590 --> 01:07:14,470 1425 01:07:14,470 --> 01:07:16,170 >> 學生68:它可能被切換。 1426 01:07:16,170 --> 01:07:17,880 >> JASON HIRSCHHORN:什麼? 1427 01:07:17,880 --> 01:07:19,130 >> 學生69:是嗎? 1428 01:07:19,130 --> 01:07:21,940 1429 01:07:21,940 --> 01:07:25,080 >> 學生70:你沒有 把它定義為一個類型。 1430 01:07:25,080 --> 01:07:28,684 >> 學生71:但應 在標準中定義。 1431 01:07:28,684 --> 01:07:29,934 >> 學生72:這是怎麼回事? 1432 01:07:29,934 --> 01:07:37,660 1433 01:07:37,660 --> 01:07:40,210 >> 學生73:應該定義為是全部大寫? 1434 01:07:40,210 --> 01:07:41,370 >> JASON HIRSCHHORN:所以它不是#定義。 1435 01:07:41,370 --> 01:07:45,490 實際上,在這種情況下,我 要使用typedef。 1436 01:07:45,490 --> 01:07:48,590 因為我們使用它作為 一種類型在一個位置。 1437 01:07:48,590 --> 01:07:51,990 因此,在這種情況下,我們實際上要 的typedef像我們印刷的新型 1438 01:07:51,990 --> 01:07:54,490 字節,並且它實質上是這樣。 1439 01:07:54,490 --> 01:07:56,590 這是一個有點不同的比#定義。 1440 01:07:56,590 --> 01:08:02,740 >> 而現在,我們的代碼完美的作品。 1441 01:08:02,740 --> 01:08:05,230 所以,再一次,#定義需要的東西, 無處不在取代它 1442 01:08:05,230 --> 01:08:06,780 與其他的事情。 1443 01:08:06,780 --> 01:08:07,920 這只是一個宏觀 - 1444 01:08:07,920 --> 01:08:09,420 速記擺脫幻數。 1445 01:08:09,420 --> 01:08:11,360 但在這種情況下,因為我們 使用它作為一個類型 - 1446 01:08:11,360 --> 01:08:12,180 就在這裡 - 1447 01:08:12,180 --> 01:08:19,880 為了實現這一工作,我們需要 於typedef任何字節。 1448 01:08:19,880 --> 01:08:21,840 >> 而我們定義它在這裡。 1449 01:08:21,840 --> 01:08:24,750 這不是一個結構,它實際上 只是一個無符號整數。 1450 01:08:24,750 --> 01:08:27,680 這是一個字節長。 1451 01:08:27,680 --> 01:08:31,910 此代碼將在網上和 你們都應該有它現在。 1452 01:08:31,910 --> 01:08:33,830 >> 因此,我們有 - 1453 01:08:33,830 --> 01:08:34,250 完美 - 1454 01:08:34,250 --> 01:08:41,359 13分鐘向左走 在問題設置5。 1455 01:08:41,359 --> 01:08:44,270 我想通過copy.c一起走, 然後我們將簡單地談一談 1456 01:08:44,270 --> 01:08:47,120 關於其他部分 問題的設置。 1457 01:08:47,120 --> 01:08:48,899 因此,讓我拉起來copy.c. 1458 01:08:48,899 --> 01:09:03,930 1459 01:09:03,930 --> 01:09:08,810 和很酷的事情是,我們實際上已經 已經寫了很多這樣的代碼。 1460 01:09:08,810 --> 01:09:11,180 >> 我們從字面上寫的代碼只是 來到離開這裡時,我是 1461 01:09:11,180 --> 01:09:13,120 我自己寫的。 1462 01:09:13,120 --> 01:09:16,990 但是,這是copy.c,形成了基礎 對於前兩部分 1463 01:09:16,990 --> 01:09:22,340 這個問題對於whodunit.c,設置哪些 你需要寫,和resize.c。 1464 01:09:22,340 --> 01:09:27,050 Recover.c,這是第三個和最後 問題集的一部分,是不是 1465 01:09:27,050 --> 01:09:29,529 根據關閉這個文件的。 1466 01:09:29,529 --> 01:09:32,200 >> 你將需要編寫一個文件, 我們給你一個模板 1467 01:09:32,200 --> 01:09:34,620 文件中,但它沒有任何 做copy.c. 1468 01:09:34,620 --> 01:09:38,675 但是因為copy.c是基礎 前兩部分中,我們將 1469 01:09:38,675 --> 01:09:42,000 通過它走了,所以你必須 一個良好的感覺是做什麼的。 1470 01:09:42,000 --> 01:09:43,640 >> 和意見給予一定的它拿走。 1471 01:09:43,640 --> 01:09:45,120 我們已經寫了一些了這一點。 1472 01:09:45,120 --> 01:09:49,220 首先,我們要確保 我們得到三個參數。 1473 01:09:49,220 --> 01:09:50,560 下一步,我們記住的文件名。 1474 01:09:50,560 --> 01:09:52,960 所以我們跳過這一步時, 我們編碼我們的事 - 1475 01:09:52,960 --> 01:09:54,700 當我們的CP。 1476 01:09:54,700 --> 01:09:56,750 但在這裡,他們正在做 它有點清潔。 1477 01:09:56,750 --> 01:09:59,350 >> 他們正在檢查,以確保 這兩個文件都不錯,在 1478 01:09:59,350 --> 01:10:00,450 除了打開它們。 1479 01:10:00,450 --> 01:10:04,760 我們寫這些代碼只是現在,所以我 不會糾纏於這些代碼。 1480 01:10:04,760 --> 01:10:09,670 接下來是一些東西,那是專門針對 文件中我們使用的類型而 1481 01:10:09,670 --> 01:10:12,240 是位圖文件。 1482 01:10:12,240 --> 01:10:15,660 位圖文件有一些元數據 與它們相關聯。 1483 01:10:15,660 --> 01:10:20,190 >> 因此,第一個字節計 告訴你有關文件。 1484 01:10:20,190 --> 01:10:23,460 他們不是的顏色 像素中的圖像。 1485 01:10:23,460 --> 01:10:25,120 他們告訴你有關文件。 1486 01:10:25,120 --> 01:10:28,220 而如果你通過問題集閱讀, 你將有更多的信息 1487 01:10:28,220 --> 01:10:33,100 什麼類型的元數據結構 所包含的位圖。 1488 01:10:33,100 --> 01:10:39,350 >> 但是,這就是為什麼我們有這個第一 設置 - 該代碼就在這裡。 1489 01:10:39,350 --> 01:10:42,490 我們正在閱讀的元數據 - 1490 01:10:42,490 --> 01:10:45,800 兩件元數據 - 文件 頭和信息頭。 1491 01:10:45,800 --> 01:10:51,030 我們正在檢查它的某些部分 確保它是一個真正的位圖文件 1492 01:10:51,030 --> 01:10:52,420 然後再繼續。 1493 01:10:52,420 --> 01:10:55,470 >> 再次,這些都是細節,我們 現在不需要進入。 1494 01:10:55,470 --> 01:10:57,720 如果你通過問題集閱讀, 你就會理解這些。 1495 01:10:57,720 --> 01:11:01,370 長話短說,這些都只是說, 這是一個位圖文件,並 1496 01:11:01,370 --> 01:11:02,810 確認。 1497 01:11:02,810 --> 01:11:05,180 >> 接下來,我們正在寫那些 到了文件中。 1498 01:11:05,180 --> 01:11:05,660 我們看到,在這裡。 1499 01:11:05,660 --> 01:11:06,910 我們正在編寫到了指針。 1500 01:11:06,910 --> 01:11:09,260 1501 01:11:09,260 --> 01:11:11,320 下一步,我們確定填充。 1502 01:11:11,320 --> 01:11:15,240 所以,再一次,為的是與特殊性 一個位圖文件,一些線路包括 1503 01:11:15,240 --> 01:11:16,840 填充底。 1504 01:11:16,840 --> 01:11:19,000 而如果你通過問題集閱讀, 您將了解更多有關填充。 1505 01:11:19,000 --> 01:11:22,330 這是式找到填充。 1506 01:11:22,330 --> 01:11:23,610 >> 重要的是要記住 - 1507 01:11:23,610 --> 01:11:29,720 當你改變一個位圖的大小 文件,填充改變。 1508 01:11:29,720 --> 01:11:31,970 當你改變的大小 文件,填充改變。 1509 01:11:31,970 --> 01:11:34,310 它永遠不會是 大於3 - 1510 01:11:34,310 --> 01:11:36,510 這將是0到3,包容性。 1511 01:11:36,510 --> 01:11:38,930 但是,當你改變的大小 東西,填充改變。 1512 01:11:38,930 --> 01:11:47,100 >> 如果我只有一個像素在該行,我 需要三個填充字節,因為 1513 01:11:47,100 --> 01:11:51,190 每一行必須是四的倍數 在一個位圖文件字節長。 1514 01:11:51,190 --> 01:11:56,120 但是,如果我加倍,從一個像素去 其中每兩個像素, 1515 01:11:56,120 --> 01:11:59,510 讓我們說,是一個字節,那麼我需要 兩個字節填充,使 1516 01:11:59,510 --> 01:12:00,970 即等於4。 1517 01:12:00,970 --> 01:12:04,200 >> 所以,當我改變的東西的大小, 我需要改變的金額 1518 01:12:04,200 --> 01:12:06,551 填充我有。 1519 01:12:06,551 --> 01:12:08,100 這是否有意義給大家? 1520 01:12:08,100 --> 01:12:12,020 1521 01:12:12,020 --> 01:12:18,720 接下來,我們遍歷每一行, 或通過所有行。 1522 01:12:18,720 --> 01:12:21,400 然後我們通過遍歷 每行中的每個列。 1523 01:12:21,400 --> 01:12:25,330 我們對待這個點陣圖樣 一個網格,就像我們對待 1524 01:12:25,330 --> 01:12:26,490 董事會15。 1525 01:12:26,490 --> 01:12:29,200 >> 就像我們對待磚時 我們印在屏幕上。 1526 01:12:29,200 --> 01:12:31,350 行和列的網格。 1527 01:12:31,350 --> 01:12:32,350 那麼 - 我們看到了這一點。 1528 01:12:32,350 --> 01:12:33,840 實際上,我們只是編碼的。 1529 01:12:33,840 --> 01:12:35,780 我們創造了一些臨時存儲。 1530 01:12:35,780 --> 01:12:38,710 我們讀到在那裡,然後 我們寫出來。 1531 01:12:38,710 --> 01:12:42,680 這正是我們只是做了。 1532 01:12:42,680 --> 01:12:46,760 >> 接下來,因為我說的每一行 結束在一些填充,我們 1533 01:12:46,760 --> 01:12:48,260 跳過該填充 - 1534 01:12:48,260 --> 01:12:51,000 舊的填充。 1535 01:12:51,000 --> 01:12:52,630 然後我們重新添加。 1536 01:12:52,630 --> 01:12:55,140 在這種情況下,我們要創建 完全相同的文件。 1537 01:12:55,140 --> 01:12:56,180 我們只是複製它。 1538 01:12:56,180 --> 01:12:57,700 所以,這條線是有點傻。 1539 01:12:57,700 --> 01:12:59,660 我們可以從字面上只是 把填充英寸 1540 01:12:59,660 --> 01:13:04,290 >> 但是,如果你改變了文件的大小, 你還想要這條線? 1541 01:13:04,290 --> 01:13:08,510 1542 01:13:08,510 --> 01:13:11,560 因此,如果我們改變一個文件的大小, 我們仍想跳過 1543 01:13:11,560 --> 01:13:12,810 在舊的填充? 1544 01:13:12,810 --> 01:13:15,170 1545 01:13:15,170 --> 01:13:15,970 >> 學生74:是的。 1546 01:13:15,970 --> 01:13:17,090 >> JASON HIRSCHHORN:所以我們做的。 1547 01:13:17,090 --> 01:13:19,290 正因為如此,同樣,優惠 與源文件。 1548 01:13:19,290 --> 01:13:21,570 我們不關心填充 從源文件。 1549 01:13:21,570 --> 01:13:23,410 我們想要去到下一行。 1550 01:13:23,410 --> 01:13:28,850 但是,我們不能簡單地把背 老金額填充。 1551 01:13:28,850 --> 01:13:31,540 我們需要把後面的 新的量填充。 1552 01:13:31,540 --> 01:13:35,810 >> 所以,當我們正在改變的大小 文件,我們還是想略過 1553 01:13:35,810 --> 01:13:38,270 填充在舊文件 - 什麼 我們從閱讀中。 1554 01:13:38,270 --> 01:13:40,370 但是,我們特此,我們將 需要放回一些不同的 1555 01:13:40,370 --> 01:13:41,890 填充數 我們已經確定。 1556 01:13:41,890 --> 01:13:42,780 是啊。 1557 01:13:42,780 --> 01:13:44,550 >> 學生75:這兩個的順序 線不要緊吧? 1558 01:13:44,550 --> 01:13:46,160 因為你處理 不同的文件。 1559 01:13:46,160 --> 01:13:46,620 >> JASON HIRSCHHORN:沒錯。 1560 01:13:46,620 --> 01:13:48,220 這兩條線的順序 沒關係。 1561 01:13:48,220 --> 01:13:49,790 我們寫這條線。 1562 01:13:49,790 --> 01:13:51,430 這是這裡的文件 我們正在寫。 1563 01:13:51,430 --> 01:13:54,370 這一點很重要,所以我們得到的 適量的填充。 1564 01:13:54,370 --> 01:13:57,560 這要處理的文件中。 1565 01:13:57,560 --> 01:13:58,560 我們想跳過權利 在填充。 1566 01:13:58,560 --> 01:13:59,470 >> 我們不想讀 - 1567 01:13:59,470 --> 01:14:01,500 如果我們讀一字節的時間,我們 不關心這些填充字節。 1568 01:14:01,500 --> 01:14:04,070 我們想要移動到下一行。 1569 01:14:04,070 --> 01:14:11,800 最後,就像露西給了我們, 我們關閉文件並返回0。 1570 01:14:11,800 --> 01:14:13,890 因此,這是copy.c. 1571 01:14:13,890 --> 01:14:17,850 而我們實際上寫 - 我們大部分的 部分寫這個,基本上。 1572 01:14:17,850 --> 01:14:18,740 >> 是你們成就了。 1573 01:14:18,740 --> 01:14:22,440 所以希望你有一個良好的感覺 什麼的在這裡發生了。 1574 01:14:22,440 --> 01:14:25,890 最大的區別,說實話,只是 與交易第一部分 1575 01:14:25,890 --> 01:14:29,970 位圖文件的特殊性。 1576 01:14:29,970 --> 01:14:33,570 所以,我有我的下一張幻燈片, 什麼我們需要做什麼? 1577 01:14:33,570 --> 01:14:35,510 好吧,讓我們想想偵探小說。 1578 01:14:35,510 --> 01:14:38,080 >> 而對於有人誰讀通過 問題設置,有什麼事我們 1579 01:14:38,080 --> 01:14:41,410 需要做的偵探小說? 1580 01:14:41,410 --> 01:14:42,080 簡單。 1581 01:14:42,080 --> 01:14:42,460 位於Aleja。 1582 01:14:42,460 --> 01:14:48,570 >> ALEJA:你能不能拿出一部分 每個表示紅色像素的。 1583 01:14:48,570 --> 01:14:49,730 然後 - 1584 01:14:49,730 --> 01:14:50,730 樣的? 1585 01:14:50,730 --> 01:14:51,860 >> JASON HIRSCHHORN:確定。 1586 01:14:51,860 --> 01:14:54,460 因此,採取了各部分 像素是指紅色。 1587 01:14:54,460 --> 01:14:57,234 這是接近,但不是全部。 1588 01:14:57,234 --> 01:14:59,780 >> 學生76:嗯,有 不同的方法來做到這一點。 1589 01:14:59,780 --> 01:14:59,870 >> JASON HIRSCHHORN:確定。 1590 01:14:59,870 --> 01:15:03,070 給我一個方法。 1591 01:15:03,070 --> 01:15:08,240 >> 學生76:取出所有的紅色,和 再強調藍色和綠色。 1592 01:15:08,240 --> 01:15:10,010 >> JASON HIRSCHHORN:確定。 1593 01:15:10,010 --> 01:15:11,830 因此,考慮這兩個方面 - 1594 01:15:11,830 --> 01:15:15,210 這聽起來像我們給它一個像素,它 具有紅色,藍色和綠色的層次。 1595 01:15:15,210 --> 01:15:19,350 我們要改變的相對水平 紅色,藍色和綠色的,這取決於 1596 01:15:19,350 --> 01:15:20,740 該像素。 1597 01:15:20,740 --> 01:15:28,380 凡在此代碼應修改 相對紅,藍和綠 1598 01:15:28,380 --> 01:15:29,720 給定像素的水平。 1599 01:15:29,720 --> 01:15:30,600 之後我們讀它 - 1600 01:15:30,600 --> 01:15:32,520 我們寫它呢? 1601 01:15:32,520 --> 01:15:34,564 給我的行號。 1602 01:15:34,564 --> 01:15:35,950 >> 多名學生:83。 1603 01:15:35,950 --> 01:15:37,320 >> JASON HIRSCHHORN:83。 1604 01:15:37,320 --> 01:15:38,570 所以就在這裡。 1605 01:15:38,570 --> 01:15:40,830 1606 01:15:40,830 --> 01:15:45,710 對於偵探小說,你的代碼需要 寫都應該去那裡。 1607 01:15:45,710 --> 01:15:47,640 而這唯一的代碼 你需要寫。 1608 01:15:47,640 --> 01:15:51,520 因為,就像我們聽到的,所有你需要 做的是改變這些相對藍色, 1609 01:15:51,520 --> 01:15:54,420 紅色和綠色的水平從每個像素。 1610 01:15:54,420 --> 01:15:58,250 >> 你讀過它,現在你 會寫出來。 1611 01:15:58,250 --> 01:16:03,100 我如何獲得 - 如果我有這個東西 所謂三合一,就在這裡,它的的 1612 01:16:03,100 --> 01:16:04,570 輸入RGBTRIPLE - 1613 01:16:04,570 --> 01:16:08,650 好了,如果我們看著在bmp.h, 什麼是RGBTRIPLE? 1614 01:16:08,650 --> 01:16:11,450 1615 01:16:11,450 --> 01:16:12,700 >> 學生77:這是一個結構。 1616 01:16:12,700 --> 01:16:17,440 1617 01:16:17,440 --> 01:16:18,900 >> JASON HIRSCHHORN:RGBTRIPLE 是一個結構。 1618 01:16:18,900 --> 01:16:22,330 我們看到,就在這裡。 1619 01:16:22,330 --> 01:16:26,600 所以,如果我想訪問,比方說, 該結構的紅色級別,我該怎麼辦 1620 01:16:26,600 --> 01:16:30,005 訪問此結構的紅色級別? 1621 01:16:30,005 --> 01:16:37,280 >> [CLASS雜音] 1622 01:16:37,280 --> 01:16:38,530 >> 學生78:RGBTRIPLE.rgbtred? 1623 01:16:38,530 --> 01:16:47,250 1624 01:16:47,250 --> 01:16:48,856 >> JASON HIRSCHHORN:這是否正確? 1625 01:16:48,856 --> 01:16:53,040 >> 學生79:應該是三 點,而不是RGBTRIPLE點,? 1626 01:16:53,040 --> 01:16:54,120 >> JASON HIRSCHHORN:三重。 1627 01:16:54,120 --> 01:16:56,700 三重是局部變量,所以 在這裡,這裡沒有指針。 1628 01:16:56,700 --> 01:16:58,400 所以我們只需要使用點符號。 1629 01:16:58,400 --> 01:17:00,480 這會給我的紅色級別。 1630 01:17:00,480 --> 01:17:06,180 如果我想改變它,我只設置 它等於不同的東西。 1631 01:17:06,180 --> 01:17:13,190 如此反复,這行代碼訪問 這個變量這個結構裡面, 1632 01:17:13,190 --> 01:17:15,070 我們可以將其設置為新的東西。 1633 01:17:15,070 --> 01:17:20,040 >> 因此對於推理小說,再次,這是 在本質上,我們需要做的。 1634 01:17:20,040 --> 01:17:21,170 很簡單。 1635 01:17:21,170 --> 01:17:25,020 只要改變一些相對水平,並 這是哪裡的代碼去。 1636 01:17:25,020 --> 01:17:27,720 調整大小,另一方面, 是有點棘手。 1637 01:17:27,720 --> 01:17:30,900 事實上,調整大小大概是 這個問題最棘手的部分設置。 1638 01:17:30,900 --> 01:17:32,720 我們有三分鐘就到了它。 1639 01:17:32,720 --> 01:17:34,910 >> 但是再一次,我們已經寫 大部分代碼,因此我們 1640 01:17:34,910 --> 01:17:36,500 應該是相當熟悉的。 1641 01:17:36,500 --> 01:17:40,750 有哪些事情是我們想要做的 調整大小,如果你讀一下 1642 01:17:40,750 --> 01:17:43,470 問題設置? 1643 01:17:43,470 --> 01:17:45,290 如果你給我吧,我們 可以談論他們。 1644 01:17:45,290 --> 01:17:47,340 有哪些事情是我們想幹什麼? 1645 01:17:47,340 --> 01:17:47,970 >> 學生80:垂直 - 1646 01:17:47,970 --> 01:17:52,360 所以你必須在水平方向調整其大小, 但垂直調整它的大小呢? 1647 01:17:52,360 --> 01:17:58,475 >> JASON HIRSCHHORN:所以,如果我們給出一個 像素,並且我們希望通過調整其大小 1648 01:17:58,475 --> 01:18:03,460 兩個因素,它現在需要 調整水平和調整大小 1649 01:18:03,460 --> 01:18:05,220 垂直。 1650 01:18:05,220 --> 01:18:06,640 這是否有道理? 1651 01:18:06,640 --> 01:18:07,060 是啊。 1652 01:18:07,060 --> 01:18:09,300 所以這是可能的 最大的挑戰。 1653 01:18:09,300 --> 01:18:10,430 和我們談談,在幾秒鐘之內。 1654 01:18:10,430 --> 01:18:11,065 是啊。 1655 01:18:11,065 --> 01:18:15,270 >> 學生81:我想它的方式 是你需要打印出來 - 1656 01:18:15,270 --> 01:18:15,490 >> JASON HIRSCHHORN:等待。 1657 01:18:15,490 --> 01:18:17,580 不要告訴我們你做了什麼。 1658 01:18:17,580 --> 01:18:20,620 我們要談的邏輯。 1659 01:18:20,620 --> 01:18:21,870 >> 學生81:確定。 1660 01:18:21,870 --> 01:18:25,090 1661 01:18:25,090 --> 01:18:27,410 究竟是什麼問題? 1662 01:18:27,410 --> 01:18:28,892 >> JASON HIRSCHHORN:你剛才 提出你的手。 1663 01:18:28,892 --> 01:18:31,600 毫無疑問。 1664 01:18:31,600 --> 01:18:32,520 讓我來介紹它。 1665 01:18:32,520 --> 01:18:34,560 讓我討論這個短暫。 1666 01:18:34,560 --> 01:18:38,400 因此,我們的一個像素,我們要 複製它,橫向和 1667 01:18:38,400 --> 01:18:39,360 垂直。 1668 01:18:39,360 --> 01:18:48,920 因此,理想情況下我們在這裡做的是什麼,我們 閱讀我們的像素,我們把它寫 1669 01:18:48,920 --> 01:18:51,690 然而許多倍。 1670 01:18:51,690 --> 01:18:54,720 >> 但是,我們有我們的絕招在這裡,因為 那麼我們要跳到 1671 01:18:54,720 --> 01:18:57,660 下一行,並在寫 開始下一行的。 1672 01:18:57,660 --> 01:19:02,960 因此,如果我們想複製這兩個 水平和垂直方向是什麼 1673 01:19:02,960 --> 01:19:05,050 一個很好的方法來做到這一點 - 1674 01:19:05,050 --> 01:19:06,780 一款不錯的,雖然這樣做呢? 1675 01:19:06,780 --> 01:19:11,950 所以我們並不需要時時尋求 圍繞我們的文件放置的東西。 1676 01:19:11,950 --> 01:19:14,360 >> 這個問題可能沒有 是有道理的,但我認為一個 1677 01:19:14,360 --> 01:19:15,800 答案是會有所幫助。 1678 01:19:15,800 --> 01:19:17,210 >> 學生82:創建一個數組? 1679 01:19:17,210 --> 01:19:20,090 >> JASON HIRSCHHORN:所以,讓我們覺得 每個文件為一排。 1680 01:19:20,090 --> 01:19:22,550 讓我們覺得行方面。 1681 01:19:22,550 --> 01:19:26,670 如果我們有我們的第一行從我們的小 圖片中,我們可以作出這樣的行 1682 01:19:26,670 --> 01:19:30,640 從成一張大圖片大排, 然後複製但該行 1683 01:19:30,640 --> 01:19:34,250 很多時候它需要被複製, 而不是通過像素去像素 1684 01:19:34,250 --> 01:19:37,260 它得到混亂的時候 處理文件。 1685 01:19:37,260 --> 01:19:38,730 >> 因為如果我們有 - 1686 01:19:38,730 --> 01:19:41,260 我跑出來的空間。 1687 01:19:41,260 --> 01:19:46,490 如果這是我們的文件,我們有 一個像素在那裡,我們希望把它 1688 01:19:46,490 --> 01:19:49,840 在那裡,我們仍然有一些事情 那需要到那邊去,當我們 1689 01:19:49,840 --> 01:19:51,450 寫作和創造我們的新文件 - 1690 01:19:51,450 --> 01:19:53,250 我們的文件,該文件的兩倍大。 1691 01:19:53,250 --> 01:19:56,820 >> 但它真的很難用文件功能 跳過各地新線 1692 01:19:56,820 --> 01:20:00,260 這樣,然後回去在這裡 並把東西在裡面。 1693 01:20:00,260 --> 01:20:04,500 這幾乎是不可能做到的事情 這樣,如果是有道理的。 1694 01:20:04,500 --> 01:20:10,180 因此,如果我們認為行方面,我們可以 把我們的行,然後把它放在 - 1695 01:20:10,180 --> 01:20:11,720 垂直重複的行。 1696 01:20:11,720 --> 01:20:15,860 >> 這就是我們如何處理調整大小 垂直而不是水平。 1697 01:20:15,860 --> 01:20:18,810 這是那種快, 有點混亂。 1698 01:20:18,810 --> 01:20:22,375 不幸的是我們的時間到了。 1699 01:20:22,375 --> 01:20:27,340 我會站在外面那些你 誰在這裡有關於問題 1700 01:20:27,340 --> 01:20:30,500 習題集,包括恢復。 1701 01:20:30,500 --> 01:20:32,320 >> 因此,讓我們休會了。 1702 01:20:32,320 --> 01:20:34,480 再次,如果您有任何疑問, 我們可以聊天之外。 1703 01:20:34,480 --> 01:20:38,294