1 00:00:00,000 --> 00:00:07,810 2 00:00:07,810 --> 00:00:09,840 >> JASON HIRSCHHORN: Willkommen, alle, bis Woche 6. 3 00:00:09,840 --> 00:00:14,790 Ich bin froh, euch alle am Leben zu sehen und gut Quiz nach 0, da ich weiß, dass 4 00:00:14,790 --> 00:00:15,810 war ein bisschen rau. 5 00:00:15,810 --> 00:00:18,370 Aber zum Glück, können Sie alle tat unglaublich gut. 6 00:00:18,370 --> 00:00:21,680 Und damit ist wunderbar. 7 00:00:21,680 --> 00:00:25,840 Wenn Sie in meiner Abteilung, haben mir am meisten gegeben der Sie wieder Ihre Quiz bereits. 8 00:00:25,840 --> 00:00:28,050 >> Ein paar von euch, ich treffe nach dem Unterricht. 9 00:00:28,050 --> 00:00:32,360 Und wenn Sie eine Erweiterung von Studierenden und sind Sie Ihr Quiz nicht erhalten haben zurück 10 00:00:32,360 --> 00:00:35,490 noch wird Ihre TF wahrscheinlich daran zu arbeiten und Gehalt, und wird es wieder 11 00:00:35,490 --> 00:00:36,490 Ihnen in Kürze. 12 00:00:36,490 --> 00:00:39,650 Also meine Studenten, die Verlängerung gerade jetzt - hoffentlich leben - 13 00:00:39,650 --> 00:00:42,880 Ich werde Ihre Quiz bekommen kurz als gut. 14 00:00:42,880 --> 00:00:45,670 >> Unsere Agenda für heute ist wie folgt. 15 00:00:45,670 --> 00:00:50,170 Zuerst werden wir über einige gehen Ressourcen, die CS50 bietet für Sie. 16 00:00:50,170 --> 00:00:54,590 Wir werden neben Quiz über 0 zu gehen, und Ich werde niemandem irgendwelche Fragen zu beantworten 17 00:00:54,590 --> 00:00:57,360 hat über besondere Probleme. 18 00:00:57,360 --> 00:01:02,050 Und dann werden wir gehen über Datei-I / O und Problem Set 5. 19 00:01:02,050 --> 00:01:07,360 Diese letzten beiden Themen nehmen bis der Großteil der Abschnitt heute. 20 00:01:07,360 --> 00:01:11,680 >> Ich habe diese Liste jede Woche ein Erinnerung an euch alle, aber der Kern 21 00:01:11,680 --> 00:01:14,650 Abschnitt haben wir nur 90 Minuten - wir nicht in der Lage, um alles abzudecken, die ich 22 00:01:14,650 --> 00:01:16,280 würde gerne für euch zu decken. 23 00:01:16,280 --> 00:01:21,170 Aber wir haben eine Menge von Ressourcen für Sie zeichnen auf, wie Sie wissen, erhalten 24 00:01:21,170 --> 00:01:24,000 das Material und die Arbeit durch Ihr Problem stellt. 25 00:01:24,000 --> 00:01:30,810 >> Eine Erinnerung, die ich habe einen Online-Text Box, für Sie eingerichtet ausfüllen, wenn Sie 26 00:01:30,810 --> 00:01:33,250 irgendeine Feedback für mich, sowohl positive als auch 27 00:01:33,250 --> 00:01:35,180 konstruktiv, zu Abschnitt. 28 00:01:35,180 --> 00:01:38,600 Das URL wird hier rechts unten befindet. 29 00:01:38,600 --> 00:01:43,250 Also bitte, einen Moment Zeit nehmen, wenn Sie welche haben Feedback, ob die während der Abschnitt, 30 00:01:43,250 --> 00:01:48,030 oder nach, oder nachdem Sie das Video zu sehen online, um mir Ihr Feedback zu geben. 31 00:01:48,030 --> 00:01:52,100 Ich schätze wirklich alle und alles. 32 00:01:52,100 --> 00:01:55,730 >> Also ich habe mit kleinen Gespräche mit einer Menge von meinem 33 00:01:55,730 --> 00:01:59,350 Studenten während der ganzen Woche - wie ich die Hand Quiz zurück, spricht über die 34 00:01:59,350 --> 00:02:01,480 natürlich sehen, wie du tust. 35 00:02:01,480 --> 00:02:05,120 Und ein Thema hat kommen und über im Gespräch über - in 36 00:02:05,120 --> 00:02:05,660 insbesondere - 37 00:02:05,660 --> 00:02:07,710 Problem setzt. 38 00:02:07,710 --> 00:02:13,090 Und ich habe dieses Thema gekapselt auf dem Board jetzt. 39 00:02:13,090 --> 00:02:16,630 >> Im Wesentlichen gibt es einen Unterschied zwischen Drehen in etwas, das ist 40 00:02:16,630 --> 00:02:19,590 korrekt und etwas getan das ist gut gemacht. 41 00:02:19,590 --> 00:02:22,920 Die meisten Menschen wurden dabei fantastische im Hinblick auf Richtigkeit - 42 00:02:22,920 --> 00:02:25,460 5 oder 4 ist auf allen psets. 43 00:02:25,460 --> 00:02:27,930 Die meisten Menschen werden immer diejenigen, die ganze Zeit. 44 00:02:27,930 --> 00:02:31,150 >> Allerdings nur, weil du getan hast etwas richtig bedeutet nicht, Sie haben 45 00:02:31,150 --> 00:02:34,450 etwas getan, wie elegant oder effizient, oder so sauber, wie Sie 46 00:02:34,450 --> 00:02:35,270 hätte es tun können. 47 00:02:35,270 --> 00:02:36,790 Und das ist, was die Design - 48 00:02:36,790 --> 00:02:39,230 und zu einem geringeren Grad, Stil - 49 00:02:39,230 --> 00:02:40,450 Achsen sind. 50 00:02:40,450 --> 00:02:45,130 Ich bin also schieben Sie alle, und andere Transkriptionsfaktoren drängen euch, nicht nur wiederum 51 00:02:45,130 --> 00:02:48,320 in Dinge, die richtig sind, aber schalten in die Dinge, die gut codiert sind. 52 00:02:48,320 --> 00:02:53,060 >> Nicht dabei unnötige FOR-Schleifen, nicht neu berechnet, wenn Variablen 53 00:02:53,060 --> 00:02:53,800 Sie haben nicht zu. 54 00:02:53,800 --> 00:02:58,520 Zum Beispiel, im Rückblick auf Problem eingestellt 4, bei der Platzierung der Ziegelsteine ​​auf die 55 00:02:58,520 --> 00:03:03,070 Bildschirm, jede Zeile - jeder Stein in ein bestimmten Zeile hat die gleiche y-Koordinate - 56 00:03:03,070 --> 00:03:04,390 die gleiche Höhe zu koordinieren. 57 00:03:04,390 --> 00:03:07,930 >> So, dass y-Koordinate nicht zu müssen, im Innenraum berechnet werden 58 00:03:07,930 --> 00:03:11,070 FOR-Schleife, die Sie wahrscheinlich benutzt verschachtelt diese Steine ​​auf den Bildschirm gebracht. 59 00:03:11,070 --> 00:03:14,030 Es muss nur jeder berechnet werden Mal, wenn Sie eine Zeile umgeschaltet wird, oder 60 00:03:14,030 --> 00:03:15,200 nach unten bewegt, eine Zeile. 61 00:03:15,200 --> 00:03:19,760 So sagen wenn es 10 Steine ​​in eine Reihe, kann jeder Stein das gleiche haben 62 00:03:19,760 --> 00:03:22,260 y-Koordinate und die y-Koordinate kann einfach berechnet werden 63 00:03:22,260 --> 00:03:23,550 einmal für alle diejenigen. 64 00:03:23,550 --> 00:03:27,810 >> Es muss nicht berechnet werden, 10 mal, noch ist, dass die Berechnung Notwendigkeit 65 00:03:27,810 --> 00:03:30,220 in der tatsächlichen passieren Funktionsaufruf - 66 00:03:30,220 --> 00:03:33,020 die neue gracked Funktionsaufruf. 67 00:03:33,020 --> 00:03:37,820 Also, wenn das ein wenig verwirrend für Sie, mehr generisch, Dinge, die 68 00:03:37,820 --> 00:03:40,730 müssen nicht jedes Mal passieren Sie durch eine FOR-Schleife gehen sollte nicht sein 69 00:03:40,730 --> 00:03:42,900 setzen in der FOR-Schleife, und sollte nicht passieren, jedes Mal wenn Sie gehen 70 00:03:42,900 --> 00:03:44,080 durch die FOR-Schleife. 71 00:03:44,080 --> 00:03:49,270 >> Ein weiteres gutes Beispiel sahen wir Design in Woche 3 für 15, Sie halten konnte 72 00:03:49,270 --> 00:03:50,500 Spur der Null. 73 00:03:50,500 --> 00:03:53,600 Also, wenn Sie das Board initialisieren Sie retten - in einer globalen Variablen, vielleicht - 74 00:03:53,600 --> 00:03:56,140 die x-und y-Koordinate des Null. 75 00:03:56,140 --> 00:03:57,520 Und dann, wenn Sie - 76 00:03:57,520 --> 00:04:00,310 Ihr Umzug in Funktion, wenn Sie machen ein erfolgreicher Schritt, bearbeiten Sie die 77 00:04:00,310 --> 00:04:02,040 Lage der Null. 78 00:04:02,040 --> 00:04:06,240 >> Das würde Sie davon ab, zu tun, sparen FOR-Schleifen, um durch die aussehen verschachtelt 79 00:04:06,240 --> 00:04:10,700 Bord jedes Mal in der Move-Funktion und finden Sie die Null, oder finden Sie die Fliesen, 80 00:04:10,700 --> 00:04:12,460 und dann prüfen, was ist daneben. 81 00:04:12,460 --> 00:04:16,329 Stattdessen die Position des haben Sie Null, können Sie einfach oben schauen, unten, 82 00:04:16,329 --> 00:04:21,160 und links und rechts davon, zu finden die Fliese die Sie gesucht. 83 00:04:21,160 --> 00:04:24,970 >> Also in Bezug auf die Programme, die wir sind schreiben, sind sie nie groß genug 84 00:04:24,970 --> 00:04:28,580 Einige dieser Entwurfsentscheidungen werden wirklich behindern Ihre 85 00:04:28,580 --> 00:04:31,670 Programm, oder machen es langsamer laufen, oder vielleicht sogar der Speicher knapp. 86 00:04:31,670 --> 00:04:35,030 Aber wir sind immer noch dabei, ihr Jungs zu schreiben, wie elegant und 87 00:04:35,030 --> 00:04:36,450 effizienten Code wie möglich. 88 00:04:36,450 --> 00:04:39,910 >> Also, wenn Sie am Ende schriftlich Dinge , die einen deutlich größeren haben 89 00:04:39,910 --> 00:04:44,660 Umfang, werden sie mit guten geschrieben werden Design abgesehen davon, dass richtig. 90 00:04:44,660 --> 00:04:46,300 So einige von Ihnen haben gebracht, dass aus. 91 00:04:46,300 --> 00:04:48,560 Das ist etwas, was wir suchen - etwas, wir werden auch weiterhin 92 00:04:48,560 --> 00:04:49,840 drücken euch auf. 93 00:04:49,840 --> 00:04:52,460 >> Wenn Sie Fragen haben über die Gestaltung des Programms, fühlen Sie sich frei 94 00:04:52,460 --> 00:04:56,870 zu erreichen, um mich, und ich bin glücklich, Spaziergang durch das Programm mit Ihnen, 95 00:04:56,870 --> 00:05:01,320 und zeigen etwas von dem Entwurf Entscheidungen, die Sie gemacht, und geben Ihnen einige 96 00:05:01,320 --> 00:05:06,240 Vorschläge auf, wie man selbst bessere Design-Entscheidungen. 97 00:05:06,240 --> 00:05:08,870 >> Also werden wir weiter zu gehen zu reden Quiz 0. 98 00:05:08,870 --> 00:05:11,300 Bevor wir das tun, weiß jemand Fragen über das, was 99 00:05:11,300 --> 00:05:14,252 Ich habe so weit abgedeckt? 100 00:05:14,252 --> 00:05:21,500 >> [Rascheln] 101 00:05:21,500 --> 00:05:22,750 >> JASON HIRSCHHORN: Sieben Sekunden. 102 00:05:22,750 --> 00:05:23,250 OK. 103 00:05:23,250 --> 00:05:24,970 Lassen Sie uns über Quiz 0 sprechen für ein bisschen. 104 00:05:24,970 --> 00:05:26,700 Die meisten von Ihnen haben Ihre Quiz 0 zurück. 105 00:05:26,700 --> 00:05:29,820 Wenn Sie das nicht tun, hoffentlich Sie erinnern sie ein wenig. 106 00:05:29,820 --> 00:05:34,770 Aber wenn Sie Quiz 0, dann sind Sie aufgenommen haben haben auch Zugriff auf die PDF online im 107 00:05:34,770 --> 00:05:35,890 Probelösungen. 108 00:05:35,890 --> 00:05:39,480 >> Hat jemand irgendwelche Fragen haben, bevor wir springen in der Woche Material 109 00:05:39,480 --> 00:05:41,520 ein besonderes Problem auf Quiz 0 - 110 00:05:41,520 --> 00:05:44,630 warum die Antwort ist, was es ist? 111 00:05:44,630 --> 00:05:47,255 Ist jemand verwirrt über alles? 112 00:05:47,255 --> 00:05:50,230 Auch wenn Sie das Problem richtig verstanden habe, aber nur möchten, dass ich es erklären, ein bisschen 113 00:05:50,230 --> 00:05:52,640 mehr, bin ich glücklich, dies jetzt zu tun. 114 00:05:52,640 --> 00:05:57,800 >> So habe ich euch gebeten kommen vorbereitet mit einigen 115 00:05:57,800 --> 00:05:59,440 Gedanken über Quiz 0. 116 00:05:59,440 --> 00:06:02,660 Also, die gerne zu uns kommen würden begann mit einer Frage oder 117 00:06:02,660 --> 00:06:04,655 Kommentare zu Quiz: 0? 118 00:06:04,655 --> 00:06:07,435 119 00:06:07,435 --> 00:06:10,410 >> [PAPIER Rascheln] 120 00:06:10,410 --> 00:06:11,470 >> JASON HIRSCHHORN: Nicht jeder tat perfekt. 121 00:06:11,470 --> 00:06:12,720 So weiß ich, [lacht] 122 00:06:12,720 --> 00:06:15,950 es müssen einige Fragen sein Quiz über null. 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 Ja. 126 00:06:29,210 --> 00:06:29,600 Ompica. 127 00:06:29,600 --> 00:06:30,520 >> OMPICA: Number 10. 128 00:06:30,520 --> 00:06:33,560 >> JASON HIRSCHHORN: Number 10. 129 00:06:33,560 --> 00:06:35,400 Welches war die Nummer 10? 130 00:06:35,400 --> 00:06:35,840 >> OMPICA: Die - 131 00:06:35,840 --> 00:06:36,420 >> JASON HIRSCHHORN: Ich haven't - 132 00:06:36,420 --> 00:06:37,670 >> OMPICA: Das sind - 133 00:06:37,670 --> 00:06:40,060 134 00:06:40,060 --> 00:06:42,180 >> JASON HIRSCHHORN: Nummer 10 war acht i - Schreiben von acht bis i? 135 00:06:42,180 --> 00:06:42,980 >> OMPICA: Ja. 136 00:06:42,980 --> 00:06:43,630 >> JASON HIRSCHHORN: OK. 137 00:06:43,630 --> 00:06:47,390 Also eine andere Frage, die Sie haben können fragte ich war vorausschauend? 138 00:06:47,390 --> 00:06:48,630 Die Antwort ist ja. 139 00:06:48,630 --> 00:06:52,060 Im Abschnitt vor dem Quiz, fragte ich euch, sowohl Sterling-Code und 140 00:06:52,060 --> 00:06:52,980 acht bis i. 141 00:06:52,980 --> 00:06:54,770 Beide passiert erscheinen auf dem Quiz. 142 00:06:54,770 --> 00:06:57,510 So hoffnungsvoll, werden Sie bezahlt Aufmerksamkeit darauf. 143 00:06:57,510 --> 00:07:02,520 >> Und wenn Sie hatten, dann müsste wahrscheinlich auf diese beiden gut gemacht. 144 00:07:02,520 --> 00:07:06,030 Aber acht bis i, wir haben nicht wirklich Code es in der Klasse, aber es war wieder 145 00:07:06,030 --> 00:07:07,500 fragte am Quiz. 146 00:07:07,500 --> 00:07:13,270 So ein paar Dinge zu nehmen beachten Sie bei der Codierung von acht bis i. 147 00:07:13,270 --> 00:07:17,320 Das erste, was, je die Frage, war Sie benötigt, um zu überprüfen, wenn die Zeichenfolge 148 00:07:17,320 --> 00:07:20,300 war gleich null. 149 00:07:20,300 --> 00:07:28,060 >> Ein paar Leute versuchten, später überprüfen im Programm, wenn s Halterung ich war - 150 00:07:28,060 --> 00:07:30,940 so ein bestimmtes Zeichen, dass String - war gleich null. 151 00:07:30,940 --> 00:07:35,600 Aber denken Sie daran, dass null ist im Wesentlichen - es ist gut zu denken 152 00:07:35,600 --> 00:07:39,100 null als Null-Zeiger - ein Zeiger auf Null - 153 00:07:39,100 --> 00:07:40,920 irgendwo im Speicher, wo man kann nie zugreifen. 154 00:07:40,920 --> 00:07:44,730 >> Also, wenn etwas ist gleich null, die Sie weiß, dass es nicht initialisiert wurde, 155 00:07:44,730 --> 00:07:46,430 oder es ist nichts. 156 00:07:46,430 --> 00:07:50,950 Also s ist ein Zeichen Stern, s Halterung i ist ein Zeichen. 157 00:07:50,950 --> 00:07:57,410 So macht es Sinn, s vergleichen auf null, aber nicht s Halterung i auf null. 158 00:07:57,410 --> 00:07:59,390 Aber noch einmal - das war das erste, was dass Sie tun sollten - 159 00:07:59,390 --> 00:08:03,510 überprüfen, um sicherzustellen, dass Sie tatsächlich hast ein String. 160 00:08:03,510 --> 00:08:08,020 >> Weiter zu durchlaufen, Sie wollten jedes Zeichen in der Zeichenfolge. 161 00:08:08,020 --> 00:08:12,500 Und damit wäre wie eine Klammer s sein i, zum Beispiel, wenn ich Ihr Iterator. 162 00:08:12,500 --> 00:08:17,250 Und nehmen Sie das Zeichen, und zu ihrem eigentlichen Wert. 163 00:08:17,250 --> 00:08:21,800 Sie haben es als char gespeichert, sondern der ASCII-Wert für Null - 164 00:08:21,800 --> 00:08:23,010 Null als Charakter - 165 00:08:23,010 --> 00:08:25,450 tatsächlich nicht die ganze Zahl Null. 166 00:08:25,450 --> 00:08:28,700 Es ist eine andere Zahl, die Sie nachschlagen in der ASCII-Tabelle. 167 00:08:28,700 --> 00:08:30,790 >> So einen Weg, um dafür zu korrigieren - wahrscheinlich der beste Weg, um zu korrigieren 168 00:08:30,790 --> 00:08:33,760 dass - von ihr subtrahieren der Zeichenwert - 169 00:08:33,760 --> 00:08:35,140 Null als Charakter. 170 00:08:35,140 --> 00:08:38,490 Also minus Apostroph, null, weitere Single Zitat. 171 00:08:38,490 --> 00:08:44,620 Das wird nehmen, was Zahl, die Sie haben als char, und bekommen es gleich 172 00:08:44,620 --> 00:08:46,720 die Zahl als eine tatsächliche ganze Zahl ist. 173 00:08:46,720 --> 00:08:50,300 >> Und das ist sehr ähnlich dem Ansatz eine Menge von Menschen nahmen in der 174 00:08:50,300 --> 00:08:52,800 Problem Set 2, mit Caesar und Viginere - 175 00:08:52,800 --> 00:08:55,160 diese Chiffren, wenn Sie wurden dem Drehen auf. 176 00:08:55,160 --> 00:08:59,210 So, nachdem Sie es als Zahl von haben Null bis Neun, dann - je nach 177 00:08:59,210 --> 00:09:02,750 wo es geht in die ultimative Nummer - Sie müssen, um es zu multiplizieren 178 00:09:02,750 --> 00:09:04,120 mit einer Leistung von 10. 179 00:09:04,120 --> 00:09:07,340 >> Einige Menschen zogen von der Rückseite, um die vorne und multipliziert die individuelle 180 00:09:07,340 --> 00:09:08,940 Zahl mit einer Potenz von 10. 181 00:09:08,940 --> 00:09:11,160 Einige Menschen zogen von die von vorne nach hinten - 182 00:09:11,160 --> 00:09:14,430 und so nahm die höchste Bestellnummern ersten - 183 00:09:14,430 --> 00:09:18,190 und würden die in a sparen globale Zählervariable. 184 00:09:18,190 --> 00:09:20,880 Und dann jedes Mal durch die FÜR Schleife, multiplizieren, dass die riesigen globalen 185 00:09:20,880 --> 00:09:25,640 Zählervariable um 10, um Raum für das nächste Zeichen. 186 00:09:25,640 --> 00:09:28,750 >> Also das war ein wenig verwirrend, ohne mir ist es auf dem Brett zu schreiben. 187 00:09:28,750 --> 00:09:31,550 Aber die Probelösung steht Ihnen zur Verfügung. 188 00:09:31,550 --> 00:09:32,870 Aber das waren die großen Dinge die wir gesucht haben. 189 00:09:32,870 --> 00:09:36,400 Auch eine Überprüfung, um sicherzustellen, dass jeder individuellen Charakter war in der Tat ein 190 00:09:36,400 --> 00:09:39,780 Charakter zwischen null und neun, und nicht ein anderer Charakter, wie ein A, 191 00:09:39,780 --> 00:09:41,160 zum Beispiel. 192 00:09:41,160 --> 00:09:43,150 >> Das waren die Dinge, die wir waren auf der Suche für in dieser Frage. 193 00:09:43,150 --> 00:09:46,510 194 00:09:46,510 --> 00:09:47,980 Heißt das, Ihre Frage zu beantworten? 195 00:09:47,980 --> 00:09:49,320 >> OMPICA: Ja. 196 00:09:49,320 --> 00:09:50,240 >> JASON HIRSCHHORN: OK. 197 00:09:50,240 --> 00:09:53,940 Gibt es noch andere Fragen Quiz über 0? 198 00:09:53,940 --> 00:09:55,440 Was ist mit der Zusammenstellung? 199 00:09:55,440 --> 00:09:56,740 Jeder der Zusammenstellung richtig? 200 00:09:56,740 --> 00:09:58,370 Nein. 201 00:09:58,370 --> 00:09:58,840 Es gab eine - 202 00:09:58,840 --> 00:10:01,010 [Lacht] 203 00:10:01,010 --> 00:10:03,265 Fragen zu den Übersetzungsvorgang? 204 00:10:03,265 --> 00:10:06,050 205 00:10:06,050 --> 00:10:06,966 Wow. 206 00:10:06,966 --> 00:10:11,090 >> [PAPIER Rascheln] 207 00:10:11,090 --> 00:10:11,520 >> JASON HIRSCHHORN: Ja. 208 00:10:11,520 --> 00:10:11,700 Michael. 209 00:10:11,700 --> 00:10:14,140 >> MICHAEL: Ist Nummer 7 - zufällig? 210 00:10:14,140 --> 00:10:16,500 >> JASON HIRSCHHORN: Number 7. 211 00:10:16,500 --> 00:10:20,670 Nummer 7 war erhalten eine Zufallszahl. 212 00:10:20,670 --> 00:10:21,110 Excellent. 213 00:10:21,110 --> 00:10:25,630 So haben Sie gegeben sind eine ganze Zahl ein und eine ganze Zahl b, und Sie möchten eine zufällige 214 00:10:25,630 --> 00:10:28,710 ganze Zahl zwischen a und b. 215 00:10:28,710 --> 00:10:31,740 Wir können wirklich schreiben dieses auf der Vorstand, weil dieser 216 00:10:31,740 --> 00:10:33,320 war eine Zeile Code - 217 00:10:33,320 --> 00:10:34,390 einen Weg, es zu tun. 218 00:10:34,390 --> 00:10:37,810 >> Also werden wir Drand als gegeben Funktion, die wir nutzen könnten. 219 00:10:37,810 --> 00:10:38,820 Und was bedeutet Drand - 220 00:10:38,820 --> 00:10:40,290 vorausgesetzt, es ist schon ausgesät - 221 00:10:40,290 --> 00:10:42,316 Was bedeutet Drand zurückkehren? 222 00:10:42,316 --> 00:10:44,840 >> Michael: Ein Schwimmer zwischen 0,0 und 1,0. 223 00:10:44,840 --> 00:10:45,530 >> JASON HIRSCHHORN: Eine Zahl - ja. 224 00:10:45,530 --> 00:10:47,910 Eine Zahl zwischen 0 und 1 ist. 225 00:10:47,910 --> 00:10:51,760 Und so haben wir B und A haben. 226 00:10:51,760 --> 00:10:55,480 Und dann unsere Zufallszahl haben wir zwischen 0 und 1, die uns von Drand gegeben. 227 00:10:55,480 --> 00:11:01,480 228 00:11:01,480 --> 00:11:06,630 Einige Menschen versuchten, b stellen oder b minus a, oder etwas in die 229 00:11:06,630 --> 00:11:07,960 Klammern. 230 00:11:07,960 --> 00:11:11,210 Das würde bedeuten, dass sie Argumente für diese Funktion. 231 00:11:11,210 --> 00:11:13,450 >> Drand nimmt keine Argumente - wie getString tut 232 00:11:13,450 --> 00:11:14,330 nicht alle Argumente. 233 00:11:14,330 --> 00:11:16,600 So ist es nur offene paren, in der Nähe paren - und das selbst, 234 00:11:16,600 --> 00:11:17,330 der Funktionsaufruf. 235 00:11:17,330 --> 00:11:19,770 Und das gibt Ihnen eine Reihe zwischen 0 und 1 ist. 236 00:11:19,770 --> 00:11:22,820 Natürlich haben wir eine ganze Reihe dass Zahlen in. 237 00:11:22,820 --> 00:11:28,470 >> Sprich, wenn b ist 10 und eine 5 ist, wir wirklich wollen, eine Zahl mit einem Bereich von 5. 238 00:11:28,470 --> 00:11:36,940 Also das nächste, was wir tun müssen, ist multiplizieren Sie diese mit dem Bereich b minus ein. 239 00:11:36,940 --> 00:11:40,380 So ist der Annahme, dass multipliziert. 240 00:11:40,380 --> 00:11:42,590 Und das wird uns eine Nummer geben innerhalb eines gegebenen Bereichs. 241 00:11:42,590 --> 00:11:46,610 Und dass bestimmte Bereich bei der Unterschied zwischen minus ein b. 242 00:11:46,610 --> 00:11:50,030 >> Und schließlich werde, dass nur geben es aus - sagen, den Bereich zwischen minus ein b 243 00:11:50,030 --> 00:11:52,520 ist 5, das wird uns einen geben Zahl von 0 bis 5 ist. 244 00:11:52,520 --> 00:11:56,000 Aber wenn ein tatsächlich 5 müssen wir steigern dieser Bereich nach oben, wo es ist 245 00:11:56,000 --> 00:12:01,380 eigentlich sein soll, durch Hinzufügen einer. 246 00:12:01,380 --> 00:12:02,580 Damit bekommt die Logik richtig. 247 00:12:02,580 --> 00:12:03,745 Und dann hätten Sie eine andere Frage? 248 00:12:03,745 --> 00:12:04,547 >> Michael: Nein. 249 00:12:04,547 --> 00:12:06,010 Ich fühle mich einfach jetzt wirklich dumm. 250 00:12:06,010 --> 00:12:06,405 [Lacht] 251 00:12:06,405 --> 00:12:06,730 >> JASON HIRSCHHORN: Nein 252 00:12:06,730 --> 00:12:08,640 Fühlen Sie sich nicht wirklich dumm. 253 00:12:08,640 --> 00:12:10,560 Eine Reihe von Menschen gekämpft mit dieser Frage. 254 00:12:10,560 --> 00:12:13,920 Und dann ist die andere Frage, Drand, Sie sagten, gibt Ihnen einen Schwimmer - 255 00:12:13,920 --> 00:12:14,940 gibt einen Schwimmer. 256 00:12:14,940 --> 00:12:18,020 Aber diese Funktion tatsächlich gefragt für eine ganze Zahl zurückzugeben. 257 00:12:18,020 --> 00:12:23,700 >> Sie nicht, dies ausdrücklich geworfen brauchen in eine ganze Zahl, da diese 258 00:12:23,700 --> 00:12:29,090 Operationen wird sie wie alle eine Behandlung schweben - wie eine Fließkommazahl. 259 00:12:29,090 --> 00:12:31,570 Gefällt Ihnen dieses Willens - auch wenn dies eine ganze Zahl ist, wird dies 260 00:12:31,570 --> 00:12:32,890 korrekt multipliziert. 261 00:12:32,890 --> 00:12:34,000 All die Multiplikation funktioniert. 262 00:12:34,000 --> 00:12:35,060 Sie brauchen nicht, um es hier zu werfen. 263 00:12:35,060 --> 00:12:36,480 In der Tat sollte man nicht werfen es. 264 00:12:36,480 --> 00:12:37,310 >> Das wäre - 265 00:12:37,310 --> 00:12:40,750 wenn Sie eine Reihe werfen würde das ist zwischen 0 und 1 - 266 00:12:40,750 --> 00:12:42,680 eine Zufallszahl, eine Fließkomma - 267 00:12:42,680 --> 00:12:47,850 dann wird es entweder nur 0 oder 1 sein, also Sie alle, dass Präzision zu verlieren. 268 00:12:47,850 --> 00:12:50,120 Aber am Ende, wenn Sie zurückkommen, erhält automatisch 269 00:12:50,120 --> 00:12:51,620 als ganze Zahl zurück gesendet. 270 00:12:51,620 --> 00:12:56,870 Damit Sie nicht zu tun brauchen dass Gießen sich. 271 00:12:56,870 --> 00:13:00,810 >> Also das war die Antwort auf Diese Frage, die Zahl 7. 272 00:13:00,810 --> 00:13:02,190 Alle anderen Fragen zu Quiz: 0? 273 00:13:02,190 --> 00:13:03,300 Ja, Annie. 274 00:13:03,300 --> 00:13:05,050 >> ANNIE: Wann verwenden wir rekursive - 275 00:13:05,050 --> 00:13:07,850 Wann verwenden wir iterative Schleifen? 276 00:13:07,850 --> 00:13:10,210 >> JASON HIRSCHHORN: Wann verwenden recursive - so generell die 277 00:13:10,210 --> 00:13:14,110 Vor-und Nachteile gegenüber der Rekursion eine iterative Vorgehensweise. 278 00:13:14,110 --> 00:13:17,110 Kann jemand bieten eine Profi oder con? 279 00:13:17,110 --> 00:13:19,460 Bitte? 280 00:13:19,460 --> 00:13:20,140 Nicht jeder kann. 281 00:13:20,140 --> 00:13:22,526 Wer kann eine Pro-oder eine con bieten? 282 00:13:22,526 --> 00:13:26,963 >> [PAPIER Rascheln] 283 00:13:26,963 --> 00:13:29,730 >> STUDENT 1: Rekursive weniger Codierung - weniger Tipp? 284 00:13:29,730 --> 00:13:33,170 >> JASON HIRSCHHORN: Also in der Regel, Rekursion vor allem eine Funktion - 285 00:13:33,170 --> 00:13:35,750 oder ein Algorithmus wie Merge Art - das selbst verleiht 286 00:13:35,750 --> 00:13:37,300 einer rekursiven Ansatz - 287 00:13:37,300 --> 00:13:40,710 könnte einfacher sein rekursiv zu codieren. 288 00:13:40,710 --> 00:13:43,940 Und mehr Sinn machen um es rekursiv zu tun. 289 00:13:43,940 --> 00:13:46,230 So, dass wäre ein Profi sein, um Rekursion. 290 00:13:46,230 --> 00:13:46,610 Andere? 291 00:13:46,610 --> 00:13:47,467 Ja? 292 00:13:47,467 --> 00:13:49,240 >> STUDENT 2: Con Rekursion - 293 00:13:49,240 --> 00:13:50,940 Es verwendet mehr Speicher. 294 00:13:50,940 --> 00:13:52,200 >> JASON HIRSCHHORN: Also genau richtig. 295 00:13:52,200 --> 00:13:55,720 Eine rekursive Funktion zu halten indem Stack-Frames auf den Stapel. 296 00:13:55,720 --> 00:13:59,690 Also, wenn Sie auf eine Menge von Betriebs sind Zahlen und müssen dies nennen 297 00:13:59,690 --> 00:14:02,560 funktionieren viel, dann werden Sie sicherlich mehr Speicherkapazität, während 298 00:14:02,560 --> 00:14:05,810 einen iterativen Ansatz wird nur setzen ein Stapelrahmen auf den Stapel, weil 299 00:14:05,810 --> 00:14:08,420 alles geschieht innerhalb einer Funktion. 300 00:14:08,420 --> 00:14:11,010 >> Alle anderen Vor-und Nachteile? 301 00:14:11,010 --> 00:14:11,500 Ja. 302 00:14:11,500 --> 00:14:12,550 >> STUDENT 3: Vor-Rekursion. 303 00:14:12,550 --> 00:14:15,950 Sie haben nicht zu bestimmen, in voranzubringen, wie oft die 304 00:14:15,950 --> 00:14:17,660 Code wiederholt werden mußte. 305 00:14:17,660 --> 00:14:22,810 Sie können eine vorbestimmte Anzahl aufweisen Zeiten, die Sie durchlaufen, dann haben 306 00:14:22,810 --> 00:14:26,420 Rekursion ist besser, weil es nimmt dieses Ergebnis. 307 00:14:26,420 --> 00:14:27,780 >> JASON HIRSCHHORN: Ich denke, das ist wahr. 308 00:14:27,780 --> 00:14:30,770 Aber ich denke, in beiden Fällen Sie würde nie - 309 00:14:30,770 --> 00:14:33,290 Sie würde wahrscheinlich einige Eingabe von dem Benutzer. 310 00:14:33,290 --> 00:14:35,990 Oder diese Funktion wäre eine Eingabe haben , die bestimmen, wie oft es 311 00:14:35,990 --> 00:14:36,730 laufen soll. 312 00:14:36,730 --> 00:14:39,520 So allgemein, würden Sie nicht hart codieren - sogar in einem iterativen Ansatz - wie 313 00:14:39,520 --> 00:14:40,940 viele Male, die Schleife ausgeführt werden soll. 314 00:14:40,940 --> 00:14:46,100 315 00:14:46,100 --> 00:14:48,670 >> Haben Sie eine andere waren Sie haben denken, Annie? 316 00:14:48,670 --> 00:14:49,330 OK. 317 00:14:49,330 --> 00:14:51,650 Das sind also wahrscheinlich die zwei - 318 00:14:51,650 --> 00:14:54,370 der größte Pro-und die größte con einer rekursiven gegen 319 00:14:54,370 --> 00:14:57,080 eine iterative Vorgehensweise. 320 00:14:57,080 --> 00:14:57,690 OK. 321 00:14:57,690 --> 00:14:59,465 Alles andere Quiz auf 0? 322 00:14:59,465 --> 00:15:08,940 323 00:15:08,940 --> 00:15:09,920 >> Gehen wir weiter. 324 00:15:09,920 --> 00:15:15,260 Datei-I / O. Es ist eine wunderbare Kurz in dieser Woche auf Datei-I / O, die hoffentlich 325 00:15:15,260 --> 00:15:19,270 Sie mehrere beobachtet haben Zeiten und bewundert. 326 00:15:19,270 --> 00:15:22,910 Eine Menge Arbeit ging in das, und ich habe gehört, es ist wahnsinnig hilfsbereit. 327 00:15:22,910 --> 00:15:25,740 Ich auch auf den Link auf dieser Folie, falls Sie nicht schon einmal eine 328 00:15:25,740 --> 00:15:29,160 Chance, es zu beobachten 10-mal. 329 00:15:29,160 --> 00:15:35,280 >> Also, werden wir kurz über das gehen wichtige Schritte zur Öffnung und Arbeits 330 00:15:35,280 --> 00:15:38,400 mit Dateien, und dann werden wir tauchen in eine Codierung Problem vor 331 00:15:38,400 --> 00:15:40,400 Prüfung des Problems Set. 332 00:15:40,400 --> 00:15:44,330 Also noch einmal, ich werde dies auf setzen der Bildschirm, aber ich werde für sprechen 333 00:15:44,330 --> 00:15:47,630 nur eine Minute über das, was wir sind denn hier mit Datei I/O-- 334 00:15:47,630 --> 00:15:49,090 was bedeutet das? 335 00:15:49,090 --> 00:15:55,280 >> Das heißt, wir schaffen unsere Programme, und dann haben unsere Programme 336 00:15:55,280 --> 00:16:00,370 exit ein, und keine Auswirkungen auf gemacht haben die Welt außerhalb unseres Programms. 337 00:16:00,370 --> 00:16:04,630 Aber wenn wir die Arbeit mit Dateien - Lesen sie sowohl in und die Schaffung von 338 00:16:04,630 --> 00:16:10,460 sie - können wir eine gewisse Wirkung auf die haben Welt außerhalb unseres Programms. 339 00:16:10,460 --> 00:16:15,440 >> Genau wie wenn Microsoft Word nicht in der Lage , um alle Word-Dokumente zu machen, dann 340 00:16:15,440 --> 00:16:18,710 einmal Microsoft Word zu beenden, alle Ihre Arbeit gegangen wäre, und es wäre 341 00:16:18,710 --> 00:16:19,740 wirklich nutzlos. 342 00:16:19,740 --> 00:16:23,620 Wir wollen schließlich in der Lage zu sein, Programme schreiben, die beeinflussen, kann die 343 00:16:23,620 --> 00:16:31,350 Welt um sie herum, die beide durch die Aufnahme von komplexe Eingänge - in Bezug auf die Dateien und 344 00:16:31,350 --> 00:16:37,080 über Dateien, aber auch für interessante und überzeugende Ausgänge - 345 00:16:37,080 --> 00:16:39,520 in Bezug auf die verschiedenen Arten von Dateien. 346 00:16:39,520 --> 00:16:43,730 >> Also das ist, warum wir beginnen, lernen, wie man mit Dateien zu arbeiten. 347 00:16:43,730 --> 00:16:47,080 Genauer gesagt, was wir tun, ist wie folgt. 348 00:16:47,080 --> 00:16:47,680 Es ist sehr einfach. 349 00:16:47,680 --> 00:16:51,530 Es sind nur ein paar Schritte, und sie werden hier auf diesem Code aufgeführt. 350 00:16:51,530 --> 00:16:55,130 So werden wir zu durchlaufen dieser Code Zeile für Zeile. 351 00:16:55,130 --> 00:16:57,630 >> Zunächst sehen Sie, hervorgehoben - 352 00:16:57,630 --> 00:17:01,330 wenn Sie mit einer Datei arbeiten, unabhängig von der Art von Datei es sich handelt, 353 00:17:01,330 --> 00:17:02,670 Sie brauchen, um es zu öffnen. 354 00:17:02,670 --> 00:17:05,130 Und das ist mit einem Aufruf von fopen - 355 00:17:05,130 --> 00:17:05,950 hier richtig. 356 00:17:05,950 --> 00:17:07,980 Sie enthalten den Namen der Datei. 357 00:17:07,980 --> 00:17:11,930 Wenn sich die Datei nicht im Verzeichnis, oder den Ordner, in dem dieses Programm 358 00:17:11,930 --> 00:17:15,910 Leben, dann müssen Sie auch gehören ein Weg, wo die Datei ist. 359 00:17:15,910 --> 00:17:19,099 >> Wir gehen davon aus, dass diese Datei "test.txt" - 360 00:17:19,099 --> 00:17:24,220 ein einfaches Textdokument - ist in der gleichen Ordner wie dieses Programm ist. 361 00:17:24,220 --> 00:17:26,859 Also das ist eine andere Sache zu halten Geist -, dass, wenn Sie eine Datei öffnen möchten 362 00:17:26,859 --> 00:17:30,050 irgendwo anders, die Sie tatsächlich benötigen seiner Lage sind. 363 00:17:30,050 --> 00:17:33,520 >> Zweitens können Sie ein Argument übergeben fopen, und das ist, was Sie tun möchten, 364 00:17:33,520 --> 00:17:34,620 mit der Datei. 365 00:17:34,620 --> 00:17:38,450 Es gibt drei Hauptargumente, dass Sie gehen, um passieren zu fopen. 366 00:17:38,450 --> 00:17:40,060 Wer kann mir diese drei geben? 367 00:17:40,060 --> 00:17:44,960 368 00:17:44,960 --> 00:17:47,130 Wer kann mir eine von ihnen geben? 369 00:17:47,130 --> 00:17:48,130 Ja. 370 00:17:48,130 --> 00:17:50,010 >> STUDENT 4: Der Dateiname? 371 00:17:50,010 --> 00:17:50,440 >> JASON HIRSCHHORN: Es tut uns leid. 372 00:17:50,440 --> 00:17:55,490 Die drei wichtigsten Argumente, die Sie weitergeben können wie das zweite Argument von fopen. 373 00:17:55,490 --> 00:17:57,060 Du hast Recht - der Name der Datei ist das erste Argument. 374 00:17:57,060 --> 00:18:01,620 Aber das zweite Argument von fopen sind Regel drei Saiten und - ja. 375 00:18:01,620 --> 00:18:02,210 Aleja. 376 00:18:02,210 --> 00:18:03,490 >> ALEJA: A für Anfügen. 377 00:18:03,490 --> 00:18:06,840 >> JASON HIRSCHHORN: A, wenn Sie wollen hängen, um eine Datei, die bereits vorhanden ist. 378 00:18:06,840 --> 00:18:07,810 >> STUDENT 5: R für Lese. 379 00:18:07,810 --> 00:18:09,930 >> JASON HIRSCHHORN: R, wenn Sie will aus einer Datei zu lesen. 380 00:18:09,930 --> 00:18:10,670 >> STUDENT 6: W für Schreiben. 381 00:18:10,670 --> 00:18:12,840 >> JASON HIRSCHHORN: Und wenn Sie w wollen, in eine Datei zu schreiben. 382 00:18:12,840 --> 00:18:17,570 Also in diesem Fall, wir schreiben zu der Datei, so haben wir w. 383 00:18:17,570 --> 00:18:22,360 Sie öffnen es, haben Sie auch zum Speichern der Datei irgendwo, und das ist mit der 384 00:18:22,360 --> 00:18:26,000 Code auf der linken Seite von der Zuweisungsoperator - 385 00:18:26,000 --> 00:18:31,220 Ich erstelle einen Zeiger auf eine Datei genannt wird, in diesem Fall benötigt. 386 00:18:31,220 --> 00:18:36,070 >> Wir sind nicht zu kümmern, was diese alle Kappen FILE Sache ist. 387 00:18:36,070 --> 00:18:40,600 Es genügt zu sagen, es ist ein lang Strom von Nullen und Einsen. 388 00:18:40,600 --> 00:18:44,970 Und das ist, wie wir zu gehen betreiben und zu verstehen. 389 00:18:44,970 --> 00:18:47,300 >> Das nächste, was wir tun müssen - und Das ist unglaublich wichtig - 390 00:18:47,300 --> 00:18:49,070 wenn Sie eine Datei öffnen - 391 00:18:49,070 --> 00:18:54,250 in der Tat, wenn Sie malloc nennen, für Beispiel und etwas Speicher und versuchen 392 00:18:54,250 --> 00:18:57,980 und speichern Sie es in einem Zeiger, kann man immer prüfen wollen, um sicherzustellen, dass die 393 00:18:57,980 --> 00:19:00,230 Funktion nicht null zurück. 394 00:19:00,230 --> 00:19:05,230 >> Also in diesem Fall werden wir die Überprüfung zu machen sicher, dass wir das tatsächlich geöffnet 395 00:19:05,230 --> 00:19:10,230 Datei korrekt, und es gab kein Fehler im Programm. 396 00:19:10,230 --> 00:19:15,160 Weiter, sobald wir überprüft, um sicherzustellen, dass dass wir eine Arbeitsdatei, können wir 397 00:19:15,160 --> 00:19:18,520 schreiben oder lesen aus, oder hängen Sie auf die Datei. 398 00:19:18,520 --> 00:19:24,270 In diesem Fall bin ich einfach Druck eine Zeile in diese Datei. 399 00:19:24,270 --> 00:19:25,450 >> Wie kann ich das wissen? 400 00:19:25,450 --> 00:19:27,990 Nun, ich bin mit dieser Funktion fprintf genannt. 401 00:19:27,990 --> 00:19:30,970 Alle Funktionen werden Sie mit beim Schreiben oder Lesen, oder 402 00:19:30,970 --> 00:19:34,950 Manipulieren von Dateien ähnlich zu sein Funktionen, die Sie bisher gesehen haben, aber 403 00:19:34,950 --> 00:19:38,420 beginnen mit dem Buchstaben F, Stehen für Datei. 404 00:19:38,420 --> 00:19:43,440 Und fprintf, im Gegensatz zu unseren normalen Druck app, nimmt ein zusätzliches Argument, 405 00:19:43,440 --> 00:19:47,800 und das ist die Datei, in der Sie um diese Zeile zu drucken. 406 00:19:47,800 --> 00:19:50,640 >> Ich habe nichts zu das Recht der ohai. 407 00:19:50,640 --> 00:19:52,860 Ich habe nicht die dritte Argument von printf - 408 00:19:52,860 --> 00:19:57,030 oder das zweite Argument von printf, die dritte Argument fprintf, weil ich 409 00:19:57,030 --> 00:19:59,480 haben keine Platzhalter hier. 410 00:19:59,480 --> 00:20:01,070 Ich bin nicht wie alle Variablen. 411 00:20:01,070 --> 00:20:06,070 Aber noch einmal, fprintf und all diese Datei Funktionen, die mit Dateien operieren 412 00:20:06,070 --> 00:20:09,820 werden in der Regel gehen, um die Datei benötigen , auf dem sie arbeitet. 413 00:20:09,820 --> 00:20:15,960 >> Schließlich ist das letzte wichtige Sache zu tun ist, um die Datei zu schließen, genau wie 414 00:20:15,960 --> 00:20:19,530 mit - wann immer wir etwas malloc, wir etwas zu befreien, damit wir nicht wollen 415 00:20:19,530 --> 00:20:22,730 haben ein Speicherleck - wir wollen unsere Datei zu schließen. 416 00:20:22,730 --> 00:20:28,180 Wenn dieses Programm beendet wurde, ohne Schließ die Datei, stehen die Chancen gar nichts gehen würde 417 00:20:28,180 --> 00:20:30,050 falsch, vor allem wenn es war eine kleine Datei. 418 00:20:30,050 --> 00:20:35,020 >> Aber es ist sicherlich eine gute Codierungsstil und Praxis, um die Datei immer nahe 419 00:20:35,020 --> 00:20:38,050 wenn Sie es fertig. 420 00:20:38,050 --> 00:20:43,630 Das ist also die Grundlagen der Datei-I / O. Sie haben wahrscheinlich gesehen, dass vor, oder 421 00:20:43,630 --> 00:20:45,710 sah es in diesem fantastischen kurz. 422 00:20:45,710 --> 00:20:48,410 Hat jemand irgendwelche Fragen haben, bevor wir in eine Praxis gehen Codierung 423 00:20:48,410 --> 00:20:51,800 Probleme, über Datei-I / O oder die Schritte, die ich ging einfach vorbei? 424 00:20:51,800 --> 00:21:00,198 425 00:21:00,198 --> 00:21:03,162 >> [SCHREIBT SOUNDS] 426 00:21:03,162 --> 00:21:04,150 >> JASON HIRSCHHORN: Haben Sie habe eine Frage, Avi? 427 00:21:04,150 --> 00:21:04,660 >> AVI: Nein. 428 00:21:04,660 --> 00:21:04,740 >> JASON HIRSCHHORN: OK. 429 00:21:04,740 --> 00:21:06,746 Ich werde einen anderen warten 7 Sekunden. 430 00:21:06,746 --> 00:21:07,590 [Lacht] 431 00:21:07,590 --> 00:21:08,620 Das ist ein wirklich guter Tipp. 432 00:21:08,620 --> 00:21:10,750 Ihr seid einfach nicht, wie Fragen zu stellen. 433 00:21:10,750 --> 00:21:11,660 Das ist in Ordnung. 434 00:21:11,660 --> 00:21:12,330 OK. 435 00:21:12,330 --> 00:21:17,620 Also unsere erste Praxis Problem ist, wir sind gehen, um die Funktion zu duplizieren 436 00:21:17,620 --> 00:21:22,330 ein Kommandozeilen-Tool, das Sie wahrscheinlich Kopie - vor verwendet - 437 00:21:22,330 --> 00:21:23,500 die Kopie-Tool. 438 00:21:23,500 --> 00:21:28,050 Wenn Sie geben cp und dann geben sie zwei Argumente in die Klemme, können Sie 439 00:21:28,050 --> 00:21:28,980 Kopieren einer Datei. 440 00:21:28,980 --> 00:21:31,220 Und das ist, was wir bis jetzt schreiben. 441 00:21:31,220 --> 00:21:35,830 >> Also noch einmal, Ablesen dieser Folie, würde ich Sie ein Programm, das dauert zu schreiben 442 00:21:35,830 --> 00:21:38,130 zwei und nur zwei Befehlszeilen Argumente - 443 00:21:38,130 --> 00:21:40,750 eine Quelldatei und eine Zieldatei - 444 00:21:40,750 --> 00:21:44,590 und kopiert den Inhalt des Quell Datei in die Zieldatei 445 00:21:44,590 --> 00:21:46,960 ein Byte zu einem Zeitpunkt. 446 00:21:46,960 --> 00:21:48,510 Also das ist eine Menge, um zu bitten. 447 00:21:48,510 --> 00:21:52,200 >> Auch hier ist ein guter Ansatz, dies zu nicht direkt zu den C-Code, aber 448 00:21:52,200 --> 00:21:54,280 brechen sie in ein paar Schritte. 449 00:21:54,280 --> 00:21:58,400 Zuerst denken über die Logik - genau was ich frage, was Sie tun - 450 00:21:58,400 --> 00:22:00,620 und zu verstehen, die alle Schritte, um dieses Problem. 451 00:22:00,620 --> 00:22:04,410 Nicht in C, nur in einigen Pseudocode, oder sogar ein mentales Modell 452 00:22:04,410 --> 00:22:06,030 , was los ist. 453 00:22:06,030 --> 00:22:10,050 >> Weiter, sobald Sie den Pseudocode nach unten, herauszufinden, wie der Pseudocode 454 00:22:10,050 --> 00:22:14,600 Karten auf Werkzeuge und Dinge, die wir haben gelernt, in C verwenden 455 00:22:14,600 --> 00:22:19,070 >> Und schließlich, einmal haben Sie alles, was zusammen, können Sie das Problem zu codieren. 456 00:22:19,070 --> 00:22:23,370 Werden 5 bis 10 Minuten arbeiten an diesem Problem. 457 00:22:23,370 --> 00:22:25,800 Ich werde die Anweisungen setzen wieder in einer Sekunde. 458 00:22:25,800 --> 00:22:27,990 Und dann werden wir gehen über der Pseudocode und Code 459 00:22:27,990 --> 00:22:29,230 sie als Gruppe zu leben. 460 00:22:29,230 --> 00:22:31,640 >> Wenn Sie Fragen haben, während Sie Arbeit an diesem, können Sie erhöhen 461 00:22:31,640 --> 00:22:34,260 Ihre Hand, und ich werde kommen um und beantworten. 462 00:22:34,260 --> 00:22:37,020 463 00:22:37,020 --> 00:22:39,330 >> STUDENT 7: Kann ich swipe ein Stück Papier? 464 00:22:39,330 --> 00:22:41,537 >> JASON HIRSCHHORN: Was ist los? 465 00:22:41,537 --> 00:26:46,047 466 00:26:46,047 --> 00:26:48,043 >> [SCHREIBT SOUNDS] 467 00:26:48,043 --> 00:26:48,730 >> JASON HIRSCHHORN: OK. 468 00:26:48,730 --> 00:26:51,710 Lassen Sie uns über die Pseudo gehen zuerst, und dann werde ich Ihnen ein paar mehr 469 00:26:51,710 --> 00:26:52,960 Minuten zu beenden Codierung. 470 00:26:52,960 --> 00:26:55,540 471 00:26:55,540 --> 00:26:58,650 >> Wer möchte mich beginnen mit der ersten Zeile 472 00:26:58,650 --> 00:27:00,030 Pseudocode für diese Funktion? 473 00:27:00,030 --> 00:27:03,330 474 00:27:03,330 --> 00:27:05,740 >> STUDENT 8: Stellen Sie sicher, dass Sie wurden zwei Dateien angegeben. 475 00:27:05,740 --> 00:27:06,990 >> JASON HIRSCHHORN: OK. 476 00:27:06,990 --> 00:27:21,270 477 00:27:21,270 --> 00:27:22,990 Und wenn wir nicht? 478 00:27:22,990 --> 00:27:25,974 >> STUDENT 8: Ich würde 0 zurück. 479 00:27:25,974 --> 00:27:27,872 >> JASON HIRSCHHORN: Sollten wir 0 zurück? 480 00:27:27,872 --> 00:27:30,182 >> STUDENT 8: Rückkehr ein - 481 00:27:30,182 --> 00:27:30,650 Stanzen. 482 00:27:30,650 --> 00:27:30,850 Entschuldigung. 483 00:27:30,850 --> 00:27:31,210 >> JASON HIRSCHHORN: Ja. 484 00:27:31,210 --> 00:27:32,710 Wahrscheinlich nicht null. 485 00:27:32,710 --> 00:27:34,680 Da 0 bedeutet, alles war gut. 486 00:27:34,680 --> 00:27:35,030 OK. 487 00:27:35,030 --> 00:27:36,730 Also das ist die erste Zeile von Pseudocode. 488 00:27:36,730 --> 00:27:38,715 Wer hat die zweite Zeile der Pseudocode? 489 00:27:38,715 --> 00:27:40,630 >> STUDENT 9: Öffnen der Dateien? 490 00:27:40,630 --> 00:27:41,880 >> JASON HIRSCHHORN: Öffnen Sie beide Dateien. 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 >> STUDENT 10: Überprüfen Sie, wenn die Datei NULL? 494 00:27:52,850 --> 00:28:10,906 495 00:28:10,906 --> 00:28:12,580 >> JASON HIRSCHHORN: Überprüfen Sie, sicher, dass weder NULL sind. 496 00:28:12,580 --> 00:28:15,800 Nebenbei - 497 00:28:15,800 --> 00:28:17,540 Schrägstrich 0 - 498 00:28:17,540 --> 00:28:18,887 ist, dass NULL? 499 00:28:18,887 --> 00:28:20,080 >> STUDENT 11: Nein. 500 00:28:20,080 --> 00:28:21,190 >> JASON HIRSCHHORN: Das ist nicht NULL. 501 00:28:21,190 --> 00:28:23,400 Das nennt der NULL-Terminator. 502 00:28:23,400 --> 00:28:25,580 Es ist eigentlich nur mit einem l geschrieben. 503 00:28:25,580 --> 00:28:28,580 So etwas gegen die Überprüfung, dass - das ist eigentlich ein Zeichen - 504 00:28:28,580 --> 00:28:31,710 so, dass etwas gegen die Überprüfung wird nicht die gleiche wie die Überprüfung, ob es 505 00:28:31,710 --> 00:28:32,690 gleich NULL. 506 00:28:32,690 --> 00:28:34,100 >> Und einige Leute - 507 00:28:34,100 --> 00:28:36,040 auf ihrem Quiz und ihr Problem Sets - haben die bekam 508 00:28:36,040 --> 00:28:36,890 zwei von denen zu verwechseln. 509 00:28:36,890 --> 00:28:38,830 Aber die zwei von denen sind in der Tat anders. 510 00:28:38,830 --> 00:28:40,220 Ein endet einen String - 511 00:28:40,220 --> 00:28:43,210 einer ist ein Zeiger auf 0 gesetzt. 512 00:28:43,210 --> 00:28:46,490 >> STUDENT 12: Warum würden Sie nicht zu überprüfen, stellen Sie sicher, dass die Dateien nicht NULL 513 00:28:46,490 --> 00:28:48,670 bevor Sie sie öffnen? 514 00:28:48,670 --> 00:28:54,772 >> JASON HIRSCHHORN: Also spart offen etwas in dieser Datei. 515 00:28:54,772 --> 00:28:57,780 Und wenn Sie wieder hier gehen - 516 00:28:57,780 --> 00:28:59,520 so dass diese Linie - fopen - 517 00:28:59,520 --> 00:29:05,300 geben Sie eine Adresse und speichern die Adresse in der Datei, wenn es funktioniert. 518 00:29:05,300 --> 00:29:07,650 Wenn es nicht funktioniert, ist es NULL speichern - 519 00:29:07,650 --> 00:29:08,020 >> STUDENT 12: Oh. 520 00:29:08,020 --> 00:29:08,180 OK. 521 00:29:08,180 --> 00:29:08,500 Haben Sie. 522 00:29:08,500 --> 00:29:09,050 >> JASON HIRSCHHORN: In Datei. 523 00:29:09,050 --> 00:29:11,990 Sie können also nicht auf NULL überprüfen bevor Sie sie geöffnet haben. 524 00:29:11,990 --> 00:29:13,520 NULL bedeutet, etwas nicht richtig. 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 So stellen Sie sicher, weder heißt? 528 00:29:22,590 --> 00:29:23,200 Oder sind? 529 00:29:23,200 --> 00:29:23,770 Was denken wir? 530 00:29:23,770 --> 00:29:24,310 Wir werden mit dem gehen. 531 00:29:24,310 --> 00:29:24,520 >> STUDENT 13: Ist. 532 00:29:24,520 --> 00:29:25,020 >> JASON HIRSCHHORN: Ist? 533 00:29:25,020 --> 00:29:25,930 Weder ist? 534 00:29:25,930 --> 00:29:26,350 >> STUDENT 13: Ist. 535 00:29:26,350 --> 00:29:26,390 >> JASON HIRSCHHORN: OK. 536 00:29:26,390 --> 00:29:28,510 Wir scheinen einige haben Konsens, dass. 537 00:29:28,510 --> 00:29:30,520 Weder ist NULL. 538 00:29:30,520 --> 00:29:32,250 OK, nächste Zeile des Pseudocode. 539 00:29:32,250 --> 00:29:33,600 Wer hat mir eine noch nicht gegeben? 540 00:29:33,600 --> 00:29:37,350 541 00:29:37,350 --> 00:29:38,295 Wir werden auf dich warten. 542 00:29:38,295 --> 00:29:39,020 Ja. 543 00:29:39,020 --> 00:29:40,895 >> STUDENT 14: Sie haben zu lesen von der ersten Datei? 544 00:29:40,895 --> 00:29:42,290 >> JASON HIRSCHHORN: OK. 545 00:29:42,290 --> 00:29:46,240 >> STUDENT 14: Oder wir verwenden fscanf oder so etwas wie, dass die erste Datei? 546 00:29:46,240 --> 00:29:50,650 >> JASON HIRSCHHORN: Also wir wollen von der ersten Datei zu lesen und - 547 00:29:50,650 --> 00:29:51,900 sagen wir, dass hier richtig. 548 00:29:51,900 --> 00:30:00,600 549 00:30:00,600 --> 00:30:01,880 Lesen Sie aus der Quelldatei. 550 00:30:01,880 --> 00:30:05,370 Und dann, was machen wir, nachdem wir tun aus der Quelldatei zu lesen? 551 00:30:05,370 --> 00:30:06,620 Jemand anderes? 552 00:30:06,620 --> 00:30:09,150 553 00:30:09,150 --> 00:30:12,190 >> STUDENT 15: Schreiben in die Zieldatei? 554 00:30:12,190 --> 00:30:22,080 555 00:30:22,080 --> 00:30:25,620 >> JASON HIRSCHHORN: Wir schreiben die Zieldatei und - 556 00:30:25,620 --> 00:30:26,210 OK. 557 00:30:26,210 --> 00:30:30,030 Was sonst fehlt uns? 558 00:30:30,030 --> 00:30:32,460 Jemand anderes, der mir nicht gegeben hat Codezeile noch - der Pseudocode. 559 00:30:32,460 --> 00:30:33,510 Ja. 560 00:30:33,510 --> 00:30:36,540 >> STUDENT 16: Vielleicht können Sie immer überprüfen ob es etwas zu lesen, 561 00:30:36,540 --> 00:30:37,970 wie die nächste Zeile? 562 00:30:37,970 --> 00:30:39,550 Das sind, wie in der nächsten Zeile, sehen, wenn es vorhanden ist. 563 00:30:39,550 --> 00:30:40,660 >> [ELECTRONIC BEEP] 564 00:30:40,660 --> 00:30:41,095 >> JASON HIRSCHHORN: Oops. 565 00:30:41,095 --> 00:30:43,120 Das ist mein Journaling-Software. 566 00:30:43,120 --> 00:30:43,580 Ja? 567 00:30:43,580 --> 00:30:44,960 >> STUDENT 16: Ja. 568 00:30:44,960 --> 00:30:48,940 >> JASON HIRSCHHORN: So geben es mir noch einmal. 569 00:30:48,940 --> 00:30:51,640 >> STUDENT 16: Prüfen Sie, ob es immer noch eine nächste Zeile aus der 570 00:30:51,640 --> 00:30:52,920 Quelldatei zu lesen. 571 00:30:52,920 --> 00:30:53,500 >> JASON HIRSCHHORN: OK. 572 00:30:53,500 --> 00:30:56,060 Also haben wir nicht gerade liest Zeilen - Lesen von Bytes wurden hier - 573 00:30:56,060 --> 00:30:57,590 aber du bist richtig. 574 00:30:57,590 --> 00:31:00,040 Wir wollen zu lesen und zu schreiben, bis gibt es keine weiteren Bytes. 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 Und so sollte diese wirklich eingerückt sein ein bisschen, weil sie unter da sind. 578 00:31:16,940 --> 00:31:17,470 Right? 579 00:31:17,470 --> 00:31:20,620 Bis wir von Bytes sind, werden wir aus der Quelldatei lesen und schreiben 580 00:31:20,620 --> 00:31:22,160 in die Zieldatei. 581 00:31:22,160 --> 00:31:24,510 >> Und dann, was ist das letzte Linie der Pseudocode? 582 00:31:24,510 --> 00:31:26,380 Jemand, der nicht gegeben ist mir etwas vor. 583 00:31:26,380 --> 00:31:29,270 584 00:31:29,270 --> 00:31:30,260 >> STUDENT 17: Schließen der Dateien? 585 00:31:30,260 --> 00:31:31,510 >> JASON HIRSCHHORN: Genau. 586 00:31:31,510 --> 00:31:36,370 587 00:31:36,370 --> 00:31:37,450 Schließen Sie die Dateien. 588 00:31:37,450 --> 00:31:38,400 So gibt es unsere Pseudocode. 589 00:31:38,400 --> 00:31:41,870 Ich werde den Pseudocode kannst gedit, und in ein paar Minuten haben wir 590 00:31:41,870 --> 00:31:44,626 wird diese zusammen zu codieren. 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 Lassen Sie uns als Gruppe zu beginnen. 594 00:33:58,290 --> 00:33:59,940 Nishant, habe ich meine neue Datei. 595 00:33:59,940 --> 00:34:01,130 Ich habe gerade dieses oben geöffnet. 596 00:34:01,130 --> 00:34:01,880 Untitled Dokument ein. 597 00:34:01,880 --> 00:34:05,490 Was ist das erste, was ich tun soll? 598 00:34:05,490 --> 00:34:07,040 >> Nishant: Fügen Bibliotheken? 599 00:34:07,040 --> 00:34:08,219 >> JASON HIRSCHHORN: OK. 600 00:34:08,219 --> 00:34:11,070 Welche Bibliotheken? 601 00:34:11,070 --> 00:34:17,570 >> Nishant: stdio.h, stdlib.h, glaube ich? 602 00:34:17,570 --> 00:34:18,000 >> JASON HIRSCHHORN: OK. 603 00:34:18,000 --> 00:34:21,592 Was ist für stdlib? 604 00:34:21,592 --> 00:34:23,010 >> Nishant: Ich habe vergessen. 605 00:34:23,010 --> 00:34:23,219 >> JASON HIRSCHHORN: OK. 606 00:34:23,219 --> 00:34:24,179 So gehören Stdio. 607 00:34:24,179 --> 00:34:28,630 Was soll ich tun, noch bevor Ich Programmieren beginnen? 608 00:34:28,630 --> 00:34:29,710 >> Nishant: Schreiben Sie eine Kopfzeile? 609 00:34:29,710 --> 00:34:31,830 >> JASON HIRSCHHORN: Wie bekomme ich es farbig? 610 00:34:31,830 --> 00:34:34,060 >> [Zwischen VOICES] 611 00:34:34,060 --> 00:34:35,040 >> Nishant: Wie bekommt man es farbig? 612 00:34:35,040 --> 00:34:38,060 >> JASON HIRSCHHORN: Wie ich Farbcodierung? 613 00:34:38,060 --> 00:34:38,570 >> Nishant: Ich weiß es nicht. 614 00:34:38,570 --> 00:34:38,830 Oh. 615 00:34:38,830 --> 00:34:39,389 Speichern. 616 00:34:39,389 --> 00:34:39,929 >> JASON HIRSCHHORN: Sparen. 617 00:34:39,929 --> 00:34:40,270 Ja. 618 00:34:40,270 --> 00:34:41,760 Ich sollte es als eine. C speichern. 619 00:34:41,760 --> 00:34:46,239 So speichern Sie es auf dem Desktop als cp.c. 620 00:34:46,239 --> 00:34:47,280 Süße. 621 00:34:47,280 --> 00:34:51,199 Und wenn ich voller Stil erhalten Punkte, was ich sollte 622 00:34:51,199 --> 00:34:53,085 sind an der Spitze? 623 00:34:53,085 --> 00:34:58,390 >> Nishant: Sie könnten Ihren Namen, den Namen zu schreiben des Programms, und der Zweck 624 00:34:58,390 --> 00:34:59,640 des Programms als auch? 625 00:34:59,640 --> 00:35:08,400 626 00:35:08,400 --> 00:35:10,040 >> JASON HIRSCHHORN: Sieht gut aus. 627 00:35:10,040 --> 00:35:10,470 Excellent. 628 00:35:10,470 --> 00:35:12,940 So können Sie uns perfekt ab begonnen haben. 629 00:35:12,940 --> 00:35:13,720 # Include - 630 00:35:13,720 --> 00:35:15,365 wir auch schreiben - 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 Also ich glaube, ich bin ganz eingestellt, um zu gehen. 634 00:35:33,520 --> 00:35:38,003 Wer hat die erste Codezeile für mich - oder die ersten Zeilen Code, die 635 00:35:38,003 --> 00:35:41,280 es dauert, bis unser erstes erfüllen Kommentar in Pseudocode? 636 00:35:41,280 --> 00:35:41,985 Sie. 637 00:35:41,985 --> 00:35:48,780 >> STUDENT 18: Sollte es nicht int sein argc und dann char * argv? 638 00:35:48,780 --> 00:35:49,490 >> JASON HIRSCHHORN: Ich denke, Sie haben Recht. 639 00:35:49,490 --> 00:35:56,270 Wir ändern es zur Haupt, offene paren int, int argc, Komma, char * argv? 640 00:35:56,270 --> 00:35:57,150 Wie das? 641 00:35:57,150 --> 00:35:57,410 >> STUDENT 18: Träger. 642 00:35:57,410 --> 00:35:58,260 >> JASON HIRSCHHORN: Träger. 643 00:35:58,260 --> 00:35:59,860 Klammer auf, Klammer zu, Nähe Elternteil. 644 00:35:59,860 --> 00:36:00,240 Perfect. 645 00:36:00,240 --> 00:36:02,160 Jetzt kann ich Kommandozeilen-Argumente zu nehmen. 646 00:36:02,160 --> 00:36:02,430 OK. 647 00:36:02,430 --> 00:36:04,250 Stellen Sie sicher, wir sind zwei Dateien angegeben. 648 00:36:04,250 --> 00:36:07,905 Sie können mir das auch zu geben. 649 00:36:07,905 --> 00:36:09,180 >> STUDENT 18: Wenn argc - 650 00:36:09,180 --> 00:36:11,060 dieses nicht gleich drei. 651 00:36:11,060 --> 00:36:14,360 >> JASON HIRSCHHORN: Wenn offene paren argc nicht gleich drei? 652 00:36:14,360 --> 00:36:16,970 >> STUDENT 18: Ja, Sie zurück 1 oder nichts. 653 00:36:16,970 --> 00:36:17,460 >> JASON HIRSCHHORN: Es tut uns leid. 654 00:36:17,460 --> 00:36:19,120 >> STUDENT 18: Zurück 1 oder nichts. 655 00:36:19,120 --> 00:36:20,270 >> JASON HIRSCHHORN: Zurück 1. 656 00:36:20,270 --> 00:36:22,230 OK? 657 00:36:22,230 --> 00:36:22,970 Große. 658 00:36:22,970 --> 00:36:24,290 Öffnen Sie beide Dateien. 659 00:36:24,290 --> 00:36:26,160 Wer kann mir helfen, beide Dateien zu öffnen? 660 00:36:26,160 --> 00:36:28,125 Wer hat mir Code nicht gegeben noch? 661 00:36:28,125 --> 00:36:31,510 662 00:36:31,510 --> 00:36:32,320 Kurt? 663 00:36:32,320 --> 00:36:36,145 >> KURT: Also alle Kappen F-I-L-E-Sterne Quelle. 664 00:36:36,145 --> 00:36:39,390 665 00:36:39,390 --> 00:36:40,920 >> JASON HIRSCHHORN: Ich werde , nehmen Sie die Vokale. 666 00:36:40,920 --> 00:36:41,570 Die sind cool. 667 00:36:41,570 --> 00:36:42,716 Es ist wie Tumblr. 668 00:36:42,716 --> 00:36:44,610 >> STUDENT 18: Gleich fopen - 669 00:36:44,610 --> 00:36:46,612 >> JASON HIRSCHHORN: Gleich fopen? 670 00:36:46,612 --> 00:36:49,870 >> STUDENT 18: Open paren, argv, offene Bügel. 671 00:36:49,870 --> 00:36:50,055 >> JASON HIRSCHHORN: Warten. 672 00:36:50,055 --> 00:36:50,240 Entschuldigung. 673 00:36:50,240 --> 00:36:51,050 Offene paren. 674 00:36:51,050 --> 00:36:51,456 OK. 675 00:36:51,456 --> 00:36:53,080 >> STUDENT 18: Ja. 676 00:36:53,080 --> 00:36:55,110 Argv Unter ein. 677 00:36:55,110 --> 00:36:55,860 >> JASON HIRSCHHORN: Sub 1? 678 00:36:55,860 --> 00:36:56,140 >> STUDENT 18: Ja. 679 00:36:56,140 --> 00:36:58,540 Argv Klammer auf 1 - 680 00:36:58,540 --> 00:36:59,730 Ja. 681 00:36:59,730 --> 00:37:06,470 Und dann Komma, und öffnen Sie dann doppelt Zitat, r, doppelte Anführungszeichen, 682 00:37:06,470 --> 00:37:08,250 close paren, Semikolon. 683 00:37:08,250 --> 00:37:09,450 >> JASON HIRSCHHORN: Süße. 684 00:37:09,450 --> 00:37:10,950 Und was ist mit den anderen? 685 00:37:10,950 --> 00:37:16,030 >> STUDENT 18: Sehr ähnlich, aber statt von S-R-C, Sie es nennen würde D-S-T. 686 00:37:16,030 --> 00:37:17,060 >> JASON HIRSCHHORN: Oo! 687 00:37:17,060 --> 00:37:17,772 Ich mag diese. 688 00:37:17,772 --> 00:37:20,010 >> STUDENT 18: Nur D-S-T. Ja. 689 00:37:20,010 --> 00:37:23,057 Und dann argv, offene Klammer, 2. 690 00:37:23,057 --> 00:37:23,200 Ja. 691 00:37:23,200 --> 00:37:26,720 Und dann w anstelle von r. 692 00:37:26,720 --> 00:37:27,620 Ja. 693 00:37:27,620 --> 00:37:29,630 >> JASON HIRSCHHORN: Großartig. 694 00:37:29,630 --> 00:37:31,360 Weiter paar Zeilen. 695 00:37:31,360 --> 00:37:34,040 Auch, wenn jemand Dinge zu fügen hat Linien, die wir getan haben, fühlen sich frei, 696 00:37:34,040 --> 00:37:35,690 fügen Sie diese ebenfalls. 697 00:37:35,690 --> 00:37:37,520 Stellen Sie sicher, weder NULL ist. 698 00:37:37,520 --> 00:37:41,450 Wer kann mir den Code muss ich geben erfüllen diese Linie von Pseudocode? 699 00:37:41,450 --> 00:37:44,430 700 00:37:44,430 --> 00:37:45,870 Archer. 701 00:37:45,870 --> 00:37:58,645 >> Archer Wenn src gleich equals NULL oder dst gleich equals 702 00:37:58,645 --> 00:38:04,590 NULL, dann zurück - 703 00:38:04,590 --> 00:38:07,130 704 00:38:07,130 --> 00:38:07,976 >> JASON HIRSCHHORN: Was? 705 00:38:07,976 --> 00:38:08,890 >> Archer Return 2? 706 00:38:08,890 --> 00:38:09,760 >> JASON HIRSCHHORN: Return 2. 707 00:38:09,760 --> 00:38:14,400 Also, wenn offene paren src gleich ist gleich NULL, oder - 708 00:38:14,400 --> 00:38:15,590 was auch immer das thing's - Rohr? 709 00:38:15,590 --> 00:38:16,346 Rohr? 710 00:38:16,346 --> 00:38:17,140 Wir nennen Rohr. 711 00:38:17,140 --> 00:38:22,340 Rohr, Rohr, dst gleich equals NULL zurück 2. 712 00:38:22,340 --> 00:38:23,900 OK? 713 00:38:23,900 --> 00:38:26,060 Bis wir von Bytes - 714 00:38:26,060 --> 00:38:29,820 wir haben irgendwie übersprungen dieser Schritt von der Pseudocode Teil werde hier. 715 00:38:29,820 --> 00:38:31,970 >> Aber bis wir von Bytes - was klingt das wie? 716 00:38:31,970 --> 00:38:34,680 Welche Art von C-Struktur - 717 00:38:34,680 --> 00:38:36,160 aber ich glaube nicht das Wort Struktur, da werden wir beginnen mit 718 00:38:36,160 --> 00:38:37,350 dass in anderen Fällen - 719 00:38:37,350 --> 00:38:39,495 aber C-Werkzeug hört sich das aus? 720 00:38:39,495 --> 00:38:39,970 >> STUDENT 19: Eine Schleife. 721 00:38:39,970 --> 00:38:40,980 >> JASON HIRSCHHORN: Eine Schleife. 722 00:38:40,980 --> 00:38:43,060 Klingt wie eine Schleife. 723 00:38:43,060 --> 00:38:49,670 Also, wer mir die erste Zeile geben kann der Schleife Code hier richtig? 724 00:38:49,670 --> 00:38:56,320 725 00:38:56,320 --> 00:39:01,980 Sie können auch wählen, welche Art von Schleife Sie wollen, wenn Sie mir 726 00:39:01,980 --> 00:39:03,215 diese Codezeile. 727 00:39:03,215 --> 00:39:04,150 Es gibt drei Arten. 728 00:39:04,150 --> 00:39:06,530 Sie erhalten zu holen. 729 00:39:06,530 --> 00:39:08,080 Ich würde vorschlagen, eine von denen. 730 00:39:08,080 --> 00:39:08,410 Avi. 731 00:39:08,410 --> 00:39:09,230 Welchen wollen Sie? 732 00:39:09,230 --> 00:39:09,960 >> AVI: FÜR. 733 00:39:09,960 --> 00:39:11,460 >> JASON HIRSCHHORN: FOR. 734 00:39:11,460 --> 00:39:15,180 >> AVI: int i gleich Null ist. 735 00:39:15,180 --> 00:39:17,360 >> JASON HIRSCHHORN: OK. 736 00:39:17,360 --> 00:39:18,570 >> AVI: Dieser Teil ich bin mir nicht sicher. 737 00:39:18,570 --> 00:39:29,080 Aber ich weniger als Größe von Sterne-Quelle? 738 00:39:29,080 --> 00:39:31,128 Ich bin mir nicht sicher. 739 00:39:31,128 --> 00:39:32,580 >> JASON HIRSCHHORN: OK. 740 00:39:32,580 --> 00:39:35,870 >> AVI: Weil Sie wollen, dass die Größe einer Datei, oder? 741 00:39:35,870 --> 00:39:41,090 >> JASON HIRSCHHORN: Also das wird wahrscheinlich nicht geben Sie die Größe des tatsächlichen 742 00:39:41,090 --> 00:39:43,010 Datei in Bytes. 743 00:39:43,010 --> 00:39:47,680 Also, was sollten wir sonst tun? 744 00:39:47,680 --> 00:39:48,810 Was eine andere Art von Schleife? 745 00:39:48,810 --> 00:39:50,180 Oder sollten wir bleiben mit der FOR-Schleife? 746 00:39:50,180 --> 00:39:55,350 747 00:39:55,350 --> 00:39:57,900 >> STUDENT 20: Können Sie eine while-Schleife zu tun? 748 00:39:57,900 --> 00:40:01,350 Und dann, was Sie tun würden, ist du würdest - 749 00:40:01,350 --> 00:40:03,930 weil wir ein char * für die Datei. 750 00:40:03,930 --> 00:40:07,950 Also, wenn wir nur halten, dass Erhöhen bis wir würden das NULL-Zeichen finden Sie unter 751 00:40:07,950 --> 00:40:08,500 das Ende vom Lied? 752 00:40:08,500 --> 00:40:11,130 Oder nein, das ist nicht, wie die Dateien zu arbeiten? 753 00:40:11,130 --> 00:40:14,300 >> JASON HIRSCHHORN: Also wir halten können Erhöhen des char * 754 00:40:14,300 --> 00:40:16,340 bis wir die NULL - 755 00:40:16,340 --> 00:40:18,580 >> STUDENT 20: Im Wesentlichen weitermachen Zeichen für Zeichen, bis wir treffen 756 00:40:18,580 --> 00:40:21,250 das Ende der Datei. 757 00:40:21,250 --> 00:40:21,600 >> JASON HIRSCHHORN: Ja. 758 00:40:21,600 --> 00:40:22,560 Also das ist, was wir tun wollen. 759 00:40:22,560 --> 00:40:24,545 Wir wollen das Lesen, Charakter behalten von Zeichen, bis wir bekommen 760 00:40:24,545 --> 00:40:25,080 das Ende der Datei. 761 00:40:25,080 --> 00:40:25,375 >> STUDENT 20: Ja. 762 00:40:25,375 --> 00:40:25,860 Suchen - 763 00:40:25,860 --> 00:40:28,540 was ist der End-oder Stop-Schild am Ende einer Textdatei. 764 00:40:28,540 --> 00:40:28,620 >> JASON HIRSCHHORN: OK. 765 00:40:28,620 --> 00:40:30,140 Also, wenn wir an das Ende der Datei erhalten - wie wir wissen, haben wir erreicht haben 766 00:40:30,140 --> 00:40:33,200 das Ende einer Datei? 767 00:40:33,200 --> 00:40:34,710 Wenn ich rufe - 768 00:40:34,710 --> 00:40:35,910 also lasst uns einen Schritt zurück. 769 00:40:35,910 --> 00:40:37,550 Was ist eine Funktion? 770 00:40:37,550 --> 00:40:39,360 Lassen Sie uns auf dieser Linie gehen hier richtig. 771 00:40:39,360 --> 00:40:40,630 Lesen Sie aus der Quelldatei. 772 00:40:40,630 --> 00:40:41,880 Wer kann mir diese Zeile Code geben? 773 00:40:41,880 --> 00:40:45,592 774 00:40:45,592 --> 00:40:47,590 >> STUDENT 21: fscanf? 775 00:40:47,590 --> 00:40:49,110 >> JASON HIRSCHHORN: fscanf. 776 00:40:49,110 --> 00:40:49,510 OK. 777 00:40:49,510 --> 00:40:52,240 Was, wenn ich zu lesen, sehr gesagt, ein Byte? 778 00:40:52,240 --> 00:40:55,012 779 00:40:55,012 --> 00:40:56,860 >> STUDENT 21: Ich weiß es nicht. 780 00:40:56,860 --> 00:40:57,110 >> JASON HIRSCHHORN: OK. 781 00:40:57,110 --> 00:40:59,380 Noch einfacher als fscanf - was ist ein - 782 00:40:59,380 --> 00:41:01,890 Ich möchte aus einer Quelldatei zu lesen? 783 00:41:01,890 --> 00:41:03,720 Lesen aus einer Quelldatei. 784 00:41:03,720 --> 00:41:04,850 Was ist eine Funktion - ja. 785 00:41:04,850 --> 00:41:05,380 >> STUDENT 22: Es ist fread? 786 00:41:05,380 --> 00:41:06,070 >> JASON HIRSCHHORN: Fread. 787 00:41:06,070 --> 00:41:07,550 Ich denke, dass wir mit Stick dass man für den Moment. 788 00:41:07,550 --> 00:41:10,380 789 00:41:10,380 --> 00:41:13,650 Welche Argumente hat fread nehmen? 790 00:41:13,650 --> 00:41:17,410 >> STUDENT 22: Wahrscheinlich der Dateityp, und dann Position in der Datei? 791 00:41:17,410 --> 00:41:19,550 >> JASON HIRSCHHORN: Was kann ich geben hier um herauszufinden, welche Art von Argumenten 792 00:41:19,550 --> 00:41:20,950 fread nimmt? 793 00:41:20,950 --> 00:41:23,710 >> Mehrere Schüler: Mann fread. 794 00:41:23,710 --> 00:41:24,740 >> JASON HIRSCHHORN: Mann fread und fwrite. 795 00:41:24,740 --> 00:41:25,980 Sieht aus wie sie zusammen hängen. 796 00:41:25,980 --> 00:41:29,589 So fread nimmt, wie viele Argumente? 797 00:41:29,589 --> 00:41:30,920 >> STUDENT 23: Four. 798 00:41:30,920 --> 00:41:32,690 >> JASON HIRSCHHORN: Es dauert vier Argumente. 799 00:41:32,690 --> 00:41:41,100 Es dauert einen Zeiger, eine Größe, und das Ding, das ist seltsam, und einige Datei. 800 00:41:41,100 --> 00:41:42,000 OK? 801 00:41:42,000 --> 00:41:43,990 Lassen Sie uns darüber lesen Sie hier. 802 00:41:43,990 --> 00:41:49,370 "Die Funktion fread liest n memb Elemente von Daten, jede Größe bytes 803 00:41:49,370 --> 00:41:53,840 lang, aus dem Strom, auf den Stream und speichert sie in der Lage 804 00:41:53,840 --> 00:41:56,170 durch den Zeiger angegeben. " 805 00:41:56,170 --> 00:41:57,960 >> Also vier Argumente. 806 00:41:57,960 --> 00:42:04,510 Warum ich nicht einfach kopieren Sie diese, und fügen Sie es gleich hier. 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 Also, wer kann beginnen Ausfüllen diese Argumente für mich? 810 00:42:13,673 --> 00:42:15,840 Avi. 811 00:42:15,840 --> 00:42:17,720 >> AVI: Nehmen Sie die Leere. 812 00:42:17,720 --> 00:42:20,530 Setzen Sie einfach src. 813 00:42:20,530 --> 00:42:23,142 Nehmen Sie Zeiger und den Stern. 814 00:42:23,142 --> 00:42:26,102 Setzen src. 815 00:42:26,102 --> 00:42:27,050 Dann - 816 00:42:27,050 --> 00:42:28,500 >> JASON HIRSCHHORN: Also ich werde aufhören Sie gibt, denn das ist falsch. 817 00:42:28,500 --> 00:42:32,590 818 00:42:32,590 --> 00:42:34,710 Du hast Recht mit src, aber wo soll src gehen? 819 00:42:34,710 --> 00:42:35,960 >> [Zwischen VOICES] 820 00:42:35,960 --> 00:42:38,976 821 00:42:38,976 --> 00:42:41,610 >> JASON HIRSCHHORN: Es sollte gehen hier. 822 00:42:41,610 --> 00:42:43,790 Das ist der src - unsere src ist ein Typ. 823 00:42:43,790 --> 00:42:44,610 Lassen Sie uns hier. 824 00:42:44,610 --> 00:42:49,610 Dies verlangt nach einem Typ FILE *, wir tatsächlich in der Regel sehen sie so. 825 00:42:49,610 --> 00:42:57,630 Also das verlangt nach einem Argument von Typ FILE * genannt Bach, der src ist. 826 00:42:57,630 --> 00:42:58,480 OK? 827 00:42:58,480 --> 00:43:00,410 >> Welche Größe der Dinge zu tun wir wollen, zu lesen? 828 00:43:00,410 --> 00:43:03,340 Habe ich Ihnen diese in der Problembeschreibung. 829 00:43:03,340 --> 00:43:04,370 >> TEILNEHMER 24: ein Byte zu einem Zeitpunkt. 830 00:43:04,370 --> 00:43:05,340 >> JASON HIRSCHHORN: Ein Byte. 831 00:43:05,340 --> 00:43:08,205 Wie groß ist ein Byte? 832 00:43:08,205 --> 00:43:11,642 Seine Größe ist in Bytes, also was kann ich genau dort? 833 00:43:11,642 --> 00:43:12,910 >> STUDENT 25: One. 834 00:43:12,910 --> 00:43:14,730 >> JASON HIRSCHHORN: Eins. 835 00:43:14,730 --> 00:43:17,020 Richtig. 836 00:43:17,020 --> 00:43:19,940 Seine Größe ist in der Einheit Byte, 1, so ist 1 Byte. 837 00:43:19,940 --> 00:43:22,284 Wie viele will ich zu einer Zeit, zu lesen. 838 00:43:22,284 --> 00:43:23,520 >> STUDENT 26: One? 839 00:43:23,520 --> 00:43:24,270 >> JASON HIRSCHHORN: Eine Sache. 840 00:43:24,270 --> 00:43:28,540 Ich möchte eine Sache der Größe lesen 1, einen Bissen zu einer Zeit. 841 00:43:28,540 --> 00:43:32,110 Und wo ich es, wenn ich es gelesen? 842 00:43:32,110 --> 00:43:35,050 843 00:43:35,050 --> 00:43:36,510 >> STUDENT 27: Reiseziel? 844 00:43:36,510 --> 00:43:39,270 >> JASON HIRSCHHORN: Also ich kann nicht es gerade in Ziel. 845 00:43:39,270 --> 00:43:40,800 >> STUDENT 28: Sie sind gonna put in einem dritten Zeiger? 846 00:43:40,800 --> 00:43:41,780 >> STUDENT 27: Um das Ziel. 847 00:43:41,780 --> 00:43:42,270 >> JASON HIRSCHHORN: OK. 848 00:43:42,270 --> 00:43:42,630 Ja. 849 00:43:42,630 --> 00:43:46,820 >> STUDENT 29: Sie können so etwas zu erklären, wirken als ein Zwischenspeicher früher. 850 00:43:46,820 --> 00:43:47,350 >> JASON HIRSCHHORN: OK. 851 00:43:47,350 --> 00:43:50,080 Gib mir, dass. 852 00:43:50,080 --> 00:43:53,930 >> STUDENT 29: Eine weitere Datei Zeiger, vielleicht? 853 00:43:53,930 --> 00:43:54,220 >> JASON HIRSCHHORN: OK. 854 00:43:54,220 --> 00:43:55,585 Also das ist nichtig star - 855 00:43:55,585 --> 00:43:57,750 es ist eine Art Leere Sterne, damit es nicht muss ein Dateizeiger sein. 856 00:43:57,750 --> 00:44:02,520 Und wenn ich lese ein Byte, wo wäre ein guter Ort sein 857 00:44:02,520 --> 00:44:03,850 ein Byte zu speichern? 858 00:44:03,850 --> 00:44:04,660 >> STUDENT 29: Ein Array? 859 00:44:04,660 --> 00:44:05,770 >> JASON HIRSCHHORN: Ein Array. 860 00:44:05,770 --> 00:44:07,730 OK. 861 00:44:07,730 --> 00:44:14,040 Und was es sonst noch etwas, das ist Größe nur ein Byte? 862 00:44:14,040 --> 00:44:16,980 863 00:44:16,980 --> 00:44:18,060 >> STUDENT 30: Ein char *? 864 00:44:18,060 --> 00:44:18,530 >> STUDENT 29: Ja. 865 00:44:18,530 --> 00:44:19,880 >> JASON HIRSCHHORN: Ein char * ist ein Byte. 866 00:44:19,880 --> 00:44:20,440 >> STUDENT 29: Ein char. 867 00:44:20,440 --> 00:44:21,810 >> JASON HIRSCHHORN: Ein char ist ein Byte. 868 00:44:21,810 --> 00:44:22,920 Right? 869 00:44:22,920 --> 00:44:26,740 So nennen wir diesen Puffer ist eine generische Namen für diese Dinge zu speichern verwendet 870 00:44:26,740 --> 00:44:27,910 vorübergehend etwas. 871 00:44:27,910 --> 00:44:30,880 So erstelle ich einen Puffer. 872 00:44:30,880 --> 00:44:31,150 Right? 873 00:44:31,150 --> 00:44:32,990 Aber es dauert eine void *. 874 00:44:32,990 --> 00:44:38,660 Also vielleicht haben Sie Recht, dass es sollte ein Puffer der Größe 0 sein. 875 00:44:38,660 --> 00:44:41,070 So speichert er ein - 876 00:44:41,070 --> 00:44:41,280 rechts. 877 00:44:41,280 --> 00:44:43,560 >> Da dies hier - char Puffer ein Charakter, aber 878 00:44:43,560 --> 00:44:45,110 das dauert ein void * - 879 00:44:45,110 --> 00:44:45,870 ein Zeiger. 880 00:44:45,870 --> 00:44:50,640 So konnte ich das tun und jetzt Puffer ein Zeiger ist. 881 00:44:50,640 --> 00:44:53,214 Was könnte ich tun? 882 00:44:53,214 --> 00:44:55,775 >> STUDENT 31: Setzen Sie einen Stern neben char. 883 00:44:55,775 --> 00:44:58,380 >> JASON HIRSCHHORN: Ich konnte erstellt es char *. 884 00:44:58,380 --> 00:45:00,216 OK. 885 00:45:00,216 --> 00:45:03,131 Was ist eine andere Sache, die ich tun könnte? 886 00:45:03,131 --> 00:45:04,050 Oder lassen Sie uns mit diesem zu gehen. 887 00:45:04,050 --> 00:45:05,740 Char * buffer, so was stelle ich hier? 888 00:45:05,740 --> 00:45:08,290 889 00:45:08,290 --> 00:45:09,310 >> STUDENT 31: Puffer. 890 00:45:09,310 --> 00:45:10,560 >> JASON HIRSCHHORN: Puffer. 891 00:45:10,560 --> 00:45:12,640 892 00:45:12,640 --> 00:45:14,500 Buffer ist ein Zeiger auf ein char. 893 00:45:14,500 --> 00:45:19,480 Und an dieser Stelle, wir setzen ein Byte etwas, was wir gelesen haben. 894 00:45:19,480 --> 00:45:19,980 Ja. 895 00:45:19,980 --> 00:45:20,700 Avi. 896 00:45:20,700 --> 00:45:21,230 >> AVI: Nur eine kurze Frage. 897 00:45:21,230 --> 00:45:24,440 Möchten Sie Puffer malloc? 898 00:45:24,440 --> 00:45:25,930 >> JASON HIRSCHHORN: Wer kann diese Frage beantworten? 899 00:45:25,930 --> 00:45:30,210 >> STUDENT 32: Nun, es ist nicht wirklich Punkt, alles gerade jetzt, so - 900 00:45:30,210 --> 00:45:32,610 >> JASON HIRSCHHORN: Aber tun wir wollen es malloc? 901 00:45:32,610 --> 00:45:35,600 >> STUDENT 32: Wenn Sie es tun, war, dass So, ich denke, ja, denn man braucht 902 00:45:35,600 --> 00:45:36,990 einige Platz für sie zu zeigen. 903 00:45:36,990 --> 00:45:38,350 >> JASON HIRSCHHORN: Wollen wir haben, um es malloc? 904 00:45:38,350 --> 00:45:40,580 >> STUDENT 33: Wenn Sie vorhaben, verwenden, außerhalb der Schleife. 905 00:45:40,580 --> 00:45:42,524 >> JASON HIRSCHHORN: Werden wir verwenden Sie es außerhalb der Schleife? 906 00:45:42,524 --> 00:45:44,392 >> STUDENT 34: Ja. 907 00:45:44,392 --> 00:45:44,860 >> STUDENT 35: Warten. 908 00:45:44,860 --> 00:45:46,980 Wollen wir es erklären wollen in der Schleife, über? 909 00:45:46,980 --> 00:45:50,100 >> JASON HIRSCHHORN: Also ich denke, wir haben einige Pseudo WHILE-Schleife hier, dass wir 910 00:45:50,100 --> 00:45:51,950 versuchen, herauszufinden,,, dass haben wir nicht noch gekommen. 911 00:45:51,950 --> 00:45:54,710 912 00:45:54,710 --> 00:45:56,010 Wir brauchen nicht, um es zu malloc. 913 00:45:56,010 --> 00:45:59,310 Wir sind in den wichtigsten Betriebs, wird es nur noch innerhalb dieser Schleife verwendet werden. 914 00:45:59,310 --> 00:46:00,540 Es muss nicht existieren außerhalb dieses. 915 00:46:00,540 --> 00:46:02,340 >> So kann es eine lokale Variable sein. 916 00:46:02,340 --> 00:46:03,925 Sie haben einen Zeiger auf eine lokale Variable. 917 00:46:03,925 --> 00:46:07,984 918 00:46:07,984 --> 00:46:09,590 >> STUDENT 36: Aber es ist nicht zeigt auf etwas. 919 00:46:09,590 --> 00:46:11,540 >> JASON HIRSCHHORN: Nein, ist es nicht etwas initialisiert. 920 00:46:11,540 --> 00:46:12,790 Aber wir sind nicht dabei, es auch zu verwenden. 921 00:46:12,790 --> 00:46:15,300 Wir werden etwas setzen es das erste Mal benutzen wir es. 922 00:46:15,300 --> 00:46:16,580 Damit scheint OK. 923 00:46:16,580 --> 00:46:17,780 Also haben wir nicht malloc brauchen hier. 924 00:46:17,780 --> 00:46:19,360 Und ich denke, es ist OK, wie es ist. 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 Wir haben die fread Linie. 928 00:46:27,190 --> 00:46:28,490 Lassen Sie uns die nächste Zeile. 929 00:46:28,490 --> 00:46:32,984 >> Wenn wir in eine Datei zu schreiben, was ist eine gute Funktion zu verwenden, um das zu tun? 930 00:46:32,984 --> 00:46:33,770 >> STUDENT 37: Fwrite? 931 00:46:33,770 --> 00:46:35,140 >> STUDENT 38: fprintf? 932 00:46:35,140 --> 00:46:36,010 >> JASON HIRSCHHORN: fprintf ist eins. 933 00:46:36,010 --> 00:46:37,260 Was ist ein anderes? 934 00:46:37,260 --> 00:46:37,680 >> STUDENT 39: Fwrite. 935 00:46:37,680 --> 00:46:38,510 >> JASON HIRSCHHORN: Fwrite. 936 00:46:38,510 --> 00:46:41,250 Und für unsere Zwecke, fwrite, die wir hier gesehen haben, ist 937 00:46:41,250 --> 00:46:42,500 wahrscheinlich die bessere Wahl. 938 00:46:42,500 --> 00:46:51,970 939 00:46:51,970 --> 00:46:53,950 Es dauert vier Argumente auch. 940 00:46:53,950 --> 00:46:57,570 Nishant, kann Ihnen mir die Argumente? 941 00:46:57,570 --> 00:47:00,570 >> Nishant: Die erste geht nur Puffer sein. 942 00:47:00,570 --> 00:47:02,210 >> JASON HIRSCHHORN: OK. 943 00:47:02,210 --> 00:47:06,752 >> Nishant: Die zweite der nur gehen, um 1 sein. 944 00:47:06,752 --> 00:47:09,510 Drittens geht um eine 1 sein. 945 00:47:09,510 --> 00:47:11,470 Und das vierte wird sich dst sein. 946 00:47:11,470 --> 00:47:18,010 947 00:47:18,010 --> 00:47:19,550 >> JASON HIRSCHHORN: Hat jemand Fragen zu dieser Linie? 948 00:47:19,550 --> 00:47:28,370 949 00:47:28,370 --> 00:47:29,130 Das sieht gut aus. 950 00:47:29,130 --> 00:47:29,590 OK. 951 00:47:29,590 --> 00:47:34,250 So, jetzt sieht es aus wie das, was wir sind fehlt - eigentlich schreiben wir 952 00:47:34,250 --> 00:47:35,090 diese letzte Zeile. 953 00:47:35,090 --> 00:47:36,300 Schließen Sie die Dateien. 954 00:47:36,300 --> 00:47:38,880 Wer kann uns schriftlich beenden diese beiden letzten Zeilen? 955 00:47:38,880 --> 00:47:39,120 Ja. 956 00:47:39,120 --> 00:47:39,850 Sorry, was ist Ihr Name? 957 00:47:39,850 --> 00:47:40,580 >> LUCY: Lucy. 958 00:47:40,580 --> 00:47:41,580 >> JASON HIRSCHHORN: Lucy. 959 00:47:41,580 --> 00:47:47,560 >> LUCY: Fclose src und dann fclose Ziel. 960 00:47:47,560 --> 00:47:52,430 >> JASON HIRSCHHORN: Fclose, offene paren, src, in der Nähe paren, Semikolon. 961 00:47:52,430 --> 00:47:53,680 Und fclose - 962 00:47:53,680 --> 00:47:57,560 963 00:47:57,560 --> 00:47:58,090 ja? 964 00:47:58,090 --> 00:48:01,710 >> LUCY: Open Klammern, dst und dann Semikolon. 965 00:48:01,710 --> 00:48:02,520 >> JASON HIRSCHHORN: Großartig. 966 00:48:02,520 --> 00:48:04,338 Und was soll ich am Ende sind? 967 00:48:04,338 --> 00:48:05,210 >> LUCY: Return 0. 968 00:48:05,210 --> 00:48:05,570 >> JASON HIRSCHHORN: Return 0. 969 00:48:05,570 --> 00:48:06,820 Muss ich? 970 00:48:06,820 --> 00:48:10,560 971 00:48:10,560 --> 00:48:12,590 Nur eine Frage. 972 00:48:12,590 --> 00:48:14,957 Müssen wir return 0 enthalten? 973 00:48:14,957 --> 00:48:16,240 >> Mehrere Schüler: Nein 974 00:48:16,240 --> 00:48:16,430 >> JASON HIRSCHHORN: Nein 975 00:48:16,430 --> 00:48:18,090 Haupt tut es automatisch wenn Sie bis zum Ende erhalten. 976 00:48:18,090 --> 00:48:20,580 Aber ich denke, es ist schön, sind explizit. 977 00:48:20,580 --> 00:48:23,860 Vor allem, wenn wir anderen zurück Dinge während des gesamten Programms. 978 00:48:23,860 --> 00:48:24,810 OK. 979 00:48:24,810 --> 00:48:26,230 Dies ist, was wir verpassen - 980 00:48:26,230 --> 00:48:28,520 Während das, was? 981 00:48:28,520 --> 00:48:31,630 Wer kann einige denken - 982 00:48:31,630 --> 00:48:35,240 hat ein Gefühl von dem, was die Dinge könnte es gehen? 983 00:48:35,240 --> 00:48:37,350 Auch wenn es nur in einigen Pseudo wie die Sprache? 984 00:48:37,350 --> 00:48:41,330 >> Was sind wir wirklich - was wollen wir bis zu gehen? 985 00:48:41,330 --> 00:48:41,980 Ja, Lucy. 986 00:48:41,980 --> 00:48:43,240 >> LUCY: Das Ende der Datei. 987 00:48:43,240 --> 00:48:44,990 >> JASON HIRSCHHORN: Das Ende der Datei. 988 00:48:44,990 --> 00:48:49,280 Also, was meinst du mit Ende der Datei das? 989 00:48:49,280 --> 00:48:50,955 >> LUCY: Nachdem Sie das erreichen Ende der Datei, zu stoppen. 990 00:48:50,955 --> 00:48:51,240 >> JASON HIRSCHHORN: OK. 991 00:48:51,240 --> 00:48:53,460 Also noch erreichen wir das Ende der Datei. 992 00:48:53,460 --> 00:48:56,893 Wie können wir wissen, wann wir erreicht haben das Ende der Datei? 993 00:48:56,893 --> 00:48:59,900 >> STUDENT 40: Ich denke, Puffer auf NULL gesetzt werden. 994 00:48:59,900 --> 00:49:01,885 >> STUDENT 41: Puffer erklärt innerhalb der Schleife. 995 00:49:01,885 --> 00:49:03,670 >> JASON HIRSCHHORN: Sie glauben also, Puffer wird auf NULL gesetzt werden. 996 00:49:03,670 --> 00:49:05,850 Warum sollte Puffer auf NULL gesetzt werden? 997 00:49:05,850 --> 00:49:10,420 >> STUDENT 40: Denn wenn Sie fread, die Sie versuchen zu setzen sind 998 00:49:10,420 --> 00:49:13,528 nichts in den Puffer. 999 00:49:13,528 --> 00:49:13,980 >> JASON HIRSCHHORN: OK. 1000 00:49:13,980 --> 00:49:15,550 Also denken Sie fread - 1001 00:49:15,550 --> 00:49:19,000 wenn wir das Ende erreicht die Datei, was fread tun? 1002 00:49:19,000 --> 00:49:21,230 Ich denke, das ist die Frage wir haben, um herauszufinden. 1003 00:49:21,230 --> 00:49:21,960 Was fread tun? 1004 00:49:21,960 --> 00:49:25,640 Gibt es da NULL in Puffer oder bedeutet es etwas anderes zu tun? 1005 00:49:25,640 --> 00:49:27,510 Wie können wir herausfinden, was es ist? 1006 00:49:27,510 --> 00:49:28,190 >> STUDENT 42: Mann. 1007 00:49:28,190 --> 00:49:28,810 >> JASON HIRSCHHORN: Mann. 1008 00:49:28,810 --> 00:49:32,280 Also schauen wir uns hier. 1009 00:49:32,280 --> 00:49:34,000 Rückgabewert. 1010 00:49:34,000 --> 00:49:39,620 Bei Erfolg fread und fwrite die Rückkehr Anzahl der Artikel geschrieben oder gelesen. 1011 00:49:39,620 --> 00:49:43,700 Diese Anzahl ist gleich der Anzahl von Bytes nur übertragen, wenn die Größe 1 ist. 1012 00:49:43,700 --> 00:49:47,780 Wenn ein Fehler auftritt, oder das Ende der Datei erreicht ist, ist der Rückgabewert ein 1013 00:49:47,780 --> 00:49:51,490 kurze Artikel Zahl oder 0 ist. 1014 00:49:51,490 --> 00:49:57,860 >> Also für unsere Zwecke, wenn fread Lauf das Ende der Datei und liest aus 1015 00:49:57,860 --> 00:50:02,100 das Ende der Datei, da ist nichts mehr zu lesen, was es wird, zurückzukehren? 1016 00:50:02,100 --> 00:50:03,290 >> STUDENT 43: Zero? 1017 00:50:03,290 --> 00:50:04,540 >> JASON HIRSCHHORN: Was? 1018 00:50:04,540 --> 00:50:05,300 >> STUDENT 43: Zero? 1019 00:50:05,300 --> 00:50:05,690 >> JASON HIRSCHHORN: Null. 1020 00:50:05,690 --> 00:50:06,940 Es wird null zurück. 1021 00:50:06,940 --> 00:50:09,360 1022 00:50:09,360 --> 00:50:13,010 So wissen wir, dass fread, wenn wir das Ende der Datei erreicht ist, wird 1023 00:50:13,010 --> 00:50:13,690 auf Null zurück. 1024 00:50:13,690 --> 00:50:17,460 Wie können wir zu unserem Vorteil nutzen, dass? 1025 00:50:17,460 --> 00:50:21,733 >> AVI: Sie können eine Variable außerhalb erklären der Schleife genannt Prüfung. 1026 00:50:21,733 --> 00:50:27,040 Wenn der Check gleich - 1027 00:50:27,040 --> 00:50:28,190 für jetzt - ein. 1028 00:50:28,190 --> 00:50:28,920 >> JASON HIRSCHHORN: OK. 1029 00:50:28,920 --> 00:50:38,050 >> AVI: Und dann können Sie eine IF setzen Aussage direkt nach fread sagen, wenn 1030 00:50:38,050 --> 00:50:42,600 fread gleich Null - 1031 00:50:42,600 --> 00:50:43,850 Nr. 1032 00:50:43,850 --> 00:50:46,002 1033 00:50:46,002 --> 00:50:47,252 >> JASON HIRSCHHORN: Wer Avi kann helfen? 1034 00:50:47,252 --> 00:50:49,690 1035 00:50:49,690 --> 00:50:52,410 >> AVI: Was ist der Wert von fread zurückgekehrt? 1036 00:50:52,410 --> 00:50:54,060 >> JASON HIRSCHHORN: Wir haben gerade ging, dass. 1037 00:50:54,060 --> 00:50:55,450 >> AVI: Wie stellen Sie es? 1038 00:50:55,450 --> 00:50:57,190 >> JASON HIRSCHHORN: Also es gibt - lassen schauen hier - es gibt einen 1039 00:50:57,190 --> 00:50:59,340 size_t, der im Wesentlichen eine ganze Zahl ist. 1040 00:50:59,340 --> 00:51:02,240 1041 00:51:02,240 --> 00:51:03,410 So ist eine ganze Zahl zurückgibt. 1042 00:51:03,410 --> 00:51:05,160 Und in unserem Fall, wird es zurück 1 oder 0 - 1043 00:51:05,160 --> 00:51:08,760 1, wenn es eine Sache zu lesen - ein Byte, und 0, wenn wir das Ende erreicht. 1044 00:51:08,760 --> 00:51:13,560 1045 00:51:13,560 --> 00:51:16,450 Also, wenn fread - 1046 00:51:16,450 --> 00:51:16,855 ja? 1047 00:51:16,855 --> 00:51:20,330 >> STUDENT 45: Kannst du nicht einfach den Voll fread (Puffer, 1, 1, src) in der 1048 00:51:20,330 --> 00:51:21,660 while-Schleife? 1049 00:51:21,660 --> 00:51:26,510 >> JASON HIRSCHHORN: So schlagen Sie vor Dabei gibt es in? 1050 00:51:26,510 --> 00:51:27,600 >> [Zwischen VOICES] 1051 00:51:27,600 --> 00:51:29,520 >> JASON HIRSCHHORN: Halten. 1052 00:51:29,520 --> 00:51:30,885 So befreien wir uns von dem. 1053 00:51:30,885 --> 00:51:33,300 So schlagen Sie vor setzen sind fread in there? 1054 00:51:33,300 --> 00:51:35,457 Was sollten wir auch bewegen wenn Sie das tun wollen? 1055 00:51:35,457 --> 00:51:36,740 >> STUDENT 45: Der Puffer außen. 1056 00:51:36,740 --> 00:51:38,110 >> JASON HIRSCHHORN: Wir sollten auch verschieben diese hier. 1057 00:51:38,110 --> 00:51:41,700 >> STUDENT 45: Aber tut das ständig bewegen Sie ihn nach vorne? 1058 00:51:41,700 --> 00:51:42,950 >> [Zwischen VOICES] 1059 00:51:42,950 --> 00:51:46,540 1060 00:51:46,540 --> 00:51:47,470 >> JASON HIRSCHHORN: OK. 1061 00:51:47,470 --> 00:51:50,570 Also das ist, was Okshar vorgeschlagen. 1062 00:51:50,570 --> 00:51:51,930 Wir schaffen unsere Puffer. 1063 00:51:51,930 --> 00:51:57,020 Wir WÄHREND fread, fwrite dann wir. 1064 00:51:57,020 --> 00:51:59,760 Gedanken dazu? 1065 00:51:59,760 --> 00:52:04,050 >> STUDENT 46: Meine Frage ist nur, würde es tatsächlich den Befehl fread? 1066 00:52:04,050 --> 00:52:06,175 >> JASON HIRSCHHORN: Gute Frage. 1067 00:52:06,175 --> 00:52:11,050 Wenn Sie setzen einen Funktionsaufruf innerhalb einer Bedingung, das tut 1068 00:52:11,050 --> 00:52:12,300 Funktionsaufruf ausführen? 1069 00:52:12,300 --> 00:52:15,760 1070 00:52:15,760 --> 00:52:17,770 Wir haben Beispiele dafür gesehen. 1071 00:52:17,770 --> 00:52:24,900 1072 00:52:24,900 --> 00:52:25,660 Right? 1073 00:52:25,660 --> 00:52:26,125 >> STUDENT 46: OK. 1074 00:52:26,125 --> 00:52:26,590 Ja. 1075 00:52:26,590 --> 00:52:30,140 Also es tut auszuführen. 1076 00:52:30,140 --> 00:52:31,790 >> JASON HIRSCHHORN: Wir haben Dinge gesehen wie dieser vor, wo wir ein 1077 00:52:31,790 --> 00:52:33,550 Funktionsaufruf innerhalb einer Bedingung. 1078 00:52:33,550 --> 00:52:35,540 Heißt das Funktionsaufruf ausführen? 1079 00:52:35,540 --> 00:52:36,350 Ja. 1080 00:52:36,350 --> 00:52:37,410 Also die Antwort ist ja. 1081 00:52:37,410 --> 00:52:41,010 Dieser Funktionsaufruf ausgeführt wird. 1082 00:52:41,010 --> 00:52:42,418 Aber auch hier ist es, was wir wollen? 1083 00:52:42,418 --> 00:52:49,250 1084 00:52:49,250 --> 00:52:52,204 >> Was ist eine Art, wie wir herausfinden konnte herauszufinden, ob es was wir wollen? 1085 00:52:52,204 --> 00:52:53,470 >> Mehrere Schüler: Führen Sie das? 1086 00:52:53,470 --> 00:52:54,460 >> JASON HIRSCHHORN: Wir könnten sie auszuführen. 1087 00:52:54,460 --> 00:52:57,500 Aber bevor wir das tun, könnten wir auch durch diese Vernunft. 1088 00:52:57,500 --> 00:52:57,920 Wenn - 1089 00:52:57,920 --> 00:53:01,920 sagen, wir haben ein Byte in unserem Datei, werden wir Sie zu uns, 1090 00:53:01,920 --> 00:53:02,660 wir werden auf diesen Code zu erhalten. 1091 00:53:02,660 --> 00:53:03,620 Das wird laufen. 1092 00:53:03,620 --> 00:53:07,780 fread wird ein Byte zurück und speichern Sie es in dem Puffer. 1093 00:53:07,780 --> 00:53:11,290 Und dies wird auf 1 zu bewerten, rechts, nachdem er 1 zurück. 1094 00:53:11,290 --> 00:53:12,640 >> So, während ein. 1095 00:53:12,640 --> 00:53:15,325 Heißt das, den Code in die WHILE-Schleife wird ausgeführt? 1096 00:53:15,325 --> 00:53:15,453 >> STUDENT 47: Ja. 1097 00:53:15,453 --> 00:53:16,040 Es ist wahr. 1098 00:53:16,040 --> 00:53:16,290 >> JASON HIRSCHHORN: Ja. 1099 00:53:16,290 --> 00:53:17,490 1 gilt. 1100 00:53:17,490 --> 00:53:18,240 Es ist nicht null. 1101 00:53:18,240 --> 00:53:20,360 Also der Code innerhalb hier ausgeführt wird. 1102 00:53:20,360 --> 00:53:22,300 Also werden wir schreiben, dass. 1103 00:53:22,300 --> 00:53:25,340 Wir kommen wieder, um diese zu bewegen Linie noch einmal. 1104 00:53:25,340 --> 00:53:26,850 Jetzt haben wir - 1105 00:53:26,850 --> 00:53:28,550 wir sind am Ende unserer Datei. 1106 00:53:28,550 --> 00:53:30,980 Wir lesen aus dem Ende unserer Datei denn wir hatten nur ein Byte in sie. 1107 00:53:30,980 --> 00:53:34,270 >> Fread 0 zurückgibt, speichert etwas Puffer. 1108 00:53:34,270 --> 00:53:35,890 Ich weiß ehrlich nicht, was es speichert in Puffer. 1109 00:53:35,890 --> 00:53:38,380 Wir könnten wahrscheinlich nachschlagen um zu sehen, was es tut. 1110 00:53:38,380 --> 00:53:40,130 Dass ich weiß ehrlich nicht. 1111 00:53:40,130 --> 00:53:43,090 Wir wissen nicht, wer was kümmert es speichert im Puffer? 1112 00:53:43,090 --> 00:53:44,010 Aber es 0 zurück. 1113 00:53:44,010 --> 00:53:45,440 Und wird WHILE 0 ausführen? 1114 00:53:45,440 --> 00:53:49,950 1115 00:53:49,950 --> 00:53:51,180 >> WÄHREND 0 wird nicht ausgeführt. 1116 00:53:51,180 --> 00:53:54,030 So dann werden wir hier unten zu bewegen. 1117 00:53:54,030 --> 00:53:58,870 Lassen Sie uns also ein Hand wenn diese ist der Code, den wir laufen soll, oder wenn wir 1118 00:53:58,870 --> 00:54:00,140 sollten Änderungen zuerst tun. 1119 00:54:00,140 --> 00:54:02,180 Also, wenn Sie denken - man muss stimmen. 1120 00:54:02,180 --> 00:54:06,885 Wenn Sie denken, wir sollten diesen Code ausführen wie es ist, bitte die Hand heben. 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 Es gibt eine - 1124 00:54:14,315 --> 00:54:17,260 Sie haben eine Frage, ein Anliegen? 1125 00:54:17,260 --> 00:54:18,080 Ja. 1126 00:54:18,080 --> 00:54:21,240 >> STUDENT 48: Nachdem wir Puffer bewegen außerhalb der Schleife, wir tun 1127 00:54:21,240 --> 00:54:22,670 haben, um es malloc? 1128 00:54:22,670 --> 00:54:23,310 >> JASON HIRSCHHORN: Gute Frage. 1129 00:54:23,310 --> 00:54:26,670 Nach dem wir uns bewegen Puffer außerhalb des Schleife, wir müssen es malloc? 1130 00:54:26,670 --> 00:54:28,400 Dies ist ein Umfang Frage. 1131 00:54:28,400 --> 00:54:32,130 Wenn wir initialisieren Puffer außerhalb dieser Schleife wird es existieren 1132 00:54:32,130 --> 00:54:33,534 innerhalb der Schleife? 1133 00:54:33,534 --> 00:54:35,230 >> Mehrere Schüler: Ja. 1134 00:54:35,230 --> 00:54:35,580 >> JASON HIRSCHHORN: Ja. 1135 00:54:35,580 --> 00:54:40,100 Sein Geltungsbereich erstreckt sich innerhalb der Schleife und, wirklich, alles darunter innen 1136 00:54:40,100 --> 00:54:42,460 dieser Code, einschließlich der Dinge im Inneren hier. 1137 00:54:42,460 --> 00:54:43,930 So brauchen wir nicht, um es zu malloc. 1138 00:54:43,930 --> 00:54:47,766 Es ist eine lokale Variable, und sein Anwendungsbereich enthält immer noch die Schleife. 1139 00:54:47,766 --> 00:54:49,540 >> STUDENT 49: Brauchen wir, um es zu befreien? 1140 00:54:49,540 --> 00:54:51,770 >> JASON HIRSCHHORN: Wollen wir müssen freien Puffer? 1141 00:54:51,770 --> 00:54:53,860 >> STUDENT 49: Ja, wenn wir nicht malloc. 1142 00:54:53,860 --> 00:54:55,750 >> JASON HIRSCHHORN: Wollen wir müssen freien Puffer? 1143 00:54:55,750 --> 00:54:57,160 Wir nicht. 1144 00:54:57,160 --> 00:55:01,280 Wieder ist es eine lokale Variable, so dass wir nicht brauchen, um es zu befreien. 1145 00:55:01,280 --> 00:55:02,170 OK. 1146 00:55:02,170 --> 00:55:03,480 Mal sehen, was passiert. 1147 00:55:03,480 --> 00:55:17,290 1148 00:55:17,290 --> 00:55:18,220 So ist es nicht initialisiert. 1149 00:55:18,220 --> 00:55:20,830 Das war etwas, das, was Marcus vorgeschlagen früher. 1150 00:55:20,830 --> 00:55:25,340 So haben wir, dass Fehler, variable Puffer wird nicht initialisiert, wenn verwendet. 1151 00:55:25,340 --> 00:55:26,590 >> Wie können wir dieses Problem beheben? 1152 00:55:26,590 --> 00:55:29,460 1153 00:55:29,460 --> 00:55:30,960 >> STUDENT 50: malloc es? 1154 00:55:30,960 --> 00:55:31,770 >> STUDENT 51: Gleich NULL? 1155 00:55:31,770 --> 00:55:33,000 >> STUDENT 52: Sagen Puffer gleich NULL. 1156 00:55:33,000 --> 00:55:34,250 >> JASON HIRSCHHORN: OK. 1157 00:55:34,250 --> 00:55:40,040 1158 00:55:40,040 --> 00:55:40,770 Sieht gut aus. 1159 00:55:40,770 --> 00:55:42,410 Wir haben es jetzt. 1160 00:55:42,410 --> 00:55:45,630 Lassen Sie uns etwas zu kopieren versuchen. 1161 00:55:45,630 --> 00:56:08,990 1162 00:56:08,990 --> 00:56:10,490 So haben wir unsere Textdatei. 1163 00:56:10,490 --> 00:56:11,740 Wie können wir dieses Programm ausführen? 1164 00:56:11,740 --> 00:56:14,140 1165 00:56:14,140 --> 00:56:15,472 Ja. 1166 00:56:15,472 --> 00:56:22,230 >> STUDENT 53: Sie können dot tun Schrägstrich cp test.txt. 1167 00:56:22,230 --> 00:56:25,140 Und dann können Sie einen anderen Dateinamen was wird es in zu speichern. 1168 00:56:25,140 --> 00:56:25,510 >> JASON HIRSCHHORN: OK. 1169 00:56:25,510 --> 00:56:27,380 Wir nennen es out.txt. 1170 00:56:27,380 --> 00:56:28,630 Cool? 1171 00:56:28,630 --> 00:56:31,700 1172 00:56:31,700 --> 00:56:34,320 Seg Schuld. 1173 00:56:34,320 --> 00:56:35,570 Gedanken über die Segmente Schuld? 1174 00:56:35,570 --> 00:56:40,900 1175 00:56:40,900 --> 00:56:41,390 Das ist großartig. 1176 00:56:41,390 --> 00:56:45,040 Wie können wir herausfinden, wo das Segment Schuld ist? 1177 00:56:45,040 --> 00:56:45,680 Was? 1178 00:56:45,680 --> 00:56:45,990 >> STUDENT 54: Gdb. 1179 00:56:45,990 --> 00:56:47,240 >> JASON HIRSCHHORN: Gdb. 1180 00:56:47,240 --> 00:56:51,400 1181 00:56:51,400 --> 00:56:55,300 Wir laufen durch das Schreiben von gdb gdb dot Schrägstrich, der Name Programm. 1182 00:56:55,300 --> 00:56:57,020 Keine Befehlszeilenargumente gibt. 1183 00:56:57,020 --> 00:56:59,570 Wir werden ein gesetzt Haltepunkt am wichtigsten. 1184 00:56:59,570 --> 00:57:02,190 Wenn ich gdb starten, was kann ich tun? 1185 00:57:02,190 --> 00:57:02,730 >> STUDENT 55: R. 1186 00:57:02,730 --> 00:57:08,910 >> JASON HIRSCHHORN: R. Und was dann? 1187 00:57:08,910 --> 00:57:09,400 >> STUDENT 55: Die Argumente? 1188 00:57:09,400 --> 00:57:10,650 >> JASON HIRSCHHORN: Dann wird die Befehlszeilenargumente. 1189 00:57:10,650 --> 00:57:15,890 1190 00:57:15,890 --> 00:57:17,120 Lassen Sie uns gehen. 1191 00:57:17,120 --> 00:57:19,090 N ist gerade dabei mir Zeile für Zeile. 1192 00:57:19,090 --> 00:57:21,450 Ich werde gehen, bis Ich meine seg Schuld. 1193 00:57:21,450 --> 00:57:22,700 Es ist meine Schuld Segment. 1194 00:57:22,700 --> 00:57:24,960 1195 00:57:24,960 --> 00:57:27,875 Es sieht aus wie fread verursacht mein seg Schuld. 1196 00:57:27,875 --> 00:57:30,570 1197 00:57:30,570 --> 00:57:32,770 Ich weiß, mein fread verursacht seg Schuld, denn das war die 1198 00:57:32,770 --> 00:57:34,950 Linie, die wir gerade durchgeführt. 1199 00:57:34,950 --> 00:57:36,530 >> Und das einzige, was war geschieht in dieser Linie - 1200 00:57:36,530 --> 00:57:37,520 zwei Dinge geschehen. 1201 00:57:37,520 --> 00:57:40,610 Fread los war, und dann waren wir dabei einige während der Überprüfung. 1202 00:57:40,610 --> 00:57:44,820 Ich bin bereit zu wetten, dass die WHILE Überprüfung war nicht die Ursache meiner seg Schuld. 1203 00:57:44,820 --> 00:57:46,950 Wahrscheinlich war fread was meine seg Schuld. 1204 00:57:46,950 --> 00:57:49,260 Ich sehe auch hier etwas, bezüglich memcopy. 1205 00:57:49,260 --> 00:57:50,500 >> Speicher zu kopieren. 1206 00:57:50,500 --> 00:57:53,820 Klingt wie ein Umzug von Speicher einem Ort zum anderen. 1207 00:57:53,820 --> 00:57:56,890 Klingt wie etwas, was passieren würde, im fread, vielleicht einige Speicher 1208 00:57:56,890 --> 00:57:58,910 Bewegen von hier bis hier. 1209 00:57:58,910 --> 00:58:01,740 1210 00:58:01,740 --> 00:58:03,860 Lassen Sie uns durch diese gehen wieder. 1211 00:58:03,860 --> 00:58:06,900 Wie starte ich es über und führen Sie es wieder? 1212 00:58:06,900 --> 00:58:08,092 Ja. 1213 00:58:08,092 --> 00:58:15,140 >> STUDENT 56: Möchten Sie setzen müssen ein kaufmännisches vor Puffer? 1214 00:58:15,140 --> 00:58:17,800 >> JASON HIRSCHHORN: Also, bevor Ampersand Puffer würde mir die Adresse geben 1215 00:58:17,800 --> 00:58:22,330 Puffer, der ein char * ist. 1216 00:58:22,330 --> 00:58:25,250 Lassen Sie uns über diese noch einmal laufen. 1217 00:58:25,250 --> 00:58:28,248 Wie kann ich ein weiteres Mal durchlaufen sie? 1218 00:58:28,248 --> 00:58:29,210 >> STUDENT 57: Können Sie nur Geben Sie laufen wieder? 1219 00:58:29,210 --> 00:58:32,050 >> JASON HIRSCHHORN: Geben Sie einfach wieder laufen. 1220 00:58:32,050 --> 00:58:33,415 So werden wir nicht zu Führen Sie diese Zeile. 1221 00:58:33,415 --> 00:58:36,250 1222 00:58:36,250 --> 00:58:39,240 So Puffer ist ein NULL-Zeiger. 1223 00:58:39,240 --> 00:58:40,490 Korrigieren Sie? 1224 00:58:40,490 --> 00:58:45,870 1225 00:58:45,870 --> 00:58:47,060 Es zeigt auf - mal sehen. 1226 00:58:47,060 --> 00:58:48,500 Wenn wir unsere - 1227 00:58:48,500 --> 00:58:50,430 ziehen schnell ein Bild davon. 1228 00:58:50,430 --> 00:58:53,500 Kann jeder sehen, ob Ich schreibe hier? 1229 00:58:53,500 --> 00:59:02,890 >> So in dem Stapel, haben wir eine lokale Variable und es heißt Puffer und 1230 00:59:02,890 --> 00:59:08,230 es ist ein Zeiger auf ein char. 1231 00:59:08,230 --> 00:59:10,325 Welche Adresse ist das Zeichen an? 1232 00:59:10,325 --> 00:59:12,550 >> STUDENT 58: 0x0. 1233 00:59:12,550 --> 00:59:13,400 >> JASON HIRSCHHORN: Richtig. 1234 00:59:13,400 --> 00:59:14,200 Das ist, was das ist. 1235 00:59:14,200 --> 00:59:17,600 In hier innerhalb Puffer gespeichert 0x0. 1236 00:59:17,600 --> 00:59:20,480 Das ist, was wir haben - die Setup wir jetzt haben. 1237 00:59:20,480 --> 00:59:27,540 Also diese Linie, fread, legt etwas von Quelle, wo? 1238 00:59:27,540 --> 00:59:30,560 In dieses Feld oder dieser Box? 1239 00:59:30,560 --> 00:59:31,060 Welche Box? 1240 00:59:31,060 --> 00:59:33,290 Linke oder rechte Box Box? 1241 00:59:33,290 --> 00:59:34,750 Dieses Recht Feld. 1242 00:59:34,750 --> 00:59:38,440 >> Es folgt dem Zeiger, und legt es in hier. 1243 00:59:38,440 --> 00:59:42,620 Wenn wir versuchen und Touch-Speicher an Stelle 0, was haben wir bekommen? 1244 00:59:42,620 --> 00:59:45,050 Eine Segmentierungsfehler. 1245 00:59:45,050 --> 00:59:46,550 Das ist der Fehler, den wir jetzt haben. 1246 00:59:46,550 --> 00:59:46,970 Ja. 1247 00:59:46,970 --> 00:59:48,410 >> STUDENT 59: Haben Sie nicht Sterne-Puffer zu setzen? 1248 00:59:48,410 --> 00:59:49,180 Oder nicht? 1249 00:59:49,180 --> 00:59:50,050 Für fread? 1250 00:59:50,050 --> 00:59:51,450 >> JASON HIRSCHHORN: Also fread nimmt einen Zeiger. 1251 00:59:51,450 --> 00:59:54,920 1252 00:59:54,920 --> 00:59:55,900 So spielt es im Puffer. 1253 00:59:55,900 --> 00:59:58,980 Und dann wird es de-reference es irgendwo in fread. 1254 00:59:58,980 --> 01:00:00,700 Aber noch einmal, wir sahen, dauert es einen Zeiger. 1255 01:00:00,700 --> 01:00:02,560 Wir brauchen nicht, es weiterzugeben Sterne-Puffer. 1256 01:00:02,560 --> 01:00:05,350 Das wäre vorbei es, was hier ist. 1257 01:00:05,350 --> 01:00:07,980 Und das wäre wahrscheinlich geben Sie uns eine Fehler weil wir De-Referenzierung es. 1258 01:00:07,980 --> 01:00:08,150 >> Right? 1259 01:00:08,150 --> 01:00:10,690 Wenn wir de-reference diesen Zeiger, wenn wir versuchen, diesen Ort zu gelangen, 1260 01:00:10,690 --> 01:00:13,140 wir bekommen eine Fehlermeldung - unsere Segmentation Fault. 1261 01:00:13,140 --> 01:00:15,800 So - 1262 01:00:15,800 --> 01:00:16,690 oops. 1263 01:00:16,690 --> 01:00:19,090 Wir werden von gdb zu beenden. 1264 01:00:19,090 --> 01:00:20,160 Unsere Linie - 1265 01:00:20,160 --> 01:00:22,990 unser Problem - ist die richtige hier auf dieser Linie. 1266 01:00:22,990 --> 01:00:26,410 Und es ist ein Problem, weil dieser Linie. 1267 01:00:26,410 --> 01:00:31,780 >> Wie können wir eine Box, die ist in fread zugänglich. 1268 01:00:31,780 --> 01:00:31,980 Right? 1269 01:00:31,980 --> 01:00:35,190 Wir müssen eine Box, die eine ist zu schaffen Byte groß, die Größe eines char. 1270 01:00:35,190 --> 01:00:38,590 Aber wir müssen, dass Feld zugänglich sein wenn diese Funktion ausgeführt wird. 1271 01:00:38,590 --> 01:00:39,390 Also, wo - 1272 01:00:39,390 --> 01:00:39,640 ja. 1273 01:00:39,640 --> 01:00:40,440 Irgendwelche Ideen? 1274 01:00:40,440 --> 01:00:43,615 >> STUDENT 60: Einfach gesetzt, jede beliebige Charakter. 1275 01:00:43,615 --> 01:00:49,150 1276 01:00:49,150 --> 01:00:51,640 Just do char buffer Gleichen der Charakter. 1277 01:00:51,640 --> 01:00:53,795 Und dann, wenn Sie dort Puffer haben - 1278 01:00:53,795 --> 01:00:54,110 >> JASON HIRSCHHORN: Warten. 1279 01:00:54,110 --> 01:00:55,110 Char-Puffer? 1280 01:00:55,110 --> 01:00:55,880 Also keine Sterne? 1281 01:00:55,880 --> 01:00:56,390 >> STUDENT 60: Ja. 1282 01:00:56,390 --> 01:00:58,560 Nehmen Sie den Stern. 1283 01:00:58,560 --> 01:01:00,690 Gleich eine zufällige Charakter. 1284 01:01:00,690 --> 01:01:01,460 >> JASON HIRSCHHORN: OK. 1285 01:01:01,460 --> 01:01:02,420 Also geben Sie mir einen. 1286 01:01:02,420 --> 01:01:03,170 >> STUDENT 60: Wie ein oder so etwas. 1287 01:01:03,170 --> 01:01:06,160 Und dann, wenn Sie Puffer haben gibt, verwenden Sie ein - 1288 01:01:06,160 --> 01:01:06,420 >> STUDENT 61: Star? 1289 01:01:06,420 --> 01:01:07,650 Oh nein, das kaufmännische. 1290 01:01:07,650 --> 01:01:09,000 >> STUDENT 60: Verwenden Sie das Et-Zeichen. 1291 01:01:09,000 --> 01:01:09,470 >> JASON HIRSCHHORN: OK. 1292 01:01:09,470 --> 01:01:11,320 Und was ist in fwrite? 1293 01:01:11,320 --> 01:01:14,150 >> STUDENT 60: Verwenden Sie das Et-Zeichen wieder. 1294 01:01:14,150 --> 01:01:14,320 >> JASON HIRSCHHORN: In Ordnung. 1295 01:01:14,320 --> 01:01:20,970 Also deine Idee ist, dass wir ein Char erstellen und etwas in ihm, und dann 1296 01:01:20,970 --> 01:01:22,612 schreiben Sie an diesem Zeichen. 1297 01:01:22,612 --> 01:01:23,760 >> STUDENT 60: Ja. 1298 01:01:23,760 --> 01:01:25,916 >> JASON HIRSCHHORN: Was denken die Leute? 1299 01:01:25,916 --> 01:01:27,770 >> STUDENT 62: Es ist gefaltet. 1300 01:01:27,770 --> 01:01:28,460 >> JASON HIRSCHHORN: OK. 1301 01:01:28,460 --> 01:01:29,760 Ziehen wir es aus. 1302 01:01:29,760 --> 01:01:35,720 Also dieser Zeit, ich werde dies in zeichnen Rot auf dem Stapel hier, und dann werden wir 1303 01:01:35,720 --> 01:01:36,410 haben - 1304 01:01:36,410 --> 01:01:36,822 ooh! 1305 01:01:36,822 --> 01:01:38,060 Entschuldigung. 1306 01:01:38,060 --> 01:01:45,930 Dieses Mal haben wir die so genannte Puffer, und es ist auf dem Stapel. 1307 01:01:45,930 --> 01:01:48,430 Korrigieren Sie? 1308 01:01:48,430 --> 01:01:51,520 Und wir werden es in einem Spar zunächst. 1309 01:01:51,520 --> 01:01:53,830 >> Dann haben wir unseren Aufruf fread. 1310 01:01:53,830 --> 01:02:01,300 Welche fread tut, ist es eine Byte aus unsere Datei und legt sie irgendwo. 1311 01:02:01,300 --> 01:02:04,570 Es versetzt sie in was auch immer der Sache ist, die auf. 1312 01:02:04,570 --> 01:02:09,130 Nun, bevor wir diese Adresse - 1313 01:02:09,130 --> 01:02:10,250 0x0. 1314 01:02:10,250 --> 01:02:13,349 Jetzt Welche Adresse haben wir? 1315 01:02:13,349 --> 01:02:14,650 >> STUDENT 63: Was auch immer Adresspuffer ist. 1316 01:02:14,650 --> 01:02:15,970 >> JASON HIRSCHHORN: Was auch immer Adresspuffer ist. 1317 01:02:15,970 --> 01:02:22,370 Es ist wahrscheinlich zu sein, so ähnlich. 1318 01:02:22,370 --> 01:02:26,950 Wahrscheinlich werde mit einem b beginnen und ein f, und dann haben sechs weitere 1319 01:02:26,950 --> 01:02:27,970 hexadezimalen Ziffern. 1320 01:02:27,970 --> 01:02:28,480 Spielt keine Rolle. 1321 01:02:28,480 --> 01:02:29,470 Einige Adresse. 1322 01:02:29,470 --> 01:02:31,410 Und wir sind vorbei, dass die Adresse in. 1323 01:02:31,410 --> 01:02:34,790 >> Und wir werden unseren setzen Byte, was an dieser Adresse. 1324 01:02:34,790 --> 01:02:38,470 So werden wir unseren setzen Byte, was hier drinnen. 1325 01:02:38,470 --> 01:02:40,800 Und dann werden wir aus schreiben was ist überhaupt hier drin. 1326 01:02:40,800 --> 01:02:43,425 1327 01:02:43,425 --> 01:02:45,380 Hat jemand irgendwelche Fragen haben, darüber? 1328 01:02:45,380 --> 01:02:50,990 1329 01:02:50,990 --> 01:02:54,690 Wer denkt, dass dieser Code funktioniert? 1330 01:02:54,690 --> 01:02:56,020 >> Heben Sie Ihre Hand, wenn Sie denken Dieser Code funktioniert. 1331 01:02:56,020 --> 01:02:57,270 Sie müssen eine Haltung einzunehmen. 1332 01:02:57,270 --> 01:03:00,670 1333 01:03:00,670 --> 01:03:02,500 Und wer denkt, dass dieser Code nicht funktioniert? 1334 01:03:02,500 --> 01:03:04,610 Heben Sie Ihre Hand. 1335 01:03:04,610 --> 01:03:06,750 Alle anderen sollten Anhebung der Hand. 1336 01:03:06,750 --> 01:03:07,670 OK. 1337 01:03:07,670 --> 01:03:09,390 Michael, wo stehst du? 1338 01:03:09,390 --> 01:03:10,680 >> Michael: Ich kann mich nicht entscheiden. 1339 01:03:10,680 --> 01:03:12,070 Art der in der Mitte. 1340 01:03:12,070 --> 01:03:12,736 >> JASON HIRSCHHORN: Sie sind in der Mitte. 1341 01:03:12,736 --> 01:03:13,092 Wählen Sie eine. 1342 01:03:13,092 --> 01:03:14,400 >> MICHAEL: Ich werde Glauben haben und sagen, es wird funktionieren. 1343 01:03:14,400 --> 01:03:14,660 >> JASON HIRSCHHORN: OK. 1344 01:03:14,660 --> 01:03:16,047 Sie glauben und sagen, es funktioniert? 1345 01:03:16,047 --> 01:03:26,490 1346 01:03:26,490 --> 01:03:27,020 Was ist passiert? 1347 01:03:27,020 --> 01:03:28,270 >> [Zwischen VOICES] 1348 01:03:28,270 --> 01:03:35,170 1349 01:03:35,170 --> 01:03:35,950 >> JASON HIRSCHHORN: Kein Segment Schuld. 1350 01:03:35,950 --> 01:03:40,320 Wie können wir überprüfen, ob zwei Dinge gleich sind? 1351 01:03:40,320 --> 01:03:42,060 Zwei Dateien sind gleich. 1352 01:03:42,060 --> 01:03:43,300 >> STUDENT 64: Diff. 1353 01:03:43,300 --> 01:03:45,490 >> JASON HIRSCHHORN: Diff. 1354 01:03:45,490 --> 01:03:51,630 Diff Kontrollen für die Unterschiede zwischen zwei Dateien, und wenn er zurück 1355 01:03:51,630 --> 01:03:52,890 nichts, sie sind identisch. 1356 01:03:52,890 --> 01:03:59,030 Und wenn wir uns öffnen, bekommen wir unsere Datei. 1357 01:03:59,030 --> 01:04:00,490 Das war also die richtige Lösung. 1358 01:04:00,490 --> 01:04:01,780 Werfen wir einen Blick zurück auf sie ein weiteres Mal. 1359 01:04:01,780 --> 01:04:04,080 Wir haben eigentlich nicht einmal brauchen, um es zu initialisieren. 1360 01:04:04,080 --> 01:04:05,520 >> Es wäre wahrscheinlich ein bisschen aussehen Reiniger, wenn Sie nicht setzen 1361 01:04:05,520 --> 01:04:07,680 etwas zufällig dort. 1362 01:04:07,680 --> 01:04:13,070 Zu schaffen Der Punkt ist, mussten Sie etwas Platz, um etwas von speichern 1363 01:04:13,070 --> 01:04:15,530 fread und etwas von fwrite. 1364 01:04:15,530 --> 01:04:18,400 Und das Ding musste entweder eine lokale Variable auf den Stapel - man 1365 01:04:18,400 --> 01:04:19,890 könnte etwas Platz malloc'd habe. 1366 01:04:19,890 --> 01:04:23,030 >> So haben wir eigentlich könnten geschrieben malloc hier, und 1367 01:04:23,030 --> 01:04:25,420 das würde gearbeitet haben. 1368 01:04:25,420 --> 01:04:28,660 Und dann würden wir wurden Speicherung unsere Sachen irgendwo auf dem Heap. 1369 01:04:28,660 --> 01:04:31,940 Aber das ist eigentlich, wahrscheinlich, die eleganteste Lösung. 1370 01:04:31,940 --> 01:04:34,490 Erstellen Sie einfach etwas Platz auf dem Stack für diese Dinge zu gehen. 1371 01:04:34,490 --> 01:04:37,690 1372 01:04:37,690 --> 01:04:38,990 >> Ich hätte zwei andere Kommentare. 1373 01:04:38,990 --> 01:04:44,650 Wenn Sie wiederum in diese zu nehmen, und waren dann bekommen auf diese hat, meine Kommentare 1374 01:04:44,650 --> 01:04:47,400 wäre wie folgt. 1375 01:04:47,400 --> 01:04:54,300 Diese 1 ist hier, zu mir, schauen wie von Zauber Zahlen. 1376 01:04:54,300 --> 01:04:56,860 Diese 1, in Bezug auf fread, Sinn macht. 1377 01:04:56,860 --> 01:04:59,580 Das ist die Anzahl der Dinge zu lesen oder zu schreiben. 1378 01:04:59,580 --> 01:05:03,740 >> Aber dieser hier sollte wohl etwas anderes sein. 1379 01:05:03,740 --> 01:05:05,180 Also, was ist eine Lösung? 1380 01:05:05,180 --> 01:05:06,545 >> STUDENT 65: Größe Byte. 1381 01:05:06,545 --> 01:05:10,100 1382 01:05:10,100 --> 01:05:11,080 >> JASON HIRSCHHORN: Wie das? 1383 01:05:11,080 --> 01:05:13,130 >> STUDENT 65: Größe der Zeichen. 1384 01:05:13,130 --> 01:05:13,820 >> JASON HIRSCHHORN: Größe der Zeichen. 1385 01:05:13,820 --> 01:05:15,290 Ja, das ist kein Typ Byte. 1386 01:05:15,290 --> 01:05:16,320 So Größe von char Werke. 1387 01:05:16,320 --> 01:05:30,270 Wir hätten, an der Spitze unseren Code, # definiert, dass. 1388 01:05:30,270 --> 01:05:33,410 Genannt etwas BYTE und es ist wirklich ein Zeichen. 1389 01:05:33,410 --> 01:05:37,675 Eigentlich ein noch besserer Ansatz könnte das gewesen sein - 1390 01:05:37,675 --> 01:05:39,391 uint. 1391 01:05:39,391 --> 01:05:40,780 Jeder weiß, was das ist? 1392 01:05:40,780 --> 01:05:44,388 1393 01:05:44,388 --> 01:05:44,840 >> Entschuldigung. 1394 01:05:44,840 --> 01:05:46,090 Ich habe es nach hinten. 1395 01:05:46,090 --> 01:05:51,620 1396 01:05:51,620 --> 01:05:52,200 Warten Sie, nein. 1397 01:05:52,200 --> 01:05:53,450 Welchen Weg geht das? 1398 01:05:53,450 --> 01:05:58,071 1399 01:05:58,071 --> 01:05:59,660 Jeder weiß, was das ist? 1400 01:05:59,660 --> 01:06:00,950 Ja. 1401 01:06:00,950 --> 01:06:05,650 >> STUDENT 67: Angenommen, um die Standardisierung über Dinge, die Systeme 1402 01:06:05,650 --> 01:06:08,760 haben - wie ganze Zahlen ohne Vorzeichen , die 8 Bytes haben? 1403 01:06:08,760 --> 01:06:11,785 >> JASON HIRSCHHORN: Das ist genau richtig. 1404 01:06:11,785 --> 01:06:14,310 Auf unterschiedlichen Maschinen, von der Größe eines char - 1405 01:06:14,310 --> 01:06:15,180 Regel nicht ein Zeichen. 1406 01:06:15,180 --> 01:06:16,100 Chars sind in der Regel ein Byte. 1407 01:06:16,100 --> 01:06:19,590 Aber die Größe der anderen Datentypen sind verschiedenen Größen auf einem 32-Bit-Rechner 1408 01:06:19,590 --> 01:06:21,370 im Vergleich zu einem 64-Bit-Maschine. 1409 01:06:21,370 --> 01:06:25,180 Ein uint8_t ist immer 8 Bit - 1410 01:06:25,180 --> 01:06:27,210 immer ein Byte. 1411 01:06:27,210 --> 01:06:29,580 >> Und ich muss beinhalten, dass int Standard-Header-Datei. 1412 01:06:29,580 --> 01:06:35,040 So, jetzt, würde dies wohl gewesen sein der beste Weg, um diesen Code zu schreiben. 1413 01:06:35,040 --> 01:06:40,160 1414 01:06:40,160 --> 01:06:41,450 So bekomme ich die magischen Zahlen zu befreien. 1415 01:06:41,450 --> 01:06:44,690 Und ich habe auch ein logischer Geben Sie für Puffer. 1416 01:06:44,690 --> 01:06:49,450 Es ist nicht einfach ein Zeichen, das ist ein Byte, das ist das, was wir erwarten, es zu sein. 1417 01:06:49,450 --> 01:06:53,400 >> Und hier oben, haben wir eigentlich ein bisschen robuster. 1418 01:06:53,400 --> 01:06:55,190 Wir sind es nicht, die den Aufruf ein char, - 1419 01:06:55,190 --> 01:06:58,630 vielleicht, wer weiß - eine andere sein könnte Größe auf verschiedenen Maschinen. 1420 01:06:58,630 --> 01:07:02,025 Wir sagen, das ist eigentlich genau ein Byte, immer, egal was passiert. 1421 01:07:02,025 --> 01:07:05,810 Und wenn wir hier sehen, wir machen cp. 1422 01:07:05,810 --> 01:07:08,340 Uh-oh. 1423 01:07:08,340 --> 01:07:09,590 Was ist passiert? 1424 01:07:09,590 --> 01:07:14,470 1425 01:07:14,470 --> 01:07:16,170 >> STUDENT 68: Es könnte eingeschaltet werden. 1426 01:07:16,170 --> 01:07:17,880 >> JASON HIRSCHHORN: Was? 1427 01:07:17,880 --> 01:07:19,130 >> STUDENT 69: Ist es das? 1428 01:07:19,130 --> 01:07:21,940 1429 01:07:21,940 --> 01:07:25,080 >> STUDENT 70: Du hast doch nicht definieren sie als eine Art. 1430 01:07:25,080 --> 01:07:28,684 >> STUDENT 71: Aber es sollte in Standard definiert werden. 1431 01:07:28,684 --> 01:07:29,934 >> STUDENT 72: Was ist los? 1432 01:07:29,934 --> 01:07:37,660 1433 01:07:37,660 --> 01:07:40,210 >> STUDENT 73: Sollte definieren alle Kappen sein? 1434 01:07:40,210 --> 01:07:41,370 >> JASON HIRSCHHORN: Also ist es nicht # define. 1435 01:07:41,370 --> 01:07:45,490 Eigentlich, in diesem Fall bin ich verwenden wollen typedef. 1436 01:07:45,490 --> 01:07:48,590 Weil wir sie als eine Art an einem Ort. 1437 01:07:48,590 --> 01:07:51,990 Also in diesem Fall, die wir wirklich wollen, typedef wie wir Druck eine neue Art 1438 01:07:51,990 --> 01:07:54,490 Byte, und es ist im Wesentlichen dafür. 1439 01:07:54,490 --> 01:07:56,590 Es ist ein bisschen anders als # define. 1440 01:07:56,590 --> 01:08:02,740 >> Und nun ist unsere Code perfekt. 1441 01:08:02,740 --> 01:08:05,230 Also, noch einmal, # define nimmt etwas, ersetzt es überall 1442 01:08:05,230 --> 01:08:06,780 mit der anderen Sache. 1443 01:08:06,780 --> 01:08:07,920 Es ist nur ein Makro - 1444 01:08:07,920 --> 01:08:09,420 Kurzformel der magischen Zahlen loszuwerden. 1445 01:08:09,420 --> 01:08:11,360 Aber in diesem Fall, weil wir Sie es als eine Art - 1446 01:08:11,360 --> 01:08:12,180 hier - 1447 01:08:12,180 --> 01:08:19,880 damit, dass die Arbeit, müssen wir zu typedef was Byte ist. 1448 01:08:19,880 --> 01:08:21,840 >> Und wir es definieren, genau hier. 1449 01:08:21,840 --> 01:08:24,750 Es ist nicht eine Struktur, es ist eigentlich nur eine Ganzzahl ohne Vorzeichen. 1450 01:08:24,750 --> 01:08:27,680 Es ist ein Byte lang. 1451 01:08:27,680 --> 01:08:31,910 Dieser Code wird online verfügbar sein, und Sie alle sollten es jetzt haben. 1452 01:08:31,910 --> 01:08:33,830 >> So haben wir - 1453 01:08:33,830 --> 01:08:34,250 perfekt - 1454 01:08:34,250 --> 01:08:41,359 13 Minuten nach links zu gehen Problem über Set 5. 1455 01:08:41,359 --> 01:08:44,270 Ich möchte durch copy.c zusammen gehen, und dann werden wir kurz sprechen 1456 01:08:44,270 --> 01:08:47,120 über die anderen Teile des Problems gesetzt. 1457 01:08:47,120 --> 01:08:48,899 Also lassen Sie mich nach oben ziehen copy.c. 1458 01:08:48,899 --> 01:09:03,930 1459 01:09:03,930 --> 01:09:08,810 Und das Coole daran ist, wir haben tatsächlich bereits eine Menge von dieser Code geschrieben. 1460 01:09:08,810 --> 01:09:11,180 >> Der Code, den wir wörtlich schrieb nur kamen von hier, als ich 1461 01:09:11,180 --> 01:09:13,120 schreibe dies auf eigene Faust. 1462 01:09:13,120 --> 01:09:16,990 Aber das ist copy.c, bildet die Grundlage Für die ersten beiden Teile 1463 01:09:16,990 --> 01:09:22,340 das Problem für whodunit.c, stellen die Sie brauchen, um zu schreiben, und resize.c. 1464 01:09:22,340 --> 01:09:27,050 Recover.c, die die dritte und letzte ist Teil des Problems gesetzt, ist nicht 1465 01:09:27,050 --> 01:09:29,529 basierend aus dieser Datei. 1466 01:09:29,529 --> 01:09:32,200 >> Sie gehen zu müssen, um die Datei zu schreiben, geben wir Ihnen eine Vorlage für die 1467 01:09:32,200 --> 01:09:34,620 Datei, aber es hat nichts mit copy.c. tun 1468 01:09:34,620 --> 01:09:38,675 Aber weil copy.c ist die Grundlage für die ersten beiden Teile, wir gehen 1469 01:09:38,675 --> 01:09:42,000 , um durch sie jetzt gehen, so haben Sie ein gutes Gefühl dafür, was es tut. 1470 01:09:42,000 --> 01:09:43,640 >> Und die Kommentare geben etwas von ihm entfernt. 1471 01:09:43,640 --> 01:09:45,120 Wir haben schon einige geschrieben. 1472 01:09:45,120 --> 01:09:49,220 Erstens, sind wir sicher, wir drei Argumente. 1473 01:09:49,220 --> 01:09:50,560 Als nächstes werden wir die Erinnerung an die Dateinamen. 1474 01:09:50,560 --> 01:09:52,960 Also diesen Schritt übersprungen, wenn wir wir unser Ding codiert - 1475 01:09:52,960 --> 01:09:54,700 wenn unsere cp. 1476 01:09:54,700 --> 01:09:56,750 Aber hier, sie machen es ein bisschen sauberer. 1477 01:09:56,750 --> 01:09:59,350 >> Sie sind zu überprüfen, um sicherzustellen, Beide Dateien sind gut, in 1478 01:09:59,350 --> 01:10:00,450 Zusätzlich zu öffnen. 1479 01:10:00,450 --> 01:10:04,760 Wir schrieben alle diesen Code gerade jetzt, also bin ich nicht näher auf dieses Codes wohnen. 1480 01:10:04,760 --> 01:10:09,670 Weiter gibt einige Sachen, die spezifisch ist die Arten von Dateien die wir verwenden, die 1481 01:10:09,670 --> 01:10:12,240 Bitmap-Dateien sind. 1482 01:10:12,240 --> 01:10:15,660 Bitmap-Dateien haben einige Metadaten mit ihnen verbunden sind. 1483 01:10:15,660 --> 01:10:20,190 >> Also die ersten paar Bytes Ihnen sagen, über die Datei. 1484 01:10:20,190 --> 01:10:23,460 Sie sind nicht die Farben das Pixel in diesem Bild. 1485 01:10:23,460 --> 01:10:25,120 Sie sagen Ihnen, über die Datei. 1486 01:10:25,120 --> 01:10:28,220 Und wenn Sie durch das Problem Satz zu lesen, Sie werden viel mehr Informationen haben, 1487 01:10:28,220 --> 01:10:33,100 auf welche Arten von Metadaten-Strukturen sind mit Bitmaps enthalten. 1488 01:10:33,100 --> 01:10:39,350 >> Aber das ist, warum wir diesen ersten Set - dieser Code hier richtig. 1489 01:10:39,350 --> 01:10:42,490 Wir lesen die Metadaten - 1490 01:10:42,490 --> 01:10:45,800 zwei Stücke von Metadaten - die Datei Header und die Info-Header. 1491 01:10:45,800 --> 01:10:51,030 Und wir werden prüfen einige Teile davon zu sicherzustellen, dass es eine wahre Bitmap-Datei ist 1492 01:10:51,030 --> 01:10:52,420 bevor Sie fortfahren. 1493 01:10:52,420 --> 01:10:55,470 >> Und wieder, das sind Details, die wir müssen nicht jetzt in zu gehen. 1494 01:10:55,470 --> 01:10:57,720 Wenn Sie über das Problem Satz zu lesen, Sie werden diese zu verstehen. 1495 01:10:57,720 --> 01:11:01,370 Lange Rede kurzer Sinn, diese werden einfach nur sagen, dies ist eine Bitmap-Datei, und 1496 01:11:01,370 --> 01:11:02,810 bestätigt, dass. 1497 01:11:02,810 --> 01:11:05,180 >> Als nächstes schreiben wir die auf die Datei aus. 1498 01:11:05,180 --> 01:11:05,660 Wir sehen, dass hier. 1499 01:11:05,660 --> 01:11:06,910 Wir gehen zum Zeigers schreibt. 1500 01:11:06,910 --> 01:11:09,260 1501 01:11:09,260 --> 01:11:11,320 Als nächstes werden wir die Bestimmung Polsterung. 1502 01:11:11,320 --> 01:11:15,240 Also noch einmal, wie es mit der Besonderheit, eine Bitmap-Datei, sind einige Linien 1503 01:11:15,240 --> 01:11:16,840 Polsterung am Ende. 1504 01:11:16,840 --> 01:11:19,000 Und wenn Sie durch das Problem Satz zu lesen, Sie werden mehr über padding lernen. 1505 01:11:19,000 --> 01:11:22,330 Das ist die Formel, um Polsterung finden. 1506 01:11:22,330 --> 01:11:23,610 >> Wichtig zu erinnern - 1507 01:11:23,610 --> 01:11:29,720 wenn Sie die Größe einer Bitmap ändern Datei, die Polsterung Veränderungen. 1508 01:11:29,720 --> 01:11:31,970 Wenn Sie die Größe einer Änderung Datei, die Polsterung Veränderungen. 1509 01:11:31,970 --> 01:11:34,310 Es ist nie zu sein größer als 3 - 1510 01:11:34,310 --> 01:11:36,510 es wird 0 bis 3 sein kann, inklusive. 1511 01:11:36,510 --> 01:11:38,930 Aber wenn Sie die Größe ändern etwas, die Polsterung Veränderungen. 1512 01:11:38,930 --> 01:11:47,100 >> Wenn ich nur ein Pixel in dieser Zeile, I müssen drei Bytes der Polsterung, denn 1513 01:11:47,100 --> 01:11:51,190 jede Reihe hat ein Vielfaches von vier sein Bytes lang in einer Bitmap-Datei. 1514 01:11:51,190 --> 01:11:56,120 Aber wenn ich es zu verdoppeln, um von einem Pixel gehen zwei Pixel, von denen jedes, 1515 01:11:56,120 --> 01:11:59,510 sagen wir, ist ein Byte, dann muss ich zwei Bytes der Polsterung zu machen 1516 01:11:59,510 --> 01:12:00,970 , die gleich vier ist. 1517 01:12:00,970 --> 01:12:04,200 >> Also, wenn ich die Größe etwas zu ändern, Ich muss den Betrag ändern 1518 01:12:04,200 --> 01:12:06,551 Polsterung ich habe. 1519 01:12:06,551 --> 01:12:08,100 Heißt das Sinn machen, alle? 1520 01:12:08,100 --> 01:12:12,020 1521 01:12:12,020 --> 01:12:18,720 Als nächstes durchlaufen wir in jeder Zeile, oder über alle Reihen. 1522 01:12:18,720 --> 01:12:21,400 Und dann durch laufen wir jede Spalte in jeder Zeile. 1523 01:12:21,400 --> 01:12:25,330 Wir behandeln diese wie Bitmap Gitter, wie wir behandelt haben 1524 01:12:25,330 --> 01:12:26,490 der Vorstand in 15. 1525 01:12:26,490 --> 01:12:29,200 >> Wie wir behandelt werden, wenn die Steine wir sie gedruckt auf dem Bildschirm. 1526 01:12:29,200 --> 01:12:31,350 Ein Raster aus Zeilen und Spalten. 1527 01:12:31,350 --> 01:12:32,350 Dann - wir sahen dies. 1528 01:12:32,350 --> 01:12:33,840 Wir haben eigentlich nur diese codiert. 1529 01:12:33,840 --> 01:12:35,780 Wir haben eine vorübergehende Speicherung. 1530 01:12:35,780 --> 01:12:38,710 Wir lesen dort, und dann Schreiben wir es aus. 1531 01:12:38,710 --> 01:12:42,680 Das ist genau das, was wir gerade getan. 1532 01:12:42,680 --> 01:12:46,760 >> Weiter, weil ich sagte, jede Zeile endet in einem gewissen Polsterung, wir 1533 01:12:46,760 --> 01:12:48,260 Überspringen dieser Polsterung - 1534 01:12:48,260 --> 01:12:51,000 die alte Polsterung. 1535 01:12:51,000 --> 01:12:52,630 Und dann haben wir es wieder hinzuzufügen. 1536 01:12:52,630 --> 01:12:55,140 In diesem Fall erstellen wir genau die gleiche Datei. 1537 01:12:55,140 --> 01:12:56,180 Wir stehen noch kopieren. 1538 01:12:56,180 --> 01:12:57,700 So ist diese Linie irgendwie albern. 1539 01:12:57,700 --> 01:12:59,660 Wir konnten buchstäblich nur setzen die Polsterung in. 1540 01:12:59,660 --> 01:13:04,290 >> Aber wenn Sie die Größe der Datei zu ändern, Sie wollen immer noch diese Zeile? 1541 01:13:04,290 --> 01:13:08,510 1542 01:13:08,510 --> 01:13:11,560 Also, wenn wir die Größe einer Datei zu ändern, wir überspringen wollen noch 1543 01:13:11,560 --> 01:13:12,810 über die alte Polsterung? 1544 01:13:12,810 --> 01:13:15,170 1545 01:13:15,170 --> 01:13:15,970 >> STUDENT 74: Ja. 1546 01:13:15,970 --> 01:13:17,090 >> JASON HIRSCHHORN: Also tun wir. 1547 01:13:17,090 --> 01:13:19,290 Da diese wiederum Angebote mit der Quelldatei. 1548 01:13:19,290 --> 01:13:21,570 Wir reden nicht über die Polsterung sorgen aus der Quelldatei. 1549 01:13:21,570 --> 01:13:23,410 Wir wollen in die nächste Zeile zu gehen. 1550 01:13:23,410 --> 01:13:28,850 Aber wir wollen nicht einfach zurück setzen die alte Höhe der Polsterung. 1551 01:13:28,850 --> 01:13:31,540 Wir müssen zurück legte die neue Höhe der Polsterung. 1552 01:13:31,540 --> 01:13:35,810 >> Also, wenn wir verändern die Größe ein Datei, über die wir überspringen wollen immer noch 1553 01:13:35,810 --> 01:13:38,270 Polsterung in der alten Datei - was wir lesen gerade in aus. 1554 01:13:38,270 --> 01:13:40,370 Aber das, was wir zu schreiben, werden wir zu müssen einige andere zurückgestellt 1555 01:13:40,370 --> 01:13:41,890 Anzahl der Polsterung, die wir haben bestimmt. 1556 01:13:41,890 --> 01:13:42,780 Ja. 1557 01:13:42,780 --> 01:13:44,550 >> STUDENT 75: Die Reihenfolge dieser beiden Linien spielt keine Rolle, oder? 1558 01:13:44,550 --> 01:13:46,160 Weil du der Handhabung verschiedene Dateien. 1559 01:13:46,160 --> 01:13:46,620 >> JASON HIRSCHHORN: Genau. 1560 01:13:46,620 --> 01:13:48,220 Die Reihenfolge dieser beiden Linien spielt keine Rolle. 1561 01:13:48,220 --> 01:13:49,790 Wir schreiben diese Linie. 1562 01:13:49,790 --> 01:13:51,430 Dies ist hier für die Datei wir sind zu schreiben. 1563 01:13:51,430 --> 01:13:54,370 Das ist wichtig, damit wir die richtige Menge der Polsterung. 1564 01:13:54,370 --> 01:13:57,560 Das hat mit dem in der Datei umzugehen. 1565 01:13:57,560 --> 01:13:58,560 Wir wollen Recht überspringen über die Polsterung. 1566 01:13:58,560 --> 01:13:59,470 >> Wir wollen nicht zu lesen - 1567 01:13:59,470 --> 01:14:01,500 wenn wir lesen ein Byte zu einem Zeitpunkt, wir kümmern sich nicht um diesen padding Bytes. 1568 01:14:01,500 --> 01:14:04,070 Wir wollen in die nächste Zeile zu bewegen. 1569 01:14:04,070 --> 01:14:11,800 Schließlich genau wie Lucy für uns gegeben hat, wir schließen Sie die Dateien und 0 zurück. 1570 01:14:11,800 --> 01:14:13,890 Also das ist copy.c. 1571 01:14:13,890 --> 01:14:17,850 Und wir tatsächlich geschrieben - wir verbrachten die meisten Abschnitt schreibe, im Wesentlichen. 1572 01:14:17,850 --> 01:14:18,740 >> Sie machte diese. 1573 01:14:18,740 --> 01:14:22,440 Also hoffentlich einen guten Sinn haben von dem, was hier los. 1574 01:14:22,440 --> 01:14:25,890 Der große Unterschied, ehrlich gesagt, ist nur dieser erste Teil, das sich mit 1575 01:14:25,890 --> 01:14:29,970 Besonderheiten der Bitmap-Dateien. 1576 01:14:29,970 --> 01:14:33,570 So habe ich, wie meine nächsten Folie, was wollen wir tun? 1577 01:14:33,570 --> 01:14:35,510 Nun, lassen Sie uns über Krimi denken. 1578 01:14:35,510 --> 01:14:38,080 >> Und für jemanden, der durch lesen das Problem eingestellt, was wir tun 1579 01:14:38,080 --> 01:14:41,410 müssen im Krimi zu tun? 1580 01:14:41,410 --> 01:14:42,080 Einfach. 1581 01:14:42,080 --> 01:14:42,460 Aleja. 1582 01:14:42,460 --> 01:14:48,570 >> ALEJA: Können Sie den Teil nehmen jedes Pixels, die rot zeigt. 1583 01:14:48,570 --> 01:14:49,730 Und dann - 1584 01:14:49,730 --> 01:14:50,730 Art? 1585 01:14:50,730 --> 01:14:51,860 >> JASON HIRSCHHORN: OK. 1586 01:14:51,860 --> 01:14:54,460 So nehmen Sie das Teil von jedem Pixels, die rot zeigt. 1587 01:14:54,460 --> 01:14:57,234 Das ist nah, aber nicht alles. 1588 01:14:57,234 --> 01:14:59,780 >> STUDENT 76: Nun, es gibt verschiedene Möglichkeiten, es zu tun. 1589 01:14:59,780 --> 01:14:59,870 >> JASON HIRSCHHORN: OK. 1590 01:14:59,870 --> 01:15:03,070 Geben Sie mir einen Weg. 1591 01:15:03,070 --> 01:15:08,240 >> STUDENT 76: Nehmen Sie alle rot, und dann betonen, die blau und grün. 1592 01:15:08,240 --> 01:15:10,010 >> JASON HIRSCHHORN: OK. 1593 01:15:10,010 --> 01:15:11,830 Also diese beiden Möglichkeiten gegeben - 1594 01:15:11,830 --> 01:15:15,210 es klingt wie wir es ein Pixel, es hat einen roten, blauen und grünen Ebene. 1595 01:15:15,210 --> 01:15:19,350 Wir wollen die relativen Pegel ändern die roten, blauen und grünen, je 1596 01:15:19,350 --> 01:15:20,740 an diesem Pixel. 1597 01:15:20,740 --> 01:15:28,380 Wo in diesem Code sollten wir ändern die relative rot, blau und grün 1598 01:15:28,380 --> 01:15:29,720 Ebenen eines gegebenen Pixels. 1599 01:15:29,720 --> 01:15:30,600 Nachdem wir es zu lesen - 1600 01:15:30,600 --> 01:15:32,520 bevor wir es zu schreiben? 1601 01:15:32,520 --> 01:15:34,564 Gib mir die Zeilennummer. 1602 01:15:34,564 --> 01:15:35,950 >> Mehrere Schüler: 83. 1603 01:15:35,950 --> 01:15:37,320 >> JASON HIRSCHHORN: 83. 1604 01:15:37,320 --> 01:15:38,570 So finden Sie hier. 1605 01:15:38,570 --> 01:15:40,830 1606 01:15:40,830 --> 01:15:45,710 Für Krimi, der Code, den Sie brauchen Schreib sollten alle gehen recht. 1607 01:15:45,710 --> 01:15:47,640 Und das ist der einzige Code Sie brauchen, um zu schreiben. 1608 01:15:47,640 --> 01:15:51,520 Weil, wie wir gehört haben, alles, was Sie brauchen zu tun ist, ändern Sie diese relativ blau, 1609 01:15:51,520 --> 01:15:54,420 rot, grün und Ebenen von jedem Pixel. 1610 01:15:54,420 --> 01:15:58,250 >> Sie haben es zu lesen in, und jetzt bist du gehen, um es zu schreiben. 1611 01:15:58,250 --> 01:16:03,100 Wie bekomme ich - wenn ich dieses Ding genannten Triple, genau hier, und es ist der 1612 01:16:03,100 --> 01:16:04,570 Geben RGBTRIPLE - 1613 01:16:04,570 --> 01:16:08,650 gut, wenn wir in bmp.h sah, was ist RGBTRIPLE? 1614 01:16:08,650 --> 01:16:11,450 1615 01:16:11,450 --> 01:16:12,700 >> STUDENT 77: Es ist eine Struktur. 1616 01:16:12,700 --> 01:16:17,440 1617 01:16:17,440 --> 01:16:18,900 >> JASON HIRSCHHORN: RGBTRIPLE ist eine Struktur. 1618 01:16:18,900 --> 01:16:22,330 Wir sehen, dass hier hin. 1619 01:16:22,330 --> 01:16:26,600 Und so, wenn ich wollte, den Zugang, sagen wir, die rote Ebene der Struktur, wie kann ich 1620 01:16:26,600 --> 01:16:30,005 Zugriff auf die rote Ebene dieser Struktur? 1621 01:16:30,005 --> 01:16:37,280 >> [CLASS murmelt] 1622 01:16:37,280 --> 01:16:38,530 >> STUDENT 78: RGBTRIPLE.rgbtred? 1623 01:16:38,530 --> 01:16:47,250 1624 01:16:47,250 --> 01:16:48,856 >> JASON HIRSCHHORN: Ist das richtig? 1625 01:16:48,856 --> 01:16:53,040 >> STUDENT 79: Es sollte sein Dreifach- Punkt, statt RGBTRIPLE Punkt? 1626 01:16:53,040 --> 01:16:54,120 >> JASON HIRSCHHORN: Triple. 1627 01:16:54,120 --> 01:16:56,700 Dreifach ist der lokale Variable, so hier gibt es keine Zeiger hier. 1628 01:16:56,700 --> 01:16:58,400 So verwenden wir nur die Punktnotation. 1629 01:16:58,400 --> 01:17:00,480 Das gibt mir das Niveau der rot. 1630 01:17:00,480 --> 01:17:06,180 Wenn ich es ändern wollen, ich habe gerade festgelegt sie gleich etwas anderes. 1631 01:17:06,180 --> 01:17:13,190 Also noch einmal, diese Codezeile zugreift diese Variable in diese Struktur, und 1632 01:17:13,190 --> 01:17:15,070 wir können es, etwas Neues zu setzen. 1633 01:17:15,070 --> 01:17:20,040 >> Also für Krimi, wieder, das ist, im Wesentlichen, was wir tun müssen. 1634 01:17:20,040 --> 01:17:21,170 Ganz einfach. 1635 01:17:21,170 --> 01:17:25,020 Ändern Sie einfach einige relativ Ebenen und Dies ist, wo der Code geht. 1636 01:17:25,020 --> 01:17:27,720 Ändern der Größe auf der anderen Seite, ist ein bisschen schwieriger. 1637 01:17:27,720 --> 01:17:30,900 In der Tat ist wohl die Größe des schwierigste Teil dieses Problems eingestellt. 1638 01:17:30,900 --> 01:17:32,720 Wir haben drei Minuten, um über sie gehen. 1639 01:17:32,720 --> 01:17:34,910 >> Aber noch einmal, wir bereits geschrieben haben, die meisten von diesem Code, so dass wir 1640 01:17:34,910 --> 01:17:36,500 sollte recht vertraut sein. 1641 01:17:36,500 --> 01:17:40,750 Was sind einige der Dinge, die wir tun wollen, um in Größe ändern, wenn Sie über das gelesen habe 1642 01:17:40,750 --> 01:17:43,470 Problem eingestellt? 1643 01:17:43,470 --> 01:17:45,290 Wenn Sie sie mir zu geben, haben wir kann über sie zu sprechen. 1644 01:17:45,290 --> 01:17:47,340 Was sind einige Dinge, die wir tun wollen? 1645 01:17:47,340 --> 01:17:47,970 >> STUDENT 80: Vertikal - 1646 01:17:47,970 --> 01:17:52,360 so muss man horizontal ändern Sie die Größe, aber vertikal ändern Sie die Größe als auch? 1647 01:17:52,360 --> 01:17:58,475 >> JASON HIRSCHHORN: Also, wenn uns gegeben ein pixel, und wir wollen es durch eine Größe geändert werden soll 1648 01:17:58,475 --> 01:18:03,460 Faktor zwei, braucht es nun sein horizontal geändert und in der Größe verändert 1649 01:18:03,460 --> 01:18:05,220 vertikal. 1650 01:18:05,220 --> 01:18:06,640 Heißt das Sinn? 1651 01:18:06,640 --> 01:18:07,060 Ja. 1652 01:18:07,060 --> 01:18:09,300 Also das ist wohl das größte Herausforderung. 1653 01:18:09,300 --> 01:18:10,430 Und wir erfahren, dass in einer Sekunde zu sprechen. 1654 01:18:10,430 --> 01:18:11,065 Ja. 1655 01:18:11,065 --> 01:18:15,270 >> STUDENT 81: Die Art, wie ich es gedacht Sie wurde erforderlich, drucken Sie es aus - 1656 01:18:15,270 --> 01:18:15,490 >> JASON HIRSCHHORN: Warten. 1657 01:18:15,490 --> 01:18:17,580 Sie sagen uns nicht, was Sie getan haben. 1658 01:18:17,580 --> 01:18:20,620 Wir werden in der Logik sprechen. 1659 01:18:20,620 --> 01:18:21,870 >> STUDENT 81: OK. 1660 01:18:21,870 --> 01:18:25,090 1661 01:18:25,090 --> 01:18:27,410 Was war die Frage? 1662 01:18:27,410 --> 01:18:28,892 >> JASON HIRSCHHORN: Sie haben hob die Hand. 1663 01:18:28,892 --> 01:18:31,600 Es war keine Frage. 1664 01:18:31,600 --> 01:18:32,520 Lassen Sie mich präsentieren. 1665 01:18:32,520 --> 01:18:34,560 Lassen Sie mich nur kurz diskutieren diese. 1666 01:18:34,560 --> 01:18:38,400 So haben wir ein Pixel, wir wollen replizieren, horizontal und 1667 01:18:38,400 --> 01:18:39,360 vertikal. 1668 01:18:39,360 --> 01:18:48,920 Also ideal, was wir hier tun, ist, dass wir in unserer Pixel lesen, schreiben wir es 1669 01:18:48,920 --> 01:18:51,690 jedoch viele Male. 1670 01:18:51,690 --> 01:18:54,720 >> Aber dann haben wir unsere Trick hier, weil dann auf die wollen wir überspringen 1671 01:18:54,720 --> 01:18:57,660 nächste Zeile und schreiben Sie es auf die Anfang der nächsten Zeile. 1672 01:18:57,660 --> 01:19:02,960 Wenn wir also beide replizieren möchten horizontal und vertikal, was 1673 01:19:02,960 --> 01:19:05,050 eine gute Möglichkeit, das zu tun - 1674 01:19:05,050 --> 01:19:06,780 ein zwar gut, das zu tun? 1675 01:19:06,780 --> 01:19:11,950 So brauchen wir nicht ständig nach um unsere Datei, um die Dinge zu platzieren. 1676 01:19:11,950 --> 01:19:14,360 >> Diese Frage vielleicht nicht haben sinnvoll, aber ich denke, dass ein 1677 01:19:14,360 --> 01:19:15,800 beantworten, es wird helfen. 1678 01:19:15,800 --> 01:19:17,210 >> STUDENT 82: Erstellen Sie ein Array? 1679 01:19:17,210 --> 01:19:20,090 >> JASON HIRSCHHORN: Also lassen Sie denken von jeder Datei in einer Reihe. 1680 01:19:20,090 --> 01:19:22,550 Lassen Sie uns in Bezug auf die Zeilen denken. 1681 01:19:22,550 --> 01:19:26,670 Wenn wir unsere ersten Reihe aus unserer kleinen Bild, können wir diese Zeile machen 1682 01:19:26,670 --> 01:19:30,640 in eine große Reihe von einem großen Bild, und replizieren diese Zeile jedoch 1683 01:19:30,640 --> 01:19:34,250 oft muss sie wiederholt werden, anstatt sich Pixel für Pixel 1684 01:19:34,250 --> 01:19:37,260 was verwirrend, wenn bekommt Umgang mit Dateien. 1685 01:19:37,260 --> 01:19:38,730 >> Weil, wenn wir - 1686 01:19:38,730 --> 01:19:41,260 Ich aus Platz bin. 1687 01:19:41,260 --> 01:19:46,490 Wenn das unsere Datei, und wir haben, ein Pixel gibt, und wir wollen es 1688 01:19:46,490 --> 01:19:49,840 genau dort, wir haben noch einige Dinge Notwendigkeit, dass dort, wenn wir gehen 1689 01:19:49,840 --> 01:19:51,450 Schreiben und der Erstellung unserer neuen Datei - 1690 01:19:51,450 --> 01:19:53,250 unsere Datei, die doppelt so groß ist. 1691 01:19:53,250 --> 01:19:56,820 >> Aber es ist wirklich schwer mit Dateifunktionen zu überspringen, um neue Zeilen 1692 01:19:56,820 --> 01:20:00,260 so, und dann wieder hier und die Dinge dort. 1693 01:20:00,260 --> 01:20:04,500 Es ist fast unmöglich, etwas zu tun so, wenn das Sinn macht. 1694 01:20:04,500 --> 01:20:10,180 Also, wenn wir in Bezug auf Zeilen denken, können wir nehmen unsere Reihe, und dann legen Sie sie - 1695 01:20:10,180 --> 01:20:11,720 replizieren Reihen vertikal. 1696 01:20:11,720 --> 01:20:15,860 >> Und das ist, wie wir mit der Größenänderung vertikal statt horizontal. 1697 01:20:15,860 --> 01:20:18,810 Das war irgendwie schnell und ein wenig verwirrend. 1698 01:20:18,810 --> 01:20:22,375 Leider ist unsere Zeit ist um. 1699 01:20:22,375 --> 01:20:27,340 Ich werde draußen für die von Ihnen stehen hier, die Fragen über die haben 1700 01:20:27,340 --> 01:20:30,500 Problem Satz, einschließlich erholen. 1701 01:20:30,500 --> 01:20:32,320 >> Also lassen Sie uns jetzt vertagen. 1702 01:20:32,320 --> 01:20:34,480 Und wieder, wenn Sie irgendwelche Fragen haben, wir können draußen unterhalten. 1703 01:20:34,480 --> 01:20:38,294