1 00:00:00,000 --> 00:00:07,810 2 00:00:07,810 --> 00:00:09,840 >> JASONハーシュホーン:ようこそ、 第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 これらの最後の2トピックがかかります セクションの大部分、今日まで。 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 すべてのpsetに5のまたは4の。 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 だから私はあなたのすべてを押して、その他のTFいます だけでなく、有効にするには、あなたたちをプッシュしている 51 00:02:45,130 --> 00:02:48,320 正しいものでなくターン よく符号化されているものに。 52 00:02:48,320 --> 00:02:53,060 >> ループには不要なをしていない、 場合は、変数を再計算しない 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 >> 我々が見た別の良い設計例 15週3では、保つことができる 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ハーシュホーン:7秒。 102 00:05:22,750 --> 00:05:23,250 [OK]をクリックします。 103 00:05:23,250 --> 00:05:24,970 のビットのためにクイズ0についてお話しましょう​​。 104 00:05:24,970 --> 00:05:26,700 あなたのほとんどは、あなたのクイズ0の背中を持っています。 105 00:05:26,700 --> 00:05:29,820 あなたがいない場合は、うまくいけば あなたはそれを少し覚えています。 106 00:05:29,820 --> 00:05:34,770 しかし、あなたは、あなたクイズ0を、撮影した場合には また、オンラインのPDFへのアクセス権を持って 107 00:05:34,770 --> 00:05:35,890 サンプル溶液。 108 00:05:35,890 --> 00:05:39,480 >> 誰もが前にご質問があるん 私たちは、約一週間の材料に飛び込む 109 00:05:39,480 --> 00:05:41,520 クイズ0上の特定の問題 - 110 00:05:41,520 --> 00:05:44,630 なぜその答えは、それが何であるかです? 111 00:05:44,630 --> 00:05:47,255 誰が何について混乱か? 112 00:05:47,255 --> 00:05:50,230 あなたは正しい問題を得たが、あっても、 ちょうど私がそれを少し説明したいと思います 113 00:05:50,230 --> 00:05:52,640 より多くの、私はここで実行してうれしいです。 114 00:05:52,640 --> 00:05:57,800 >> だから私はにあなたたちを求めている いくつかと準備してくる 115 00:05:57,800 --> 00:05:59,440 クイズ0約思考。 116 00:05:59,440 --> 00:06:02,660 だから、誰が私たちを取得したいと思います 質問を開始または 117 00:06:02,660 --> 00:06:04,655 クイズ0についてコメント? 118 00:06:04,655 --> 00:06:07,435 119 00:06:07,435 --> 00:06:10,410 >> [用紙カサカサ] 120 00:06:10,410 --> 00:06:11,470 >> JASONハーシュホーン:ない誰も 完璧でした。 121 00:06:11,470 --> 00:06:12,720 だから私は知っている(笑) 122 00:06:12,720 --> 00:06:15,950 いくつかの質問がなければならない クイズ0について。 123 00:06:15,950 --> 00:06:27,940 124 00:06:27,940 --> 00:06:28,590 [OK]をクリックします。 125 00:06:28,590 --> 00:06:29,210 はい。 126 00:06:29,210 --> 00:06:29,600 Ompica。 127 00:06:29,600 --> 00:06:30,520 >> OMPICA:番号10。 128 00:06:30,520 --> 00:06:33,560 >> JASONハーシュホーン:数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ハーシュホーン:私は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ハーシュホーン:番号10は8だった 私に - 私に8を書いて? 135 00:06:42,180 --> 00:06:42,980 >> OMPICA:うん。 136 00:06:42,980 --> 00:06:43,630 >> JASONハーシュホーン:わかりました。 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 私の8。 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 >> あなたが持っていたならば、あなたは持っているだろう おそらく、これらの2によくやった。 144 00:07:02,520 --> 00:07:06,030 しかし、私の8は、我々は実際にコードしませんでした それはクラスで、それは、再び、だった 145 00:07:06,030 --> 00:07:07,500 クイズに尋ねた。 146 00:07:07,500 --> 00:07:13,270 だから、物事のカップルを取る 私の8をコーディングする際に注意してください。 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 しかし、nullが本質的であることを、覚えている - それは考えて良いことだ 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は、チャースターSで ブラケット私はCHARです。 157 00:07:50,950 --> 00:07:57,410 だから、nullにSを比較するために理にかなっている、 私はnullにではなく、Sブラケット。 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 それはあなたが持っているどのような番号がかかります charとして、して、それが等しく取得 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 また、必ず各ことを確認してください 個々の文字はA確かだった 190 00:09:36,400 --> 00:09:39,780 ゼロと9間の文字ではなく、 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ハーシュホーン:わかりました。 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ハーシュホーン:はい。 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ハーシュホーン:数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 私たちは、実際にこれを上書くことができます ボードからで1 216 00:10:31,740 --> 00:10:33,320 1行のコードだった - 217 00:10:33,320 --> 00:10:34,390 それを行うための一つの方法。 218 00:10:34,390 --> 00:10:37,810 >> だから我々は次のようにdrand与えている この関数は、我々は使用することができます。 219 00:10:37,810 --> 00:10:38,820 そして、何がdrandん - 220 00:10:38,820 --> 00:10:40,290 それが播種されているのと仮定して - 221 00:10:40,290 --> 00:10:42,316 何を返すdrandのでしょうか? 222 00:10:42,316 --> 00:10:44,840 >> マイケル:0.0〜1.0のフロート。 223 00:10:44,840 --> 00:10:45,530 >> JASONハーシュホーン:数 - うん。 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 もちろん、我々は、全範囲を有する 数字105.83できること 237 00:11:22,820 --> 00:11:28,470 >> Bが10で、5であれば、私たちは本当に、言う 5の範囲で数値を求めています。 238 00:11:28,470 --> 00:11:36,940 だから我々がする必要がある次のことはある 範囲BマイナスAによって、これを乗算します。 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マイナスAとの違い。 242 00:11:46,610 --> 00:11:50,030 >> そして最後に、それだけからそれをあげるよ - BマイナスAの間の範囲を言う 243 00:11:50,030 --> 00:11:52,520 それが私たちに与えるだろう、5です 0〜5の数。 244 00:11:52,520 --> 00:11:56,000 実際に5であるなら、私たちは後押しする必要がある それはだところに、この範囲まで 245 00:11:56,000 --> 00:12:01,380 実際に加算して、ことになって。 246 00:12:01,380 --> 00:12:02,580 だからロジック権を取得します。 247 00:12:02,580 --> 00:12:03,745 そして、あなたが持っているだろう 別の質問? 248 00:12:03,745 --> 00:12:04,547 >> マイケル:いいえ。 249 00:12:04,547 --> 00:12:06,010 私はちょうど今、本当にばかに感じる。 250 00:12:06,010 --> 00:12:06,405 (笑) 251 00:12:06,405 --> 00:12:06,730 >> JASONハーシュホーン:いいえ。 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 floatを返します。 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 操作は、全てのAとしてそれを扱います フロート - 浮動小数点数として。 259 00:12:29,090 --> 00:12:31,570 この意志のように - これさえあれば 整数、この意志です 260 00:12:31,570 --> 00:12:32,890 正しく掛けられる。 261 00:12:32,890 --> 00:12:34,000 すべての乗算が動作します。 262 00:12:34,000 --> 00:12:35,060 あなたがここでそれをキャストする必要はありません。 263 00:12:35,060 --> 00:12:36,480 実際には、あなたがそれを唱えるべきではありません。 264 00:12:36,480 --> 00:12:37,310 >> つまりだろう - 265 00:12:37,310 --> 00:12:40,750 あなたが番号を唱えたい場合 つまり、0と1の間です - 266 00:12:40,750 --> 00:12:42,680 乱数、浮動小数点 - 267 00:12:42,680 --> 00:12:47,850 それはそう、唯一の0または1のどちらかになります あなたはその精度をすべて失うことになる。 268 00:12:47,850 --> 00:12:50,120 しかし、最後に、あなたが戻ったときに、 それは自動的に取得する 269 00:12:50,120 --> 00:12:51,620 整数として送り返さ。 270 00:12:51,620 --> 00:12:56,870 だから、する必要はありません それはあなた自身をキャスティング。 271 00:12:56,870 --> 00:13:00,810 >> だから、これはへの答えだった その質問、番号7。 272 00:13:00,810 --> 00:13:02,190 クイズ0上の任意の他の質問? 273 00:13:02,190 --> 00:13:03,300 うん、アニー。 274 00:13:03,300 --> 00:13:05,050 >> ANNIE:我々は、再帰的に使用するのです - 275 00:13:05,050 --> 00:13:07,850 ときに我々は反復ループを使うのですか? 276 00:13:07,850 --> 00:13:10,210 >> JASONハーシュホーン:あなたが使用するのですか 再帰 - ので、より一般的には、 277 00:13:10,210 --> 00:13:14,110 再帰対の長所と短所 反復アプローチ。 278 00:13:14,110 --> 00:13:17,110 誰もがプロまたはCONを提供することができます? 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 誰がプロまたはCONを提供することができますか? 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ハーシュホーン:だから、一般的に、 再帰特に、機能 - 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:再帰にのConA - 293 00:13:49,240 --> 00:13:50,940 それは、より多くのメモリを使用しています。 294 00:13:50,940 --> 00:13:52,200 >> JASONハーシュホーン:だからまったく正しい。 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 反復アプローチは、1を配置します スタック上のフレームをスタックので 299 00:14:05,810 --> 00:14:08,420 それはすべて1関数内で発生します。 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ハーシュホーン:私はそれが本当だと思います。 308 00:14:27,780 --> 00:14:30,770 しかし、私は両方のケースで考える あなたは決して - 309 00:14:30,770 --> 00:14:33,290 おそらく、いくつかになるだろう ユーザからの入力。 310 00:14:33,290 --> 00:14:35,990 またはこの関数は、いくつかの入力を持っているでしょう それは決定するであろう何度も 311 00:14:35,990 --> 00:14:36,730 実行する必要があります。 312 00:14:36,730 --> 00:14:39,520 だから一般的には、ハードコードされないだろう - でも、反復アプローチでの - どのように 313 00:14:39,520 --> 00:14:40,940 何度もそのループを実行する必要があります。 314 00:14:40,940 --> 00:14:46,100 315 00:14:46,100 --> 00:14:48,670 >> あなたがいた別のを持っていなかった アニー、お考えですか? 316 00:14:48,670 --> 00:14:49,330 [OK]をクリックします。 317 00:14:49,330 --> 00:14:51,650 ので、これらはおそらく2である - 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 [OK]をクリックします。 321 00:14:57,690 --> 00:14:59,465 クイズ0上の他には? 322 00:14:59,465 --> 00:15:08,940 323 00:15:08,940 --> 00:15:09,920 >> 先に進みましょう。 324 00:15:09,920 --> 00:15:15,260 ファイルI / O素敵なショートがあります 今週ファイルでI / Oのことうまくいけば 325 00:15:15,260 --> 00:15:19,270 あなたは、複数のを見た 時間、賞賛。 326 00:15:19,270 --> 00:15:22,910 多くの仕事は、その中に行き、私がしました それはめちゃくちゃ便利です聞いた。 327 00:15:22,910 --> 00:15:25,740 私はまた、このスライド上のリンクを含んでいた ケースではありませんでした 328 00:15:25,740 --> 00:15:29,160 それを10回見るチャンス。 329 00:15:29,160 --> 00:15:35,280 >> そこで、我々は簡単に上に行くつもりです 開いて作業する主なステップ 330 00:15:35,280 --> 00:15:38,400 ファイルした後、我々はしようとしていると 前の符号化の問題に飛び込む 331 00:15:38,400 --> 00:15:40,400 問題のあるセットを調べる。 332 00:15:40,400 --> 00:15:44,330 だからもう一度、私が上でこれを我慢するつもりです 画面が、私はのために話をするつもりだ 333 00:15:44,330 --> 00:15:47,630 私たちがしているかについてだけで分 ファイルをここでやっI/O-- 334 00:15:47,630 --> 00:15:49,090 それは何を意味するのでしょうか? 335 00:15:49,090 --> 00:15:55,280 >> それは我々が作成できることを意味します私たちの プログラムした後、我々のプログラムを持っている 336 00:15:55,280 --> 00:16:00,370 exitと上の任意の影響を与えてきていない 私たちのプログラムの外の世界。 337 00:16:00,370 --> 00:16:04,630 しかし、我々はファイルの操作を開始するとき - 両方でそれらを読んで作成する 338 00:16:04,630 --> 00:16:10,460 彼ら - 私たちは、に何らかの影響を持つことができます 私たちのプログラムの外の世界。 339 00:16:10,460 --> 00:16:15,440 >> 同じようにMicrosoft Wordができなかった場合 その後、任意のWord文書を作る 340 00:16:15,440 --> 00:16:18,710 Microsoft Wordは、あなたのすべてを終了したら、 仕事はなくなっているだろう、それはだろう 341 00:16:18,710 --> 00:16:19,740 本当に役に立たない。 342 00:16:19,740 --> 00:16:23,620 我々は最終的にできるようにしたいです 影響を与えることができるプログラムを書く 343 00:16:23,620 --> 00:16:31,350 彼らの周りの世界、両方を取り入れることで 複素数入力 - ファイルの面でと 344 00:16:31,350 --> 00:16:37,080 ファイルを経由して、また、興味深いの作成 魅力的な出力 - 345 00:16:37,080 --> 00:16:39,520 ファイルの種類の観点。 346 00:16:39,520 --> 00:16:43,730 >> 私たちが始めているなぜそれがある ファイルを操作する方法について学習します。 347 00:16:43,730 --> 00:16:47,080 具体的には、どのような 行っており、次のようである。 348 00:16:47,080 --> 00:16:47,680 それは非常に簡単です。 349 00:16:47,680 --> 00:16:51,530 そこにステップの唯一のカップルがあり、 それらは、このコードにはここにリストされています。 350 00:16:51,530 --> 00:16:55,130 だから我々は通過するつもりだ 行することで、このコード行。 351 00:16:55,130 --> 00:16:57,630 >> まず、ハイライト表示を参照してください - 352 00:16:57,630 --> 00:17:01,330 あなたは、ファイルで作業しているとき、 に関係なく、ファイルの種類のことであり、 353 00:17:01,330 --> 00:17:02,670 あなたはそれを開く必要があります。 354 00:17:02,670 --> 00:17:05,130 そして、それはfopenの呼び出しである - 355 00:17:05,130 --> 00:17:05,950 ここ。 356 00:17:05,950 --> 00:17:07,980 あなたは、ファイルの名前が含まれています。 357 00:17:07,980 --> 00:17:11,930 ファイルがディレクトリにない場合、 またはフォルダこのプログラム 358 00:17:11,930 --> 00:17:15,910 生活は、その後も含める必要が そのファイルがある場所へのパス。 359 00:17:15,910 --> 00:17:19,099 >> 我々は、このことを前提とするつもりだ 「TEXT.TXT "と呼ばれるファイル - 360 00:17:19,099 --> 00:17:24,220 簡単なテキスト文書は、 - である このプログラムと同じフォルダです。 361 00:17:24,220 --> 00:17:26,859 だから留めておくべきもう一つのことだ 心 - あなたは、ファイルを開きたい場合に 362 00:17:26,859 --> 00:17:30,050 どこか別の場所には、実際に必要な その場所を含めます。 363 00:17:30,050 --> 00:17:33,520 >> 第二に、あなたがに引数を渡すことができます fopenを、それはあなたが何をしたいです 364 00:17:33,520 --> 00:17:34,620 ファイルと。 365 00:17:34,620 --> 00:17:38,450 その3つの主要な引数があります。 あなたはfopenの合格するつもりだ。 366 00:17:38,450 --> 00:17:40,060 誰が私にそれらの3を与えることができますか? 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ハーシュホーン:申し訳ありません。 372 00:17:50,440 --> 00:17:55,490 あなたが渡すことができ、3つの主要な引数 fopenの第二引数に。 373 00:17:55,490 --> 00:17:57,060 そうだね - ファイル名 最初の引数である。 374 00:17:57,060 --> 00:18:01,620 しかし、fopenの第二引数は 一般的には3つの文字列、および - はい。 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ハーシュホーン:A、あなたがしたい場合は、 既に存在するファイルに追加。 378 00:18:06,840 --> 00:18:07,810 >> 学生5​​:読み取りR。 379 00:18:07,810 --> 00:18:09,930 >> JASONハーシュホーン:R、あなたの場合 ファイルから読みたい。 380 00:18:09,930 --> 00:18:10,670 >> 学生6:書き込み用のW。 381 00:18:10,670 --> 00:18:12,840 >> JASONハーシュホーン:そして、Wであれば、あなた ファイルに書き込む。 382 00:18:12,840 --> 00:18:17,570 この場合、私たちは書いている ファイルに、私たちは、Wがあります。 383 00:18:17,570 --> 00:18:22,360 あなたがそれを開いて、あなたも保存する必要があります どこかにファイル、およびそれがでます 384 00:18:22,360 --> 00:18:26,000 の左側にコード 代入演算子 - 385 00:18:26,000 --> 00:18:31,220 私は、ファイルへのポインタを作成しています この場合、ファイルには、呼び出される。 386 00:18:31,220 --> 00:18:36,070 >> 私たちは何を心配するつもりはありません これは、すべてのファイルのことをされているキャップ。 387 00:18:36,070 --> 00:18:40,600 それは長いです、と言えば十分 0と1のストリーム。 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 この場合、私は単純に印刷しています このファイルに1行。 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 >> 私はには何も持っていない オハイの権利。 407 00:19:50,640 --> 00:19:52,860 私は、三分の一を持っていない printf関数の引数 - 408 00:19:52,860 --> 00:19:57,030 または第二引数はprintfに、 fprintfの第3引数は、私のため 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 >> [タイピングはSOUNDS] 426 00:21:03,162 --> 00:21:04,150 >> JASONハーシュホーン:あなたの操作を行います 質問、AVIがありますか? 427 00:21:04,150 --> 00:21:04,660 >> AVIファイル:いいえ。 428 00:21:04,660 --> 00:21:04,740 >> JASONハーシュホーン:わかりました。 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 [OK]をクリックします。 435 00:21:12,330 --> 00:21:17,620 だから私たちの最初の練習問題は、私たちは、ある の機能を複製する予定 436 00:21:17,620 --> 00:21:22,330 おそらく、コマンドラインツール コピー - 前に使用 - 437 00:21:22,330 --> 00:21:23,500 コピーツール。 438 00:21:23,500 --> 00:21:28,050 あなたは、CPを入力し、それを渡すと2 ご使用の端末への引数は、次の操作を実行でき 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 >> だからもう一度、このスライドのOFF読み出し、私は思います あなたが取るプログラムを作成する 442 00:21:35,830 --> 00:21:38,130 2と2のコマンドラインのみ 引数 - 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ハーシュホーン:最近どうですか。 465 00:22:41,537 --> 00:26:46,047 466 00:26:46,047 --> 00:26:48,043 >> [タイピングはSOUNDS] 467 00:26:48,043 --> 00:26:48,730 >> JASONハーシュホーン:わかりました。 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:ことを確認してください あなたは、2つのファイルを与えられた。 475 00:27:05,740 --> 00:27:06,990 >> JASONハーシュホーン:わかりました。 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ハーシュホーン:我々は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ハーシュホーン:うん。 484 00:27:31,210 --> 00:27:32,710 おそらくない0。 485 00:27:32,710 --> 00:27:34,680 0は、すべてが良かったことを意味するので。 486 00:27:34,680 --> 00:27:35,030 [OK]をクリックします。 487 00:27:35,030 --> 00:27:36,730 だから、最初の行だ 擬似コードの。 488 00:27:36,730 --> 00:27:38,715 誰が擬似コードの2行目を持っている? 489 00:27:38,715 --> 00:27:40,630 >> 学生9:両方のファイルを開きます。? 490 00:27:40,630 --> 00:27:41,880 >> JASONハーシュホーン:両方のファイルを開きます。 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 >> 学生10:どうかを確認し ファイルがnullの場合は? 494 00:27:52,850 --> 00:28:10,906 495 00:28:10,906 --> 00:28:12,580 >> JASONハーシュホーン:確認してください 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 それがNULLである? 499 00:28:18,887 --> 00:28:20,080 >> 学生11:いいえ。 500 00:28:20,080 --> 00:28:21,190 >> JASONハーシュホーン:それがNULLではありません。 501 00:28:21,190 --> 00:28:23,400 つまりNULL終端と呼ばれています。 502 00:28:23,400 --> 00:28:25,580 それは、実際には1リットルでつづら。 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 混乱したものの2。 509 00:28:36,890 --> 00:28:38,830 しかし、これらの2つが 実際には異なる。 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ハーシュホーン:だからオープンセーブ そのファイル内の何か。 515 00:28:54,772 --> 00:28:57,780 そして、あなたはここに戻って行く場合 - 516 00:28:57,780 --> 00:28:59,520 ので、このライン - はfopen - 517 00:28:59,520 --> 00:29:05,300 あなたのアドレスとストアを行います それが動作するかどうか、ファイル内のそのアドレス。 518 00:29:05,300 --> 00:29:07,650 それは動作しない場合は、 NULLが格納されます - 519 00:29:07,650 --> 00:29:08,020 >> 学生12:ああ。 520 00:29:08,020 --> 00:29:08,180 [OK]をクリックします。 521 00:29:08,180 --> 00:29:08,500 あなたが手に入れた。 522 00:29:08,500 --> 00:29:09,050 >> JASONハーシュホーン:ファイルで。 523 00:29:09,050 --> 00:29:11,990 だから、nullをチェックすることはできません 前に、それらを開いた。 524 00:29:11,990 --> 00:29:13,520 NULLは何かがなかったことを意味 正常に動作します。 525 00:29:13,520 --> 00:29:18,030 526 00:29:18,030 --> 00:29:18,740 [OK]をクリックします。 527 00:29:18,740 --> 00:29:22,590 だから、必ずどちらであることを確認してください? 528 00:29:22,590 --> 00:29:23,200 それともですか? 529 00:29:23,200 --> 00:29:23,770 私たちはどう思いますか? 530 00:29:23,770 --> 00:29:24,310 我々はそれで行くよ。 531 00:29:24,310 --> 00:29:24,520 >> 学生13:です。 532 00:29:24,520 --> 00:29:25,020 >> JASONハーシュホーン:ですか? 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ハーシュホーン:わかりました。 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ハーシュホーン:わかりました。 545 00:29:42,290 --> 00:29:46,240 >> 学生14:または私達は関数fscanfを使用するか、 最初のファイルそのような何か? 546 00:29:46,240 --> 00:29:50,650 >> JASONハーシュホーン:だから我々がしたい 最初のファイルから読み込まれ、 - 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ハーシュホーン:私たちは、に書き込み コピー先のファイル、および - 556 00:30:25,620 --> 00:30:26,210 [OK]をクリックします。 557 00:30:26,210 --> 00:30:30,030 私たちは、他に何が不足している? 558 00:30:30,030 --> 00:30:32,460 私に与えられていない他の誰か まだコード行 - 擬似コードの。 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ハーシュホーン:おっと。 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ハーシュホーン:だから与える それ私にはもう一回。 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ハーシュホーン:わかりました。 572 00:30:53,500 --> 00:30:56,060 だから我々は、ラインを読んでいない - ここでバイトを読んでいた - 573 00:30:56,060 --> 00:30:57,590 しかし、あなたは正しいよ。 574 00:30:57,590 --> 00:31:00,040 私たちは、までを読み書きしたい これ以上のバイトはありません。 575 00:31:00,040 --> 00:31:11,430 576 00:31:11,430 --> 00:31:11,735 [OK]をクリックします。 577 00:31:11,735 --> 00:31:16,940 だから、これらは実際にインデントする 少し、彼らはそこの下だから。 578 00:31:16,940 --> 00:31:17,470 右? 579 00:31:17,470 --> 00:31:20,620 我々はバイトの外出まで、我々はするつもりだ ソースファイルからの読み取りおよび書き込み 580 00:31:20,620 --> 00:31:22,160 先のファイルに。 581 00:31:22,160 --> 00:31:24,510 >> そして、最後は何ですか 擬似コードの行? 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ハーシュホーン:その通りです。 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の、そして数分のWE 590 00:31:41,870 --> 00:31:44,626 一緒にこれをコーディングします。 591 00:31:44,626 --> 00:33:55,280 592 00:33:55,280 --> 00:33:56,000 >> [OK]をクリックします。 593 00:33:56,000 --> 00:33:58,290 私たちはグループとして始めましょう。 594 00:33:58,290 --> 00:33:59,940 Nishantは、私は私の新しいファイルがあります。 595 00:33:59,940 --> 00:34:01,130 私はこれを開いた。 596 00:34:01,130 --> 00:34:01,880 無題ドキュメント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ハーシュホーン:わかりました。 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ハーシュホーン:わかりました。 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ハーシュホーン:わかりました。 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ハーシュホーン:どのように それは色の私が得るのですか? 610 00:34:31,830 --> 00:34:34,060 >> [声を挟ん] 611 00:34:34,060 --> 00:34:35,040 >> NISHANT:どのようにそれが着色できますか? 612 00:34:35,040 --> 00:34:38,060 >> JASONハーシュホーン:どのように 私は、カラーコーディングしますか? 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ハーシュホーン:保存します。 617 00:34:39,929 --> 00:34:40,270 はい。 618 00:34:40,270 --> 00:34:41,760 私は、Cとして保存する必要があります。 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ハーシュホーンは:よさそうだ。 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 [OK]をクリックします。 633 00:35:30,870 --> 00:35:33,520 だから私は、私はすべて行くように設定さていると思う。 634 00:35:33,520 --> 00:35:38,003 誰が私のためのコードの最初の行を持っています - またはコードの最初の行、その 635 00:35:38,003 --> 00:35:41,280 それが私たちの最初のを満たすために取る 擬似コード中のコメント? 636 00:35:41,280 --> 00:35:41,985 あなた。 637 00:35:41,985 --> 00:35:48,780 >> 学生18:それはintであるべきではない ARGCしてから、CHAR * ARGV? 638 00:35:48,780 --> 00:35:49,490 >> JASONハーシュホーン:私は思う あなたは正しい。 639 00:35:49,490 --> 00:35:56,270 のは、それがメインの、オープンな括弧をintに変更してみましょう、 int型argcは、コンマ、char *文字ARGV? 640 00:35:56,270 --> 00:35:57,150 そのような? 641 00:35:57,150 --> 00:35:57,410 >> 学生18:ブラケット。 642 00:35:57,410 --> 00:35:58,260 >> JASONハーシュホーン:ブラケット。 643 00:35:58,260 --> 00:35:59,860 開き括弧、閉じ括弧、 近くに親。 644 00:35:59,860 --> 00:36:00,240 完璧。 645 00:36:00,240 --> 00:36:02,160 今私は、コマンドライン引数を取ることができます。 646 00:36:02,160 --> 00:36:02,430 [OK]をクリックします。 647 00:36:02,430 --> 00:36:04,250 我々は2つ​​のファイルを与えていることを確認してください。 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 この1は3に等しくない。 651 00:36:11,060 --> 00:36:14,360 >> JASONハーシュホーン:オープン括弧の場合 ARGCは3に等しくない? 652 00:36:14,360 --> 00:36:16,970 >> 学生18:ええ、あなたが返す 1か何か。 653 00:36:16,970 --> 00:36:17,460 >> JASONハーシュホーン:申し訳ありません。 654 00:36:17,460 --> 00:36:19,120 >> 学生18:リターン1か何か。 655 00:36:19,120 --> 00:36:20,270 >> JASONハーシュホーン:1を返します。 656 00:36:20,270 --> 00:36:22,230 OK? 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-I-L-Eのスターソース。 664 00:36:36,145 --> 00:36:39,390 665 00:36:39,390 --> 00:36:40,920 >> JASONハーシュホーン:私は行くよ 母音を取り出す。 666 00:36:40,920 --> 00:36:41,570 それらはクールだ。 667 00:36:41,570 --> 00:36:42,716 これは、Tumblrのようなものだ。 668 00:36:42,716 --> 00:36:44,610 >> 学生18:関数fopenを等しい - 669 00:36:44,610 --> 00:36:46,612 >> JASONハーシュホーン:fopenのEqualsの? 670 00:36:46,612 --> 00:36:49,870 >> 学生18:オープン括弧、 ARGV、開き括弧。 671 00:36:49,870 --> 00:36:50,055 >> JASONハーシュホーン:待ってください。 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 [OK]をクリックします。 675 00:36:51,456 --> 00:36:53,080 >> 学生18:うん。 676 00:36:53,080 --> 00:36:55,110 ARGVサブ1。 677 00:36:55,110 --> 00:36:55,860 >> JASONハーシュホーン:サブ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 して、コンマ、[開く]をダブル 引用符、R、二重引用符、 682 00:37:06,470 --> 00:37:08,250 閉じる括弧、セミコロン。 683 00:37:08,250 --> 00:37:09,450 >> JASONハーシュホーン:甘い。 684 00:37:09,450 --> 00:37:10,950 そして、何他の1はどうでしょうか? 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ハーシュホーン:OO! 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 した後、Wの代わりにR。 692 00:37:26,720 --> 00:37:27,620 うん。 693 00:37:27,620 --> 00:37:29,630 >> JASONハーシュホーン:今すぐ。 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 >> アーチャー: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ハーシュホーン:何? 705 00:38:07,976 --> 00:38:08,890 >> アーチャー:リターン2? 706 00:38:08,890 --> 00:38:09,760 >> JASONハーシュホーン:リターン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がequalsに等しい NULL、2を返す。 712 00:38:22,340 --> 00:38:23,900 OK? 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ハーシュホーン:ループ。 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 3種類があります。 728 00:39:04,150 --> 00:39:06,530 あなたが手に取れ。 729 00:39:06,530 --> 00:39:08,080 私はそれらのいずれかをお勧めします。 730 00:39:08,080 --> 00:39:08,410 AVI。 731 00:39:08,410 --> 00:39:09,230 あなたはどれが欲しいのですか? 732 00:39:09,230 --> 00:39:09,960 >> AVIファイル:ください。 733 00:39:09,960 --> 00:39:11,460 >> JASONハーシュホーン:ください。 734 00:39:11,460 --> 00:39:15,180 >> AVIファイル:私はゼロに等しいintです 735 00:39:15,180 --> 00:39:17,360 >> JASONハーシュホーン:わかりました。 736 00:39:17,360 --> 00:39:18,570 >> AVIファイル:私はについてはよく分からないこの部分。 737 00:39:18,570 --> 00:39:29,080 しかし、私はサイズよりも小さい スターソースの? 738 00:39:29,080 --> 00:39:31,128 私はそれをよく分からない。 739 00:39:31,128 --> 00:39:32,580 >> JASONハーシュホーン:わかりました。 740 00:39:32,580 --> 00:39:35,870 >> AVIファイル:あなたがしたいので ファイルのサイズは、右? 741 00:39:35,870 --> 00:39:41,090 >> JASONハーシュホーン:だから、これはおそらくないでしょう 私たちに実際の大きさを与える 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 我々は、ファイルの文字*を持っているので。 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 またはNO、ファイルがどのように動作しないということです? 753 00:40:11,130 --> 00:40:14,300 >> JASONハーシュホーン:だから我々は維持することができます * CHARをインクリメント 754 00:40:14,300 --> 00:40:16,340 我々は、NULLを見つけるまで - 755 00:40:16,340 --> 00:40:18,580 >> 学生20:基本的に続ける 文字単位で我々はヒットするまで 756 00:40:18,580 --> 00:40:21,250 ファイルの終わり。 757 00:40:21,250 --> 00:40:21,600 >> JASONハーシュホーン:はい。 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ハーシュホーン:わかりました。 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ハーシュホーン:fscanfを。 776 00:40:49,110 --> 00:40:49,510 [OK]をクリックします。 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ハーシュホーン:わかりました。 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ハーシュホーン:FREAD。 787 00:41:06,070 --> 00:41:07,550 私はのは固執せ考える 今のところ、その1。 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ハーシュホーン:私はここで何を入力することができます 引数の種類を把握する 792 00:41:19,550 --> 00:41:20,950 関数freadがかかる? 793 00:41:20,950 --> 00:41:23,710 >> MULTIPLE学生:男性のfread。 794 00:41:23,710 --> 00:41:24,740 >> JASONハーシュホーン:男性 関数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ハーシュホーン:それが取る 4引数。 799 00:41:32,690 --> 00:41:41,100 これは、サイズ、ポインタを受け取り、その 奇妙である事と、いくつかのファイル。 800 00:41:41,100 --> 00:41:42,000 OK? 801 00:41:42,000 --> 00:41:43,990 のはここそれについて読んでみましょう。 802 00:41:43,990 --> 00:41:49,370 「関数のfreadは、n個のMEMBを読み込む データの要素、各sizeバイト 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 >> そう4引数。 806 00:41:57,960 --> 00:42:04,510 なぜ私はこれをコピーしないでください、 そして右ここに貼り付けます。 807 00:42:04,510 --> 00:42:10,060 808 00:42:10,060 --> 00:42:10,770 [OK]をクリックします。 809 00:42:10,770 --> 00:42:13,673 だから、誰が記入し始めることができます 私のためにこれらの引数? 810 00:42:13,673 --> 00:42:15,840 AVI。 811 00:42:15,840 --> 00:42:17,720 >> 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ハーシュホーン:だから私は停止するつもりだ そこに、それは正しくないだから。 817 00:42:28,500 --> 00:42:32,590 818 00:42:32,590 --> 00:42:34,710 あなたは、srcで正しいですが、 SRCどこに行くべき? 819 00:42:34,710 --> 00:42:35,960 >> [声を挟ん] 820 00:42:35,960 --> 00:42:38,976 821 00:42:38,976 --> 00:42:41,610 >> JASONハーシュホーン:それが必要 こっちに行く。 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 OK? 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:1バイトずつ。 830 00:43:04,370 --> 00:43:05,340 >> JASONハーシュホーン:1バイト。 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ハーシュホーン:ワン。 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ハーシュホーン:一つのこと。 840 00:43:24,270 --> 00:43:28,540 私は大きさの一つのことを読みたい 1度に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ハーシュホーン:だから私は置くことができない それまっすぐ目的地へ。 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ハーシュホーン:わかりました。 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ハーシュホーン:わかりました。 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ハーシュホーン:わかりました。 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 そして、私は1バイトを読んでいる場合には、 良い場所にする場所 857 00:44:02,520 --> 00:44:03,850 1バイトを保存する? 858 00:44:03,850 --> 00:44:04,660 >> 学生29:配列? 859 00:44:04,660 --> 00:44:05,770 >> JASONハーシュホーン:配列。 860 00:44:05,770 --> 00:44:07,730 [OK]をクリックします。 861 00:44:07,730 --> 00:44:14,040 との何か他のものです ただ1バイトのサイズは? 862 00:44:14,040 --> 00:44:16,980 863 00:44:16,980 --> 00:44:18,060 >> 学生30:文字*? 864 00:44:18,060 --> 00:44:18,530 >> 学生29:うん。 865 00:44:18,530 --> 00:44:19,880 >> JASONハーシュホーンます。char * 1バイトではありません。 866 00:44:19,880 --> 00:44:20,440 >> 学生29:CHAR。 867 00:44:20,440 --> 00:44:21,810 >> JASONハーシュホーン:charが1バイトである。 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 だから、1を格納 - 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ハーシュホーン:私ができる それは* char型が作成されました。 884 00:44:58,380 --> 00:45:00,216 [OK]をクリックします。 885 00:45:00,216 --> 00:45:03,131 私は何ができる別のものは何ですか? 886 00:45:03,131 --> 00:45:04,050 またはのは、この1で行きましょう。 887 00:45:04,050 --> 00:45:05,740 CHAR *バッファなので、どのような 私はここに入れますか? 888 00:45:05,740 --> 00:45:08,290 889 00:45:08,290 --> 00:45:09,310 >> 学生31:バッファ。 890 00:45:09,310 --> 00:45:10,560 >> JASONハーシュホーン:バッファ。 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 その場所で、我々は入れている 私たちが読んだものの1バイト。 894 00:45:19,480 --> 00:45:19,980 うん。 895 00:45:19,980 --> 00:45:20,700 AVI。 896 00:45:20,700 --> 00:45:21,230 >> AVIファイル:ちょうど簡単な質問。 897 00:45:21,230 --> 00:45:24,440 あなたはmalloc関数バッファしますか? 898 00:45:24,440 --> 00:45:25,930 >> JASONハーシュホーン:CAN その質問に答える? 899 00:45:25,930 --> 00:45:30,210 >> 学生32:まあ、それは本当にない 今、何をポイントし、そのように - 900 00:45:30,210 --> 00:45:32,610 >> JASONハーシュホーン:でもない 我々はそれをを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ハーシュホーン:私たちを行います それををmallocする必要がありますか? 904 00:45:38,350 --> 00:45:40,580 >> 学生33:あなたがするつもりなら ループの外でそれを使用します。 905 00:45:40,580 --> 00:45:42,524 >> JASONハーシュホーン:私たちがしようとしている ループの外でそれを使うのか? 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ハーシュホーン:だから私は、我々が持っていると思います 我々はしているここにいくつかの擬似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ハーシュホーン:いいえ、そうではありません 何にも初期化されます。 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 そして、私はそのままでOKだと思います。 925 00:46:19,360 --> 00:46:24,350 926 00:46:24,350 --> 00:46:25,790 [OK]をクリックします。 927 00:46:25,790 --> 00:46:27,190 私たちは、関数freadラインを持っている。 928 00:46:27,190 --> 00:46:28,490 の次の行をやってみましょう。 929 00:46:28,490 --> 00:46:32,984 >> 我々は、ファイルに書き込みたい場合は、何ですか これを行うために使用するのは良い機能? 930 00:46:32,984 --> 00:46:33,770 >> 学生37:fwriteの? 931 00:46:33,770 --> 00:46:35,140 >> 学生38:fprintfの? 932 00:46:35,140 --> 00:46:36,010 >> JASONハーシュホーン:fprintfのは1です。 933 00:46:36,010 --> 00:46:37,260 別の1は何ですか? 934 00:46:37,260 --> 00:46:37,680 >> 学生39:fwriteの。 935 00:46:37,680 --> 00:46:38,510 >> JASONハーシュホーン: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 それは同様に4つの引数を取ります。 940 00:46:53,950 --> 00:46:57,570 Nishantは、あなたが与えることができます 私の引数? 941 00:46:57,570 --> 00:47:00,570 >> NISHANT:最初の1の航 ただバッファされるように。 942 00:47:00,570 --> 00:47:02,210 >> JASONハーシュホーン:わかりました。 943 00:47:02,210 --> 00:47:06,752 >> NISHANT:第1の ちょうど1になるだろう。 944 00:47:06,752 --> 00:47:09,510 3つ目は、1になるだろう。 945 00:47:09,510 --> 00:47:11,470 そして第四の1はDSTになるだろう。 946 00:47:11,470 --> 00:47:18,010 947 00:47:18,010 --> 00:47:19,550 >> JASONハーシュホーン:誰もが持っていますか その行についてのご質問? 948 00:47:19,550 --> 00:47:28,370 949 00:47:28,370 --> 00:47:29,130 それはよさそうだ。 950 00:47:29,130 --> 00:47:29,590 [OK]をクリックします。 951 00:47:29,590 --> 00:47:34,250 だから今、私たちがしている一つのことのように見える 不足している - 実際には、のは書いてみましょう 952 00:47:34,250 --> 00:47:35,090 この最後の行。 953 00:47:35,090 --> 00:47:36,300 ファイルを閉じる。 954 00:47:36,300 --> 00:47:38,880 誰が書き込みを私たちに仕上げることができます これらの最後の2行? 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 >> LUCY:ルーシー。 958 00:47:40,580 --> 00:47:41,580 >> JASONハーシュホーン:ルーシー。 959 00:47:41,580 --> 00:47:47,560 >> LUCY:FCLOSE srcとし、 fcloseを目的地。 960 00:47:47,560 --> 00:47:52,430 >> JASONハーシュホーン: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 >> LUCY:オープン括弧、DST して、セミコロン。 965 00:48:01,710 --> 00:48:02,520 >> JASONハーシュホーン:今すぐ。 966 00:48:02,520 --> 00:48:04,338 そして、私は最後に何を含めるべきか? 967 00:48:04,338 --> 00:48:05,210 >> LUCY:0を返します。 968 00:48:05,210 --> 00:48:05,570 >> JASONハーシュホーン: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 >> MULTIPLE学生:いいえ。 974 00:48:16,240 --> 00:48:16,430 >> JASONハーシュホーン:いいえ。 975 00:48:16,430 --> 00:48:18,090 メインは、自動的にそれをしない あなたが最後に到達した場合。 976 00:48:18,090 --> 00:48:20,580 しかし、私はそれがすてきだと思う 明示的に含まれています。 977 00:48:20,580 --> 00:48:23,860 我々は他を返している場合は特に プログラム全体の事。 978 00:48:23,860 --> 00:48:24,810 [OK]をクリックします。 979 00:48:24,810 --> 00:48:26,230 これは我々が欠けているものである - 980 00:48:26,230 --> 00:48:28,520 何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 >> LUCY:ファイルの終わり。 987 00:48:43,240 --> 00:48:44,990 >> JASONハーシュホーン:ファイルの終わり。 988 00:48:44,990 --> 00:48:49,280 だから、ファイルの終わりとはどういう意味ですか? 989 00:48:49,280 --> 00:48:50,955 >> LUCY:あなたが到達すると ファイルの最後に、停止します。 990 00:48:50,955 --> 00:48:51,240 >> JASONハーシュホーン:わかりました。 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ハーシュホーン:だからあなたが考える バッファが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ハーシュホーン:わかりました。 1000 00:49:13,980 --> 00:49:15,550 だから、関数freadを考えている - 1001 00:49:15,550 --> 00:49:19,000 私達はの最後に到達したら ファイル、どのような関数freadは何をするつもりですか? 1002 00:49:19,000 --> 00:49:21,230 私はそれが問題だと思う 我々は把握する必要があります。 1003 00:49:21,230 --> 00:49:21,960 関数freadは何をしますか? 1004 00:49:21,960 --> 00:49:25,640 それは、バッファにNULLを入れてないか、 それは何か他のものをするのでしょうか? 1005 00:49:25,640 --> 00:49:27,510 我々はそれが何をどのように把握することができますか? 1006 00:49:27,510 --> 00:49:28,190 >> 学生42:男。 1007 00:49:28,190 --> 00:49:28,810 >> JASONハーシュホーン:男。 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ハーシュホーン:何? 1018 00:50:04,540 --> 00:50:05,300 >> 学生43:ゼロ? 1019 00:50:05,300 --> 00:50:05,690 >> JASONハーシュホーン:ゼロ。 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 今のところ - 1。 1028 00:50:28,190 --> 00:50:28,920 >> JASONハーシュホーン:わかりました。 1029 00:50:28,920 --> 00:50:38,050 >> AVIファイル:それから、あなたは、IFを置くことができます 右のfreadが言った後にif文 1030 00:50:38,050 --> 00:50:42,600 freadは、ゼロに等しい - 1031 00:50:42,600 --> 00:50:43,850 NO。 1032 00:50:43,850 --> 00:50:46,002 1033 00:50:46,002 --> 00:50:47,252 >> JASONハーシュホーン:誰 アビを助けることができる? 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ハーシュホーン:私たちだけ それの上を越えて行った。 1037 00:50:54,060 --> 00:50:55,450 >> AVIファイル:どのようにそれを表現するのですか? 1038 00:50:55,450 --> 00:50:57,190 >> JASONハーシュホーン:だからそれが返す - レッツ ここまで見て - それは返す 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それは一つのこと読めば - 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ハーシュホーン:だから、提案する そこにこれをやって? 1050 00:51:26,510 --> 00:51:27,600 >> [声を挟ん] 1051 00:51:27,600 --> 00:51:29,520 >> JASONハーシュホーン:待って。 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ハーシュホーン:私たちはすべき また、ここではこれを移動させる。 1057 00:51:38,110 --> 00:51:41,700 >> 学生45:でもないことを絶えず 前方に移動しますか? 1058 00:51:41,700 --> 00:51:42,950 >> [声を挟ん] 1059 00:51:42,950 --> 00:51:46,540 1060 00:51:46,540 --> 00:51:47,470 >> JASONハーシュホーン:わかりました。 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ハーシュホーン:良い質問。 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ハーシュホーン:私たちは、物事を見てきました その前に、我々が持っている場所のような 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 >> 我々は理解できた1の方法は何ですか それは我々が望むものだかどうか? 1085 00:52:52,204 --> 00:52:53,470 >> MULTIPLE学生は:それを実行する? 1086 00:52:53,470 --> 00:52:54,460 >> JASONハーシュホーン:我々はそれを実行することができます。 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 私たちは私たちの中で1バイトを持っていると言う ファイル、我々はここに買ってあげる、 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は、1バイトを返し、 バッファに格納します。 1093 00:53:07,780 --> 00:53:11,290 そして、これは1に評価され、 彼は1が返された後、右に。 1094 00:53:11,290 --> 00:53:12,640 >> 1 WHILEそう。 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ハーシュホーン:はい。 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 私たちは、ファイルの末尾から読んで、 我々はそれだけで1バイトを持っていたので。 1107 00:53:30,980 --> 00:53:34,270 >> FREADは店舗、0を返します。 バッファ内の何か。 1108 00:53:34,270 --> 00:53:35,890 私は正直に知らないこと これは、バッファに格納します。 1109 00:53:35,890 --> 00:53:38,380 我々は、おそらく調べることができ それが何をするかを確認します。 1110 00:53:38,380 --> 00:53:40,130 私は正直わからない。 1111 00:53:40,130 --> 00:53:43,090 私たちは、何を気に誰が、知らない それは、バッファに格納します? 1112 00:53:43,090 --> 00:53:44,010 しかし、それは0を返しません。 1113 00:53:44,010 --> 00:53:45,440 と0を実行しながらのだろうか? 1114 00:53:45,440 --> 00:53:49,950 1115 00:53:49,950 --> 00:53:51,180 >> 0は実行されませんが。 1116 00:53:51,180 --> 00:53:54,030 それでは私たちはここで下に移動します。 1117 00:53:54,030 --> 00:53:58,870 それでは、挙手を得ること、この場合 我々は実行する必要があるコードがあるか、我々の場合 1118 00:53:58,870 --> 00:54:00,140 最初の変更を行う必要があります。 1119 00:54:00,140 --> 00:54:02,180 あなたが考えるのであれば - あなたが投票しなければならない。 1120 00:54:02,180 --> 00:54:06,885 あなたは私たちがこのコードを実行すべきだと思う場合は そのまま、手を挙げてください。 1121 00:54:06,885 --> 00:54:12,440 1122 00:54:12,440 --> 00:54:13,400 >> [OK]をクリックします。 1123 00:54:13,400 --> 00:54:14,315 1があります - 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ハーシュホーン:良い質問。 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 >> MULTIPLE学生:はい。 1134 00:54:35,230 --> 00:54:35,580 >> JASONハーシュホーン:はい。 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ハーシュホーン:私たちを行います 空きバッファする必要がありますか? 1141 00:54:51,770 --> 00:54:53,860 >> 学生49:ええ、私たちはmalloc関数をしない場合。 1142 00:54:53,860 --> 00:54:55,750 >> JASONハーシュホーン:私たちを行います 空きバッファする必要がありますか? 1143 00:54:55,750 --> 00:54:57,160 我々はしないでください。 1144 00:54:57,160 --> 00:55:01,280 この場合も、ローカル変数であり、 私たちはそれを解放する必要はありません。 1145 00:55:01,280 --> 00:55:02,170 [OK]をクリックします。 1146 00:55:02,170 --> 00:55:03,480 何が起こるか見てみましょう。 1147 00:55:03,480 --> 00:55:17,290 1148 00:55:17,290 --> 00:55:18,220 だから、初期化されていないです。 1149 00:55:18,220 --> 00:55:20,830 それはどのようなものであったこと マーカスは、先に提案した。 1150 00:55:20,830 --> 00:55:25,340 だから我々は、そのエラー、変数のバッファを持っている ここで使用したときに初期化されません。 1151 00:55:25,340 --> 00:55:26,590 >> 我々はこれをどのように解決することができますか? 1152 00:55:26,590 --> 00:55:29,460 1153 00:55:29,460 --> 00:55:30,960 >> 学生5​​0:それをmalloc関数? 1154 00:55:30,960 --> 00:55:31,770 >> 学生5​​1:NULL等しい? 1155 00:55:31,770 --> 00:55:33,000 >> 学生5​​2:bufferがNULLに等しいと言う。 1156 00:55:33,000 --> 00:55:34,250 >> JASONハーシュホーン:わかりました。 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 >> 学生5​​3:あなたは、ドットを行うことができます CPを大幅に削減する、test.txtという。 1167 00:56:22,230 --> 00:56:25,140 そして、あなたは別のファイルに名前を付けることができます それが中に格納します。 1168 00:56:25,140 --> 00:56:25,510 >> JASONハーシュホーン:わかりました。 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 >> 学生5​​4:GDB。 1179 00:56:45,990 --> 00:56:47,240 >> JASONハーシュホーン: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 >> 学生5​​5:R. 1186 00:57:02,730 --> 00:57:08,910 >> JASONハーシュホーン:その後、R.と何? 1187 00:57:08,910 --> 00:57:09,400 >> 学生5​​5:引数? 1188 00:57:09,400 --> 00:57:10,650 >> JASONハーシュホーン:その後 コマンドライン引数。 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は私のSEG違反の原因を知っている それがあったため、 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が起こっていたし、私たちはいた いくつかのWHILEチェックをやって。 1202 00:57:40,610 --> 00:57:44,820 私はしばらくことを賭けることをいとわよ チェックは私のワンセグ障害が発生していませんでした。 1203 00:57:44,820 --> 00:57:46,950 ほとんどの場合、関数freadだった 私のワンセグ障害の原因となる。 1204 00:57:46,950 --> 00:57:49,260 私もここで何か、memcopyを参照してください。 1205 00:57:49,260 --> 00:57:50,500 >> メモリコピー。 1206 00:57:50,500 --> 00:57:53,820 からメモリを移動するように聞こえる 他の場所に。 1207 00:57:53,820 --> 00:57:56,890 起こるか何かのように聞こえる freadは、おそらくいくつかのメモリ内 1208 00:57:56,890 --> 00:57:58,910 ここには、ここから移動する。 1209 00:57:58,910 --> 00:58:01,740 1210 00:58:01,740 --> 00:58:03,860 それではもう一度見ていきましょう。 1211 00:58:03,860 --> 00:58:06,900 どのように私はそれを最初からやり直すか し、再度実行して? 1212 00:58:06,900 --> 00:58:08,092 うん。 1213 00:58:08,092 --> 00:58:15,140 >> 学生5​​6:あなたは配置する必要がありますか バッファの前にアンパサンド? 1214 00:58:15,140 --> 00:58:17,800 >> JASONハーシュホーン:だから前にアンパサンド バッファは私のアドレスを与えるだろう 1215 00:58:17,800 --> 00:58:22,330 * CHARであるバッファ。 1216 00:58:22,330 --> 00:58:25,250 のは、この1のより多くの時間を実行してみましょう。 1217 00:58:25,250 --> 00:58:28,248 どのように私はそれをもう一回実行するのですか? 1218 00:58:28,248 --> 00:58:29,210 >> 学生5​​7:ちょうどすることができ タイプは、再度実行? 1219 00:58:29,210 --> 00:58:32,050 >> JASONハーシュホーン:ちょうどもう一度実行]を入力します。 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 >> 学生5​​8:0x0の。 1233 00:59:12,550 --> 00:59:13,400 >> JASONハーシュホーン:右。 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 >> 学生5​​9:あなたが持っていない スターのバッファを置くか? 1248 00:59:48,410 --> 00:59:49,180 またはNO? 1249 00:59:49,180 --> 00:59:50,050 関数freadのために? 1250 00:59:50,050 --> 00:59:51,450 >> JASONハーシュホーン:だからのfread ポインタを取ります。 1251 00:59:51,450 --> 00:59:54,920 1252 00:59:54,920 --> 00:59:55,900 だから、バッファに渡します。 1253 00:59:55,900 --> 00:59:58,980 そしてそれは、デリファレンスをします どこかのfreadの内側に。 1254 00:59:58,980 --> 01:00:00,700 しかし、再び、我々が見た、それはポインタを取ります。 1255 01:00:00,700 --> 01:00:02,560 我々はそれを星のバッファを渡す必要はありません。 1256 01:00:02,560 --> 01:00:05,350 つまり、渡すことになる それここにあるものは何でも。 1257 01:00:05,350 --> 01:00:07,980 そして、それはおそらく、間違いを与えるだろう 我々はそれを逆参照しているので。 1258 01:00:07,980 --> 01:00:08,150 >> 右? 1259 01:00:08,150 --> 01:00:10,690 我々はこのポインタを参照を解除すると、とき 我々はこの場所にアクセスしようとすると、 1260 01:00:10,690 --> 01:00:13,140 我々は、エラーを取得している - 私たちのセグメンテーションフォールト。 1261 01:00:13,140 --> 01:00:15,800 そう - 1262 01:00:15,800 --> 01:00:16,690 おっと。 1263 01:00:16,690 --> 01:00:19,090 私たちは、GDBの外に終了するつもりだ。 1264 01:00:19,090 --> 01:00:20,160 ラインナップ - 1265 01:00:20,160 --> 01:00:22,990 我々の問題は - 右です ここでこの行の。 1266 01:00:22,990 --> 01:00:26,410 ので、それが問題だ このラインの。 1267 01:00:26,410 --> 01:00:31,780 >> どのように我々は、そのボックスを作成することができます fread関数にアクセスできます。 1268 01:00:31,780 --> 01:00:31,980 右? 1269 01:00:31,980 --> 01:00:35,190 私たちは、自分のボックスを作成する必要があります 大バイト、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 CHARバッファ等号をただやる 文字。 1277 01:00:51,640 --> 01:00:53,795 そして、あなたがそこにバッファリングしているとき - 1278 01:00:53,795 --> 01:00:54,110 >> JASONハーシュホーン:待ってください。 1279 01:00:54,110 --> 01:00:55,110 CHARバッファ? 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ハーシュホーン:わかりました。 1285 01:01:01,460 --> 01:01:02,420 だから、私に1を与える。 1286 01:01:02,420 --> 01:01:03,170 >> 学生60:Aか何かのように。 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ハーシュホーン:わかりました。 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ハーシュホーン:すべての権利。 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ハーシュホーン:何 人々は、と思いますか? 1299 01:01:25,916 --> 01:01:27,770 >> 学生62:これは、畳み込んだ。 1300 01:01:27,770 --> 01:01:28,460 >> JASONハーシュホーン:わかりました。 1301 01:01:28,460 --> 01:01:29,760 のはそれを描いてみ。 1302 01:01:29,760 --> 01:01:35,720 このとき、私はこれを描くつもりだ ここでスタック上の赤、そして、私たち 1303 01:01:35,720 --> 01:01:36,410 があります - 1304 01:01:36,410 --> 01:01:36,822 OOH! 1305 01:01:36,822 --> 01:01:38,060 申し訳ありません。 1306 01:01:38,060 --> 01:01:45,930 だから、今回はと呼ばれるものを持っている バッファ、および、スタック上にある。 1307 01:01:45,930 --> 01:01:48,430 正しいですか? 1308 01:01:48,430 --> 01:01:51,520 そして、我々は最初に、その中に保存している。 1309 01:01:51,520 --> 01:01:53,830 >> その後、我々はfread関数への私達のコールを持っている。 1310 01:01:53,830 --> 01:02:01,300 どのような関数freadはそれからバイトを取りますん 私たちのファイルをどこかにそれを置く。 1311 01:02:01,300 --> 01:02:04,570 それはどのようなに入れます 事はを指しています。 1312 01:02:04,570 --> 01:02:09,130 まあ、我々はこのアドレスを持っていた前に - 1313 01:02:09,130 --> 01:02:10,250 0x0の。 1314 01:02:10,250 --> 01:02:13,349 今、私たちはどのようなアドレスを持っていますか? 1315 01:02:13,349 --> 01:02:14,650 >> 学生63:ものは何でも アドレスバッファです。 1316 01:02:14,650 --> 01:02:15,970 >> JASONハーシュホーン:ものは何でも アドレスバッファです。 1317 01:02:15,970 --> 01:02:22,370 それはおそらくになるだろう そのような何か。 1318 01:02:22,370 --> 01:02:26,950 おそらくBを開始する予定と その後、F、および他の6を持っている 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 >> そして、我々は我々の1を置くつもりだ そのアドレスのバイトの事。 1324 01:02:34,790 --> 01:02:38,470 だから我々は我々の1を置くつもりだ ここで内部のバイトの事。 1325 01:02:38,470 --> 01:02:40,800 そして、我々からの書き込みしようとしている ここで、これまでの内部なのです。 1326 01:02:40,800 --> 01:02:43,425 1327 01:02:43,425 --> 01:02:45,380 誰もが疑問を持っていますか それはどうでしょうか? 1328 01:02:45,380 --> 01:02:50,990 1329 01:02:50,990 --> 01:02:54,690 誰がこのコードは動作します考えている? 1330 01:02:54,690 --> 01:02:56,020 >> あなたが考える場合は、手を挙げ このコードは動作します。 1331 01:02:56,020 --> 01:02:57,270 あなたが姿勢を取らなければならない。 1332 01:02:57,270 --> 01:03:00,670 1333 01:03:00,670 --> 01:03:02,500 そして、誰が、このコードは動作しませんと考えている? 1334 01:03:02,500 --> 01:03:04,610 手を上げます。 1335 01:03:04,610 --> 01:03:06,750 他のみんなは、あるべき 手を上げ。 1336 01:03:06,750 --> 01:03:07,670 [OK]をクリックします。 1337 01:03:07,670 --> 01:03:09,390 マイケル、あなたはどこに立っている? 1338 01:03:09,390 --> 01:03:10,680 >> マイケル:私が決定することはできません。 1339 01:03:10,680 --> 01:03:12,070 中央での一種。 1340 01:03:12,070 --> 01:03:12,736 >> JASONハーシュホーン:あなたがしている 真ん中に。 1341 01:03:12,736 --> 01:03:13,092 1を選択してください。 1342 01:03:13,092 --> 01:03:14,400 >> マイケル:私は信仰を持っています そしてそれが動作すると言う。 1343 01:03:14,400 --> 01:03:14,660 >> JASONハーシュホーン:わかりました。 1344 01:03:14,660 --> 01:03:16,047 あなたが信仰を持っているし、それが動作すると言うでしょう? 1345 01:03:16,047 --> 01:03:26,490 1346 01:03:26,490 --> 01:03:27,020 何が起こったのか? 1347 01:03:27,020 --> 01:03:28,270 >> [声を挟ん] 1348 01:03:28,270 --> 01:03:35,170 1349 01:03:35,170 --> 01:03:35,950 >> JASONハーシュホーン:いいえワンセグ障害。 1350 01:03:35,950 --> 01:03:40,320 どのようにしているかどうかを確認することができます 二つのことが等しい? 1351 01:03:40,320 --> 01:03:42,060 2つのファイルは同じである。 1352 01:03:42,060 --> 01:03:43,300 >> 学生64:デフ。 1353 01:03:43,300 --> 01:03:45,490 >> JASONハーシュホーン:デフ。 1354 01:03:45,490 --> 01:03:51,630 間の違いのための差分をチェック 2つのファイルで、それを返した場合 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していたかもしれない。 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 >> 私は、他の2つの意見があるだろう。 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ハーシュホーン:そのような? 1383 01:05:11,080 --> 01:05:13,130 >> 学生65:文字のサイズ。 1384 01:05:13,130 --> 01:05:13,820 >> JASONハーシュホーン:文字のサイズ。 1385 01:05:13,820 --> 01:05:15,290 ええ、バイトはタイプではありません。 1386 01:05:15,290 --> 01:05:16,320 char型の作品のサイズなので。 1387 01:05:16,320 --> 01:05:30,270 私たちは、の一番上に、可能性がある 我々のコード、#はそれを定義した。 1388 01:05:30,270 --> 01:05:33,410 何かバイトと呼ばれる それは本当にシャア。 1389 01:05:33,410 --> 01:05:37,675 実際に、より良いアプローチ このだったかもしれない - 1390 01:05:37,675 --> 01:05:39,391 UINT。 1391 01:05:39,391 --> 01:05:40,780 誰もがそれが何であるか知っていますか? 1392 01:05:40,780 --> 01:05:44,388 1393 01:05:44,388 --> 01:05:44,840 >> 申し訳ありません。 1394 01:05:44,840 --> 01:05:46,090 私は後方にそれを持っている。 1395 01:05:46,090 --> 01:05:51,620 1396 01:05:51,620 --> 01:05:52,200 いや、待ってください。 1397 01:05:52,200 --> 01:05:53,450 それはどの道を行くのですか? 1398 01:05:53,450 --> 01:05:58,071 1399 01:05:58,071 --> 01:05:59,660 誰もがそれが何であるか知っていますか? 1400 01:05:59,660 --> 01:06:00,950 うん。 1401 01:06:00,950 --> 01:06:05,650 >> 学生67:標準化を支援することになって そのシステムの事間で 1402 01:06:05,650 --> 01:06:08,760 持っている - の符号なし整数のよう 8バイトを持っている? 1403 01:06:08,760 --> 01:06:11,785 >> JASONハーシュホーン:それです。 まったく正しい。 1404 01:06:11,785 --> 01:06:14,310 異なるマシン上で、 文字のサイズ - 1405 01:06:14,310 --> 01:06:15,180 ではない通常の文字。 1406 01:06:15,180 --> 01:06:16,100 文字は通常1バイトである。 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 常に1バイト。 1411 01:06:27,210 --> 01:06:29,580 >> そして、私はそれを含める必要が 標準INTヘッダファイル。 1412 01:06:29,580 --> 01:06:35,040 だから今、これはおそらくあったであろう このコードを書くための最良の方法。 1413 01:06:35,040 --> 01:06:40,160 1414 01:06:40,160 --> 01:06:41,450 だから私は、マジックナンバーを取り除く。 1415 01:06:41,450 --> 01:06:44,690 そして私はまた、より論理的を持っている バッファのタイプ。 1416 01:06:44,690 --> 01:06:49,450 それは、それがバイトで、単に文字ではありません これは、我々はそれがために期待するものである。 1417 01:06:49,450 --> 01:06:53,400 >> そしてここに、私たちは実際にしました もう少し堅調​​に推移して。 1418 01:06:53,400 --> 01:06:55,190 我々は、これCHAR、それを呼び出していないしている - 1419 01:06:55,190 --> 01:06:58,630 多分、誰が知っている - 異なる可能性があります 異なるマシン上のサイズ。 1420 01:06:58,630 --> 01:07:02,025 私たちは、実際に、これは正確に言っている 1バイト、常に、何があっ。 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ハーシュホーン:何? 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ハーシュホーン:だからそれは#定義されていません。 1435 01:07:41,370 --> 01:07:45,490 実際に、この場合には、私は今 typedefを使用する予定。 1436 01:07:45,490 --> 01:07:48,590 私たちは、それを使用しているので、 1場所を入力します。 1437 01:07:48,590 --> 01:07:51,990 したがって、この場合には、実際に必要に 我々は新しいタイプの印刷をしているようtypedefを 1438 01:07:51,990 --> 01:07:54,490 バイト、それは、本質的に、これである。 1439 01:07:54,490 --> 01:07:56,590 これは、#defineをより少し違います。 1440 01:07:56,590 --> 01:08:02,740 >> そして今、私たちのコードが完璧に動作します。 1441 01:08:02,740 --> 01:08:05,230 だから、もう一度、第何かを取る定義、 どこでもそれを置き換え 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 これは、1バイト長です。 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 私は一緒それなのに中を歩くしたい、 そして、我々は簡単に説明します 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 しかし、これは、それなのにある基盤を形成している の最初の2つの部分のために 1463 01:09:16,990 --> 01:09:22,340 whodunit.cに設定された問題で、どの あなたが書く必要があり、かつすか。 1464 01:09:22,340 --> 01:09:27,050 3番目と最後で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 しかし、それなのにがための基盤であるため、 我々は行っている最初の2つの部分、 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 まず、確認しています 我々は3つの引数を取得します。 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 メタデータの2枚 - ファイル ヘッダとInfoヘッダー。 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 >> 次に、我々はそれらを書いている outファイルに。 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 だからもう一度、ASが特定のものである ビットマップファイルは、いくつかの行は、 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 それは、3を通じて包括的0になるでしょう。 1511 01:11:36,510 --> 01:11:38,930 しかし、あなたはのサイズを変更するとき 何か、埋め込みが変更。 1512 01:11:38,930 --> 01:11:47,100 >> 私は、その行に1画素を持っている場合は、私 、パディングの3バイトを必要とするので、 1513 01:11:47,100 --> 01:11:51,190 各行には、4の倍数でなければなら ビットマップファイルにバイト長。 1514 01:11:51,190 --> 01:11:56,120 しかし、私はそれを倍にした場合、1画素から行く つの画素に、それぞれが、 1515 01:11:56,120 --> 01:11:59,510 それでは言わせて、バイトが、私は必要とされている 作るためのパディングの2バイト 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ハーシュホーン:だから我々は何。 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:それらの2の順 ラインが​​右、問題ではない? 1558 01:13:44,550 --> 01:13:46,160 あなたが処理しているので、 異なるファイル。 1559 01:13:46,160 --> 01:13:46,620 >> JASONハーシュホーン:その通りです。 1560 01:13:46,620 --> 01:13:48,220 これら2行の順序 関係ありません。 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ハーシュホーン:わかりました。 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ハーシュホーン:わかりました。 1590 01:14:59,870 --> 01:15:03,070 私に1道を譲る。 1591 01:15:03,070 --> 01:15:08,240 >> 学生76:すべての赤を取り出し、 その後、青と緑を強調。 1592 01:15:08,240 --> 01:15:10,010 >> JASONハーシュホーン:わかりました。 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 >> MULTIPLE学生:83。 1603 01:15:35,950 --> 01:15:37,320 >> JASONハーシュホーン: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ハーシュホーン: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 >> 【分類雑音] 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ハーシュホーン:それは正しいですか? 1625 01:16:48,856 --> 01:16:53,040 >> 学生79:それは、トリプルでなければなりません 代わりRGBTRIPLEドットのドット、? 1626 01:16:53,040 --> 01:16:54,120 >> JASONハーシュホーン:トリプル。 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 我々はその上に行くために3分している。 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ハーシュホーン:だから我々が与えられている場合はA ピクセル、私たちはすることでサイズを変更したい 1648 01:17:58,475 --> 01:18:03,460 2倍、それは今である必要がある 水平方向にサイズ変更やサイズ変更 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ハーシュホーン:待ってください。 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ハーシュホーン:だけ あなたの手を上げた。 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 だから我々は我々がしたい、1ピクセルを持っている それを複製し、水平方向にも 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ハーシュホーン:それでは、考えてみましょう 行として、各ファイルの。 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 これは我々のファイルであり、我々はそれを持っている場合 そこに1ピクセル、そして我々はそれを配置する 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