1 00:00:00,000 --> 00:00:02,730 [Powered by Google Translate] [TAQSIMA 5: INQAS komdu] 2 00:00:02,730 --> 00:00:05,180 [Nate Hardison, Università ta 'Harvard] 3 00:00:05,180 --> 00:00:08,260 [Dan huwa CS50.] [CS50.TV] 4 00:00:08,260 --> 00:00:11,690 Allura merħba lura, guys. 5 00:00:11,690 --> 00:00:16,320 Merħba għas-sezzjoni 5. 6 00:00:16,320 --> 00:00:20,220 Fuq dan il-punt, wara li kkompletaw kwizz 0 u wara li jkunu raw kif inti ghamilt, 7 00:00:20,220 --> 00:00:25,770 nisperaw tħossok verament tajba għaliex I kien impressjonat ħafna mill-punteġġi f'din it-taqsima. 8 00:00:25,770 --> 00:00:28,050 Għal telespettaturi online tagħna, aħna kellna koppja ta 'mistoqsijiet 9 00:00:28,050 --> 00:00:33,680 dwar l-aħħar żewġ problemi fuq is-sett problema - jew fuq il-kwizz, pjuttost. 10 00:00:33,680 --> 00:00:39,690 Allura aħna qed tmur biex jmorru fuq dawk verament malajr sabiex kulħadd jara dak li ġara 11 00:00:39,690 --> 00:00:45,060 u kif jgħaddu s-soluzzjoni reali pjuttost milli biss viewing-soluzzjoni nnifisha. 12 00:00:45,060 --> 00:00:50,330 Aħna se jmorru fuq l-aħħar ftit problemi verament malajr, 32 u 33. 13 00:00:50,330 --> 00:00:53,240 Just, għal darb'oħra, b'tali mod li l-telespettaturi online jista 'jara dan. 14 00:00:53,240 --> 00:00:59,080 >> Jekk iddawwar għall-problema tiegħek 32, li hija fuq il-paġna 13, 15 00:00:59,080 --> 00:01:02,730 13 minn 16, problema 32 hija dwar swaps. 16 00:01:02,730 --> 00:01:05,010 Hija kienet kollha dwar iskambji żewġ numri interi. 17 00:01:05,010 --> 00:01:08,740 Hu l-problema li għandna ntlaqgħet marret fuq ftit drabi fil lecture. 18 00:01:08,740 --> 00:01:13,590 U fil hawn, dak li konna inti titlob sabiex tagħmel huwa traċċa memorja malajr. 19 00:01:13,590 --> 00:01:17,000 Biex timla l-valuri tal-fatturi varjabbli kif huma fuq il-munzell 20 00:01:17,000 --> 00:01:20,250 bħala l-kodiċi tmur permezz din il-funzjoni tpartit. 21 00:01:20,250 --> 00:01:24,500 B'mod partikolari, dak li aħna qed tħares lejn - I'm se timplimenta din iPad isfel - 22 00:01:24,500 --> 00:01:29,650 b'mod partikolari, dak li aħna qed tħares lejn huwa din il-linja numru 6 dritt hawn. 23 00:01:29,650 --> 00:01:36,740 U huwa numru 6 għall biss kontigwità mal-problema ta 'qabel. 24 00:01:36,740 --> 00:01:41,720 Dak li rridu nagħmlu hu wiri jew it-tikketta l-istat ta 'memorja 25 00:01:41,720 --> 00:01:46,090 kif huwa fil-ħin meta aħna tesegwixxi dan in-numru linja 6, 26 00:01:46,090 --> 00:01:52,540 li hija effettivament ritorn mill-funzjoni tpartit tagħna dritt hawn. 27 00:01:52,540 --> 00:01:59,450 Jekk aħna iscroll hawn, rajna li l-indirizzi ta 'kollox fil-memorja kienet ipprovduta għalina. 28 00:01:59,450 --> 00:02:02,540 Dan huwa ħafna importanti; aħna ser terga 'lura lilu biss mument. 29 00:02:02,540 --> 00:02:09,240 U mbagħad stabbiliti hawn fil-qiegħ, kellna dijagramma memorja ftit li aħna qed tmur biex jirreferi għal. 30 00:02:09,240 --> 00:02:12,490 I attwalment għamlu dan fuq iPad tiegħi. 31 00:02:12,490 --> 00:02:20,720 Allura jien ser jalternaw quddiem u lura bejn il-iPad u dan il-kodiċi biss għall-referenza. 32 00:02:20,720 --> 00:02:26,540 >> Nibdew. L-ewwel, ejja tiffoka fuq l-ewwel koppja ta 'linji ta' prinċipali dritt hawn. 33 00:02:26,540 --> 00:02:30,220 Biex tibda, aħna qed tmur biex initialize x sa 1 uy sa 2. 34 00:02:30,220 --> 00:02:33,040 Allura aħna għandna żewġ varjabbli numru sħiħ, dawn qed kemm ser jitqiegħdu fuq il-munzell. 35 00:02:33,040 --> 00:02:36,050 Aħna ser ipoġġi 1 u 2 fihom. 36 00:02:36,050 --> 00:02:43,150 Mela jekk jien flip fuq l iPad tiegħi, wieħed jittama, ejja ara - 37 00:02:43,150 --> 00:02:48,660 Apple duplikazzjoni TV, u hemm immorru. Okay. 38 00:02:48,660 --> 00:02:51,670 Mela jekk jien flip fuq l iPad tiegħi, 39 00:02:51,670 --> 00:02:56,220 Irrid li initialize x sa y 1 u sa 2. 40 00:02:56,220 --> 00:03:00,580 We do dan sempliċement billi tikteb 1 fil-kaxxa mmarkata x 41 00:03:00,580 --> 00:03:07,730 u 2 fil-kaxxa mmarkata y. Pjuttost sempliċi. 42 00:03:07,730 --> 00:03:11,620 Allura issa ejja mmorru lura għall-laptop, tara x'jiġri li jmiss. 43 00:03:11,620 --> 00:03:15,810 Allura din il-linja li jmiss huwa fejn affarijiet nikseb delikata. 44 00:03:15,810 --> 00:03:28,110 Aħna jgħaddu l-indirizz ta 'xu l-indirizz ta' y bħala l-parametri aub għall-funzjoni tpartit. 45 00:03:28,110 --> 00:03:32,380 L-indirizz tal xu l-indirizz ta 'y huma affarijiet li aħna ma jistgħu jikkalkolaw 46 00:03:32,380 --> 00:03:36,360 mingħajr ma jirreferu għal dawn bullet punti dritt isfel hawn. 47 00:03:36,360 --> 00:03:39,750 U fortunatament, il-punti 1 bulit 2 jgħidulna eżattament dak l-tweġibiet huma. 48 00:03:39,750 --> 00:03:44,740 L-indirizz tal-x fil-memorja huwa 10, u l-indirizz ta 'y fil-memorja huwa 14. 49 00:03:44,740 --> 00:03:51,870 Għalhekk dawn huma l-valuri li nikseb għadda fl bħala aub top up fil-funzjoni tpartit tagħna. 50 00:03:51,870 --> 00:04:00,760 Għalhekk għal darb'oħra, il-qlib lura għall-dijagramma tagħna, Kapaċi nikteb 10 fil- 51 00:04:00,760 --> 00:04:07,400 u 14 fil-b. 52 00:04:07,400 --> 00:04:11,610 Issa, dan il-punt huwa fejn aħna jipproċedi bil-tpartit. 53 00:04:11,610 --> 00:04:14,520 Allura flipping lura għall-laptop ġdid, 54 00:04:14,520 --> 00:04:21,079 naraw li l-mod kif l-tpartit xogħlijiet huwa I dereference 1 a u jaħżnu r-riżultat fl-TMP. 55 00:04:21,079 --> 00:04:27,650 Allura l-operatur dereference jgħid, "ħej. Ittratta l-kontenut tal-varjabbli ta 'bħala indirizz. 56 00:04:27,650 --> 00:04:33,830 Mur kollu li huwa maħżun f'dak l-indirizz, u tagħbija. " 57 00:04:33,830 --> 00:04:41,720 Dak li inti tagħbija mill-varjabbli se jiġi maħżun fil-varjabbli TMP tagħna. 58 00:04:41,720 --> 00:04:45,150 Flipping lura għall-iPad. 59 00:04:45,150 --> 00:04:51,690 Jekk immorru biex tindirizza 10, nafu li l-indirizz 10 huwa l-x varible 60 00:04:51,690 --> 00:04:55,480 għaliex aħna qalulhom mill-punt bulit tagħna li l-indirizz tal-x fil-memorja huwa 10. 61 00:04:55,480 --> 00:05:00,180 Allura nistgħu mmorru hemmhekk, jiksbu l-valur ta 'dan, li huwa 1, kif naraw fuq iPad tagħna, 62 00:05:00,180 --> 00:05:06,300 u t-tagħbija li fil-TMP. 63 00:05:06,300 --> 00:05:08,250 Għal darb'oħra, dan mhuwiex il-kontenut finali. 64 00:05:08,250 --> 00:05:14,350 Aħna qed tmur biex jimxu permezz u aħna ser tingħata għall-istat finali tagħna tal-programm fl-aħħar. 65 00:05:14,350 --> 00:05:17,210 Imma issa dritt, aħna għandna l-valur ta '1 maħżuna fil TMP. 66 00:05:17,210 --> 00:05:19,210 >> U hemm mistoqsija malajr fuq hawn. 67 00:05:19,210 --> 00:05:23,980 [Alexander] Il-operatur dereference - li jinsab biss id-dritt istilla quddiem il-varjabbli? 68 00:05:23,980 --> 00:05:27,600 >> Iva. Allura l-operatur dereference, kif aħna flip lura għall-laptop tagħna għal darb'oħra, 69 00:05:27,600 --> 00:05:33,780 huwa dan il stilla dritt quddiem. 70 00:05:33,780 --> 00:05:37,460 F'dan is-sens, huwa - inti kuntrast ma 'l-operatur multiplikazzjoni 71 00:05:37,460 --> 00:05:42,400 li teħtieġ żewġ affarijiet; l-operatur dereference hija operatur unary. 72 00:05:42,400 --> 00:05:46,130 Just applikati għall valur wieħed għall-kuntrarju operatur binarju, 73 00:05:46,130 --> 00:05:48,810 fejn inti tapplika għal żewġ valuri differenti. 74 00:05:48,810 --> 00:05:52,080 Allura dak hu li jiġri f'dan il-linja. 75 00:05:52,080 --> 00:05:58,390 Aħna mgħobbija l-valur 1 u maħżuna fis varjabbli numru sħiħ tagħna temporanju. 76 00:05:58,390 --> 00:06:05,800 Il-linja li jmiss, aħna jaħżnu l-kontenut ta 'b fil - 77 00:06:05,800 --> 00:06:12,630 jew, pjuttost, aħna jaħżnu l-kontenut li huwa b tipponta lejn in-post fejn hija li tipponta lejn. 78 00:06:12,630 --> 00:06:17,690 Jekk aħna janalizza din mill-lemin għax-xellug, aħna ser b dereference, 79 00:06:17,690 --> 00:06:23,580 aħna ser tindirizza 14, aħna ser grab-numru sħiħ li jkun hemm, 80 00:06:23,580 --> 00:06:26,900 u allura aħna se jmorru fl-indirizz 10, 81 00:06:26,900 --> 00:06:34,240 u aħna ser tarmi r-riżultat ta dereference tagħna ta 'b f'dak l-ispazju. 82 00:06:34,240 --> 00:06:40,080 Flipping lura għall iPad tagħna, fejn nistgħu nagħmlu dan ftit aktar konkret, 83 00:06:40,080 --> 00:06:44,070 dan jista 'jgħin jekk nikteb numri fuq kollha ta' l-indirizzi hawn. 84 00:06:44,070 --> 00:06:53,820 Allura aħna nafu li fil y, aħna fl-indirizz 14, x huwa fl-indirizz 10. 85 00:06:53,820 --> 00:07:00,180 Meta nibdew mill-b, aħna dereference b, aħna qed tmur biex grab il-valur 2. 86 00:07:00,180 --> 00:07:08,320 Aħna ser grab dan il-valur minħabba li huwa l-valur li jgħix fl-indirizz 14. 87 00:07:08,320 --> 00:07:15,700 U aħna qed tmur biex jitqiegħdu fil-varjabbli li jgħix fl-indirizz 10, 88 00:07:15,700 --> 00:07:19,160 li huwa hemm dritt, li jikkorrispondu għal x varjabbli tagħna. 89 00:07:19,160 --> 00:07:21,810 Allura nistgħu nagħmlu xi ftit ta 'kitba fuq oħra hawn 90 00:07:21,810 --> 00:07:35,380 fejn aħna jeħles 1 tagħna u minflok aħna jiktbu 2. 91 00:07:35,380 --> 00:07:39,560 Allura kollha tal ukoll u tajjeb fid-dinja, anke jekk aħna stajt x miktub fuq xulxin issa. 92 00:07:39,560 --> 00:07:44,890 Aħna maħżuna valur qadim x fil-varjabbli TMP tagħna. 93 00:07:44,890 --> 00:07:50,210 Allura nistgħu jitlesta l-iswap mal-linja li jmiss. 94 00:07:50,210 --> 00:07:53,030 Flipping lura għall-laptop tagħna. 95 00:07:53,030 --> 00:07:58,150 Issa dak kollu li jibqa 'huwa li jieħdu l-kontenut mill-varjabbli numru sħiħ tagħna temporanju 96 00:07:58,150 --> 00:08:05,630 u jaħżinhom fil-varjabbli li jgħix fl-indirizz li b qiegħed iżomm. 97 00:08:05,630 --> 00:08:10,230 Allura aħna qed tmur biex b dereference effettiv biex jiksbu aċċess għall-varjabbli 98 00:08:10,230 --> 00:08:14,340 li huwa fl-indirizz li b jkollha fiha, 99 00:08:14,340 --> 00:08:19,190 u aħna qed tmur biex Jittieħed il-valur li TMP huwa azjenda fih. 100 00:08:19,190 --> 00:08:23,280 Flipping lura għall-iPad darba aktar. 101 00:08:23,280 --> 00:08:31,290 I tista 'tħassar dan il-valur hawnhekk, 2, 102 00:08:31,290 --> 00:08:41,010 u minflok aħna ser kopja fuq il-lemin 1 fih. 103 00:08:41,010 --> 00:08:43,059 Imbagħad il-linja li jmiss li tesegwixxi, naturalment - 104 00:08:43,059 --> 00:08:47,150 jekk irridu flip lura lill-laptop - huwa dan il-punt 6, 105 00:08:47,150 --> 00:08:52,500 li huwa l-punt li fih ridna li jkollhom dijagramma tagħna kompletament mimlija. 106 00:08:52,500 --> 00:08:58,940 Allura flipping lura għall-iPad darba aktar, biss sabiex inti tista 'tara l-dijagramma mimlija, 107 00:08:58,940 --> 00:09:06,610 tista 'tara li għandna 10 fil, ta' 14 fil-b, '1 TMP, ta' 2 fil x, u 1 fil y. 108 00:09:06,610 --> 00:09:11,000 Hemm xi mistoqsijiet dwar dan? 109 00:09:11,000 --> 00:09:14,640 Ma dan jagħmel aktar sens, li mixi permezz ta 'dan? 110 00:09:14,640 --> 00:09:24,850 Jagħmel sens inqas? Nisperaw le. Okay. 111 00:09:24,850 --> 00:09:28,230 >> Pointers huma suġġetti ferm delikata. 112 00:09:28,230 --> 00:09:33,420 Wieħed mill-guys naħdmu ma għandha tgħid komuni ħafna: 113 00:09:33,420 --> 00:09:36,590 "Biex tifhem pointers, l-ewwel trid tifhem pointers." 114 00:09:36,590 --> 00:09:40,530 Li naħseb huwa ħafna minnu. Hija ma tieħu filwaqt li jidraw lilha. 115 00:09:40,530 --> 00:09:45,360 Tpinġija lottijiet ta 'stampi, tpinġija lottijiet ta' dijagrammi tal-memorja bħal dan wieħed huma utli ħafna, 116 00:09:45,360 --> 00:09:49,480 u wara li inti timxi permezz ta 'eżempju wara eżempju wara eżempju, 117 00:09:49,480 --> 00:09:54,450 dan ser tibda tagħmel sens ftit aktar u sens ftit aktar u sens ftit aktar. 118 00:09:54,450 --> 00:10:01,560 Fl-aħħarnett, jum wieħed, inti ser ikollok dan kollu kompletament mhaddma. 119 00:10:01,560 --> 00:10:13,800 Kwalunkwe mistoqsijiet qabel nimxu fuq il-problema li jmiss? Kull dritt. 120 00:10:13,800 --> 00:10:18,840 Allura flip lura għall-laptop. 121 00:10:18,840 --> 00:10:23,300 Il-problema li jmiss għandna huwa numru problema 33 fuq fajl I / O. 122 00:10:23,300 --> 00:10:26,350 Zoom fl fuq din id-daqsxejn ftit. 123 00:10:26,350 --> 00:10:28,710 Problema 33 - Iva? 124 00:10:28,710 --> 00:10:32,110 >> [Daniel] I biss kellhom mistoqsija ta 'malajr. Dan star, jew l-asterisk, 125 00:10:32,110 --> 00:10:35,590 huwa msejjaħ dereferencing meta tuża asterisk qabel. 126 00:10:35,590 --> 00:10:38,820 X'hemm dan jissejjaħ meta tuża l-ampersand qabel? 127 00:10:38,820 --> 00:10:43,140 >> Il-ampersand qabel huwa l-indirizz-'operatur. 128 00:10:43,140 --> 00:10:45,880 Mela ejja iscroll back up. 129 00:10:45,880 --> 00:10:49,310 Oops. Jien fil-modalità zoom so I ma tistax verament scroll. 130 00:10:49,310 --> 00:10:52,780 Jekk inħarsu lejn dan il-kodiċi verament malajr dritt hawn, 131 00:10:52,780 --> 00:10:54,980 għal darb'oħra, istess ħaġa jiġri. 132 00:10:54,980 --> 00:10:59,180 Jekk inħarsu lejn dan il-kodiċi dritt hawn, fuq din il-linja fejn aħna tagħmel is-sejħa li tpartit, 133 00:10:59,180 --> 00:11:10,460 l-ampersand huwa biss qal "tikseb l-indirizz fuq li jgħix x varjabbli." 134 00:11:10,460 --> 00:11:14,460 Meta kompilatur tiegħek jikkompila kodiċi tiegħek, 135 00:11:14,460 --> 00:11:20,590 għandu fil-fatt fiżikament trade mark fl post fil-memorja għal kulħadd ta 'varjabbli tiegħek biex jgħixu. 136 00:11:20,590 --> 00:11:24,910 U għalhekk dak li l-kumpilatur tista 'mbagħad tagħmel ladarba huwa miġbura kollox, 137 00:11:24,910 --> 00:11:31,110 dan jaf, "Oh, I tpoġġi x fl-indirizz 10. nressaq y fl-indirizz 14." 138 00:11:31,110 --> 00:11:34,640 Dan jista 'mbagħad timla dawn il-valuri għalik. 139 00:11:34,640 --> 00:11:44,740 Allura inti tista 'mbagħad - tista' imbagħad jgħaddu din in u jgħaddu & y fil ukoll. 140 00:11:44,740 --> 00:11:50,730 Dawn guys jiksbu l-indirizz, iżda huma wkoll, meta inti tgħaddi minnhom fil-funzjoni tpartit, 141 00:11:50,730 --> 00:11:55,690 din l-informazzjoni tat-tip, dan * int dritt hawn, jirrakkonta l-kumpilatur, 142 00:11:55,690 --> 00:12:01,350 "Okay, aħna qed tmur biex tkun jinterpretaw dan l-indirizz bħala indirizz ta 'varjabbli numru sħiħ." 143 00:12:01,350 --> 00:12:05,900 Bħala l-indirizz ta 'int, li hija differenti mill-indirizz ta' varjabbli karattru 144 00:12:05,900 --> 00:12:09,930 għaliex int tibda, fuq magna 32-bit, tibda 4 bytes ta 'spazju, 145 00:12:09,930 --> 00:12:13,310 billi karattru tieħu biss sar 1 byte ta 'spazju. 146 00:12:13,310 --> 00:12:17,310 Allura huwa importanti li tkun taf ukoll dak li hu - dak tgħix, liema tip ta 'valur 147 00:12:17,310 --> 00:12:20,340 qed tgħix fl-indirizz li ltqajna għadda pulzieri 148 00:12:20,340 --> 00:12:22,020 Jew l-indirizz li inti qed jittrattaw. 149 00:12:22,020 --> 00:12:29,020 B'dan il-mod, inti taf kemm bytes ta 'informazzjoni li attwalment tagħbija mill-RAM tiegħek. 150 00:12:29,020 --> 00:12:31,780 U mbagħad, iva, dan l-operatur dereference, bħal inti kienu tistaqsi, 151 00:12:31,780 --> 00:12:37,200 tmur u aċċessi informazzjoni f'indirizz partikolari. 152 00:12:37,200 --> 00:12:42,820 Għalhekk jgħid, ma dan il-varjabbli ta 'hawn, jikkura l-kontenut ta' bħala indirizz, 153 00:12:42,820 --> 00:12:47,880 tmur f'dak l-indirizz, u iġbed, tagħbija fis-proċessur, tagħbija fi reġistru 154 00:12:47,880 --> 00:12:56,340 il-valuri attwali jew il-kontenut li jgħixu f'dak l-indirizz. 155 00:12:56,340 --> 00:12:59,620 Kwalunkwe aktar mistoqsijiet? Dawn huma mistoqsijiet tajba. 156 00:12:59,620 --> 00:13:01,650 Huwa ħafna ta 'terminoloġija ġdida wisq. 157 00:13:01,650 --> 00:13:09,800 Huwa wkoll tip ta 'funky, jaraw & u * f'postijiet differenti. 158 00:13:09,800 --> 00:13:13,180 >> Kull dritt. 159 00:13:13,180 --> 00:13:18,530 Allura lura għall-problema 33, fajl I / O. 160 00:13:18,530 --> 00:13:22,540 Dan kien wieħed minn dawk il-problemi li naħseb ftit affarijiet li ġara. 161 00:13:22,540 --> 00:13:25,400 Wieħed, huwa suġġett pjuttost ġdida. 162 00:13:25,400 --> 00:13:30,590 Huwa ġie ppreżentat pretty hekk qabel l-kwizz, 163 00:13:30,590 --> 00:13:33,400 u mbagħad naħseb li kien tip ta 'bħal wieħed minn dawk il-problemi kelma fil-matematika 164 00:13:33,400 --> 00:13:39,720 fejn huma jagħtuk ħafna ta 'informazzjoni, iżda inti fil-fatt ma jispiċċaw wara li tuża ton ta' dan. 165 00:13:39,720 --> 00:13:44,060 L-ewwel parti ta 'din il-problema hija tiddeskrivi dak fajl CSV huwa. 166 00:13:44,060 --> 00:13:50,620 Issa, fajl CSV, skond id-deskrizzjoni, il-fajl huwa valuri comma-separat. 167 00:13:50,620 --> 00:13:55,300 Ir-raġuni li dawn huma livelli kollha interessanti, u r-raġuni inti qatt jużawhom, 168 00:13:55,300 --> 00:14:00,800 huwa, għaliex, kif ħafna minnkom qatt jintużaw għalf bħal Excel? 169 00:14:00,800 --> 00:14:03,240 Figura ħafna minnkom, probabbilment, jew se tuża f'xi punt fil-ħajja tiegħek. 170 00:14:03,240 --> 00:14:06,430 Int ser ikollok tuża xi ħaġa bħal Excel. 171 00:14:06,430 --> 00:14:10,940 Sabiex tikseb l-informazzjoni mill-Excel spreadsheet jew jagħmlu kwalunkwe tip ta 'pproċessar magħha, 172 00:14:10,940 --> 00:14:17,240 jekk int riedu jiktbu program C jew programm Python, programm Java, 173 00:14:17,240 --> 00:14:20,070 biex jittrattaw l-informazzjoni li għandek maħżuna fil hemm, 174 00:14:20,070 --> 00:14:23,170 wieħed mill-modi l-aktar komuni biex jiksbu dan jitwettaq huwa fil-fajl CSV. 175 00:14:23,170 --> 00:14:26,850 U inti tista 'tiftaħ Excel u meta inti tmur għall-"Save As" djalogu, 176 00:14:26,850 --> 00:14:32,840 inti tista 'toħroġ fajl CSV attwali. 177 00:14:32,840 --> 00:14:35,890 >> Handy li jkunu jafu kif jittrattaw ma 'dawn l-affarijiet. 178 00:14:35,890 --> 00:14:42,010 Il-mod kif jaħdem huwa li huwa simili għall - I jfisser, huwa essenzjalment li jimitaw spreadsheet, 179 00:14:42,010 --> 00:14:47,590 fejn, kif naraw hawn, fil-biċċa ħafna xellug-aktar, 180 00:14:47,590 --> 00:14:49,910 aħna għandna l-ismijiet l-aħħar. 181 00:14:49,910 --> 00:14:54,670 Allura aħna għandna Malan, imbagħad Hardison, u mbagħad Bowden, MacWilliam, u mbagħad Chan. 182 00:14:54,670 --> 00:14:59,470 L-ismijiet l-aħħar. U mbagħad virgola jifred l-ismijiet l-aħħar mill-ewwel ismijiet. 183 00:14:59,470 --> 00:15:02,970 David, Nate, Rob, Tommy, u Zamyla. 184 00:15:02,970 --> 00:15:06,850 Jien dejjem ħallat Robby u Tom. 185 00:15:06,850 --> 00:15:10,940 U mbagħad, fl-aħħarnett, it-tielet kolonna hija l-indirizzi email. 186 00:15:10,940 --> 00:15:18,500 Ladarba inti tifhem li, l-bqija tal-programm huwa pjuttost sempliċi biex jiġu implimentati. 187 00:15:18,500 --> 00:15:23,850 Dak li aħna ghamilt biex jimitaw din l-istruttura istess programm C tagħna 188 00:15:23,850 --> 00:15:27,510 huwa konna użat struttura. 189 00:15:27,510 --> 00:15:30,520 Aħna ser tibda playing ma 'dawn aktar ftit ukoll. 190 00:15:30,520 --> 00:15:35,790 Rajna minnhom għall-ftit ewwel sett problema 3, meta konna jittrattaw il-dizzjunarji. 191 00:15:35,790 --> 00:15:40,290 Iżda dan Struct persunal ħwienet isem l-aħħar, l-ewwel isem, u email. 192 00:15:40,290 --> 00:15:44,500 Eżatt bħal fajl CSV tagħna kien ħażna. 193 00:15:44,500 --> 00:15:47,950 Allura dan huwa biss konverżjoni minn format għall-ieħor. 194 00:15:47,950 --> 00:15:54,630 Irridu jikkonvertu, f'dan il-każ, Struct persunal fis-linja, 195 00:15:54,630 --> 00:15:59,060 linja comma-separat, bħal dak. 196 00:15:59,060 --> 00:16:01,500 Does li jagħmel sens? You guys kollha ħadu l-kwizz, 197 00:16:01,500 --> 00:16:07,680 so I jimmaġina inti inqas kellhom xi żmien biex jaħsbu dwar dan. 198 00:16:07,680 --> 00:16:16,410 >> Fil-funzjoni kiri, il-problema jitlob minna li jieħdu - zoom we'll fil dwar din id-daqsxejn ftit - 199 00:16:16,410 --> 00:16:22,480 tieħu fi struttura tal-persunal, ta 'Struct persunal, bl-isem i, 200 00:16:22,480 --> 00:16:30,900 u tehmeż kontenut tiegħu għall-fajl staff.csv tagħna. 201 00:16:30,900 --> 00:16:34,230 Jirriżulta li dan huwa pjuttost sempliċi biex jintuża. 202 00:16:34,230 --> 00:16:37,430 Aħna ser tip ta 'play madwar ma' dawn il-funzjonijiet ftit aktar illum. 203 00:16:37,430 --> 00:16:44,510 Iżda f'dan il-każ, il-funzjoni fprintf huwa verament il-muftieħ. 204 00:16:44,510 --> 00:16:51,960 Allura ma fprintf, nistgħu jistampaw, bħad inti guys kienu qegħdin jużaw printf dan it-terminu kollu. 205 00:16:51,960 --> 00:16:55,050 Tista printf linja għall-fajl. 206 00:16:55,050 --> 00:16:59,030 Allura minflok sempliċiment tagħmel is-sejħa printf soltu fejn inti tagħtih l-sekwenza format 207 00:16:59,030 --> 00:17:05,380 u allura inti tissostitwixxi l-varjabbli bl-argumenti li ġejjin, 208 00:17:05,380 --> 00:17:11,290 ma fprintf, l-argument ewwel tiegħek huwa minflok il-fajl inti tixtieq li tikteb. 209 00:17:11,290 --> 00:17:21,170 Jekk konna li tħares lejn dan l-apparat, per eżempju, il-bniedem fprintf, 210 00:17:21,170 --> 00:17:25,980 nistgħu naraw id-differenza bejn printf u fprintf. 211 00:17:25,980 --> 00:17:28,960 I ser zoom hawn ftit. 212 00:17:28,960 --> 00:17:33,140 Allura ma printf, aħna tagħtiha a string format, u mbagħad l-argumenti ta 'wara 213 00:17:33,140 --> 00:17:37,580 huma l-varjabbli kollha għas-sostituzzjoni jew is-sostituzzjoni fi string format tagħna. 214 00:17:37,580 --> 00:17:47,310 Billi bil fprintf, l-ewwel argument huwa tabilħaqq dan * fajl imsejħa nixxiegħa. 215 00:17:47,310 --> 00:17:51,800 >> Nimxu lura fuq hawn biex kiri tagħna, 216 00:17:51,800 --> 00:17:54,550 aħna stajt diġà ltqajna nixxiegħa tagħna * fajl miftuħ għalina. 217 00:17:54,550 --> 00:17:57,810 Dak hu li dan l-ewwel linja ma; li tiftaħ il-fajl staff.csv, 218 00:17:57,810 --> 00:18:01,690 tiftaħ fil-modalità tehmeż, u dak kollu li ħalla għalina li tagħmel huwa 219 00:18:01,690 --> 00:18:08,640 jiktbu l-istruttura tal-persunal għall-fajl. 220 00:18:08,640 --> 00:18:10,870 U, ejja ara, do nixtieq li jużaw il-iPad? 221 00:18:10,870 --> 00:18:17,900 I ser tuża l-iPad. Għandna vojt - ejja tpoġġi dan fuq il-mejda so I tista 'tikteb ftit aħjar - 222 00:18:17,900 --> 00:18:33,680 null kiri u li tieħu f'waħda argument, struttura tal-persunal imsejjaħ i. 223 00:18:33,680 --> 00:18:44,120 Ghandek ċingi tagħna, konna ltqajna fajl * tagħna imsejħa fajl, 224 00:18:44,120 --> 00:18:48,380 għandna fopen linja tagħna mogħtija lilna, 225 00:18:48,380 --> 00:18:51,890 u jien ser biss jiktbu bħala tikek peress li huwa diġà fil-pedia. 226 00:18:51,890 --> 00:19:00,530 U mbagħad fuq il-linja li jmiss tagħna, aħna qed tmur biex tagħmel sejħa biex fprintf 227 00:19:00,530 --> 00:19:03,700 u aħna qed tmur biex jgħaddu mill-proċess li rridu li jistampaw li, 228 00:19:03,700 --> 00:19:10,290 u mbagħad format string tagħna, li - 229 00:19:10,290 --> 00:19:14,300 I ser tavżak guys tell me dak li jidher qisu. 230 00:19:14,300 --> 00:19:20,500 Kif dwarek, Stella? Taf x'inhi l-ewwel parti tas-sekwenza format Dehra? 231 00:19:20,500 --> 00:19:24,270 [Stella] M'inix ċert. >> Ħossok liberu li jitlob Jimmy. 232 00:19:24,270 --> 00:19:27,690 Taf, Jimmy? 233 00:19:27,690 --> 00:19:31,000 [Jimmy] Ikun biss tkun l-aħħar? I do not know. M'inix totalment ċert. 234 00:19:31,000 --> 00:19:39,020 Okay. >> Kif dwar, ma xi ħadd nikseb dan korretta fuq l-eżami? 235 00:19:39,020 --> 00:19:41,770 No Kull dritt. 236 00:19:41,770 --> 00:19:47,920 Jirriżulta li hawn kollha għandna nagħmlu huwa li rridu kull parti mill-istruttura l-istaff tagħna 237 00:19:47,920 --> 00:19:53,290 li jiġu stampati bħala string fil-fajl tagħna. 238 00:19:53,290 --> 00:19:59,900 Aħna biss jużaw il-karattru sostituzzjoni sekwenza tliet darbiet differenti għaliex għandna isem l-aħħar 239 00:19:59,900 --> 00:20:07,160 segwit minn virgola, allura l-ewwel isem segwit minn virgola, 240 00:20:07,160 --> 00:20:12,430 u mbagħad finalment l-indirizz email li tkun segwita - li ma jkunx 241 00:20:12,430 --> 00:20:15,140 twaħħil fuq l-iskrin tiegħi - imma hija segwita minn karattru newline. 242 00:20:15,140 --> 00:20:20,060 Allura jien ser jikteb hija biss stabbiliti hemmhekk. 243 00:20:20,060 --> 00:20:23,560 U mbagħad wara string format tagħna, 244 00:20:23,560 --> 00:20:27,880 aħna biss għandhom il-sostituzzjonijiet, li aħna jkollhom aċċess bl-użu notazzjoni dot 245 00:20:27,880 --> 00:20:31,370 li rajna fil-sett problema 3. 246 00:20:31,370 --> 00:20:48,820 Nistgħu nużaw s.last, s.first, u s.email 247 00:20:48,820 --> 00:20:58,990 li tissostitwixxi f'dawk tliet valuri fis-sekwenza format tagħna. 248 00:20:58,990 --> 00:21:06,190 Allura kif ma li jmorru? Jagħmel sens? 249 00:21:06,190 --> 00:21:09,700 Iva? Nru? Possibilment? Okay. 250 00:21:09,700 --> 00:21:14,180 >> L-aħħar ħaġa li nagħmlu wara konna stampati u wara konna miftuħa fajl tagħna: 251 00:21:14,180 --> 00:21:17,370 kull meta aħna ve fetaħ fajl, aħna dejjem niftakru li tagħlaq dan. 252 00:21:17,370 --> 00:21:19,430 Għaliex inkella aħna ser jispiċċaw jnixxu l-memorja, 253 00:21:19,430 --> 00:21:22,500 jużaw up deskritturi fajl. 254 00:21:22,500 --> 00:21:25,950 Allura biex jingħalaq, li l-funzjoni do nużaw? Daniel? 255 00:21:25,950 --> 00:21:30,120 [Daniel] fclose? >> Fclose, eżattament. 256 00:21:30,120 --> 00:21:37,520 Allura l-aħħar parti ta 'din il-problema kienet li suppost jagħlaq il-fajl, bl-użu l-funzjoni fclose, 257 00:21:37,520 --> 00:21:40,370 li biss jistenna bħal dik. 258 00:21:40,370 --> 00:21:43,880 Mhux wisq crazy. 259 00:21:43,880 --> 00:21:46,990 Kessaħ. 260 00:21:46,990 --> 00:21:49,520 Allura dak problema 33 fuq il-kwizz. 261 00:21:49,520 --> 00:21:52,480 Aħna ser ikollhom fajl definittivament aktar I / O ġejjin up. 262 00:21:52,480 --> 00:21:55,130 Aħna ser tagħmel ftit aktar fil lecture llum, jew fit-taqsima tal-lum, 263 00:21:55,130 --> 00:22:01,710 għaliex dan huwa dak li għaddej biex jiffurmaw il-maġġoranza ta 'dan pset jmiss. 264 00:22:01,710 --> 00:22:05,020 Ejja jimxu fuq mill-kwizz f'dan il-punt. Iva? 265 00:22:05,020 --> 00:22:10,880 >> [Charlotte]] Għaliex fclose (fajl) minflok fclose (staff.csv)? 266 00:22:10,880 --> 00:22:19,100 >> Ah. Minħabba jirriżulta li - hekk il-kwistjoni, li hija waħda kbira, 267 00:22:19,100 --> 00:22:27,800 huwa għaliex, meta aħna tikteb fclose, aħna tikteb varjabbli fclose stilla (fajl) 268 00:22:27,800 --> 00:22:33,680 kif oppost għad-isem ta 'fajl, staff.csv? Huwa li korretta? Yeah. 269 00:22:33,680 --> 00:22:39,570 Mela ejja tagħti ħarsa. Jekk I jaqilbu lura għall-laptop tiegħi, 270 00:22:39,570 --> 00:22:45,040 u ejja nħarsu lejn il-funzjoni fclose. 271 00:22:45,040 --> 00:22:51,460 Allura l-funzjoni fclose jagħlaq nixxiegħa u li tieħu fit-pointer għall-fluss li aħna rridu li tagħlaq, 272 00:22:51,460 --> 00:22:57,010 kif oppost għad-isem ta 'fajl proprju li aħna rridu li tagħlaq. 273 00:22:57,010 --> 00:23:01,620 U dan huwa minħabba wara l-kwinti, meta inti tagħmel sejħa biex fopen, 274 00:23:01,620 --> 00:23:12,020 meta inti tiftaħ fajl, int fil-fatt jalloka memorja biex taħżen l-informazzjoni dwar il-fajl. 275 00:23:12,020 --> 00:23:16,380 Allura inti għandek pointer fajl li għandu informazzjoni dwar il-fajl, 276 00:23:16,380 --> 00:23:23,080 bħal kif huwa miftuħ, id-daqs tagħha, fejn inti bħalissa fil-fajl, 277 00:23:23,080 --> 00:23:29,100 sabiex inti tista 'tagħmel qari u kitba sejħiet għal dak il-post partikolari fil-fajl. 278 00:23:29,100 --> 00:23:38,060 Inti tispiċċa tagħlaq il-pointer minflok jagħlaq il-fajl isem. 279 00:23:38,060 --> 00:23:48,990 >> Iva? [Daniel] Għalhekk sabiex jużaw kiri, tgħid - kif ma tikseb l-input utent? 280 00:23:48,990 --> 00:23:53,830 Ma fprintf jaġixxu bħall GetString fis-sens li ser biss stenna għall-input utent 281 00:23:53,830 --> 00:23:57,180 u jitlob li inti tip dan - jew stenna għalik biex tip dawn it-tliet affarijiet fil-? 282 00:23:57,180 --> 00:24:00,480 Jew għandek bżonn tuża xi ħaġa li jimplimentaw kiri? 283 00:24:00,480 --> 00:24:04,100 >> Yeah. Allura aħna mhux qed - il-kwistjoni kienet, kif nistgħu tikseb l-input utent 284 00:24:04,100 --> 00:24:09,220 sabiex jimplimentaw kiri? U dak li għandna hawnhekk huwa l-sejjieħ ta 'kiri, 285 00:24:09,220 --> 00:24:17,690 għadda f'dan Struct persunal kollha tad-data maħżuna fil-Struct diġà. 286 00:24:17,690 --> 00:24:22,990 Allura fprintf huwa kapaċi biss jiktbu dik id-data direttament għall-fajl. 287 00:24:22,990 --> 00:24:25,690 M'hemm l-ebda stennija għall jintuza mill-utent. 288 00:24:25,690 --> 00:24:32,110 L-utent li diġà jingħata l-kontribut kif suppost mill-tqegħid f'dan Struct persunal. 289 00:24:32,110 --> 00:24:36,510 U l-affarijiet, naturalment, se jkisser jekk xi waħda minn dawk pointers kienu null, 290 00:24:36,510 --> 00:24:40,370 hekk aħna iscroll back up hawn u nħarsu lejn Struct tagħna. 291 00:24:40,370 --> 00:24:43,640 Aħna l-aħħar, spag string 1, email sekwenza. 292 00:24:43,640 --> 00:24:48,530 Aħna issa jkunu jafu li dawk kollha verament, taħt il-barnuża, huma varjabbli * char. 293 00:24:48,530 --> 00:24:53,470 Li jistgħu jew ma jistgħux ikunu tipponta lejn null. 294 00:24:53,470 --> 00:24:55,800 Huma jistgħu jiġu tipponta lejn memorja fuq il-munzell, 295 00:24:55,800 --> 00:24:59,650 forsi memorja fuq il-munzell. 296 00:24:59,650 --> 00:25:04,580 Aħna ma verament jafu, imma jekk xi wieħed minn dawn pointers huma nulli, jew invalidi, 297 00:25:04,580 --> 00:25:08,120 li din ser definittivament tiġrifa funzjoni kiri tagħna. 298 00:25:08,120 --> 00:25:11,050 Dan kien xi ħaġa li kien tip ta 'lil hinn mill-ambitu ta' l-eżami. 299 00:25:11,050 --> 00:25:16,440 Aħna ma jinkwetaw dwar dan. 300 00:25:16,440 --> 00:25:22,170 Great. Okay. Allura jimxu fuq mill-kwizz. 301 00:25:22,170 --> 00:25:25,760 >> Ejja qrib dan Guy, u aħna qed tmur biex tħares lejn pset 4. 302 00:25:25,760 --> 00:25:34,700 Mela jekk inti guys ħarsa lejn il-spec pset, ladarba inti tista 'aċċess għaliha, cs50.net/quizzes, 303 00:25:34,700 --> 00:25:42,730 aħna se jmorru permezz ta 'ftit mill-problemi taqsima illum. 304 00:25:42,730 --> 00:25:52,240 Jien scrolling isfel - is-sezzjoni ta 'mistoqsijiet tibda fuq il-paġna 3 ta' l-spec pset. 305 00:25:52,240 --> 00:25:57,800 U l-ewwel parti tistaqsi tmur u tara l-qasir fuq ridirezzjonar u pajpijiet. 306 00:25:57,800 --> 00:26:02,820 Liema kien tip ta 'qasir jibred, turi li inti xi tricks jibred, kmand ġodda linja li tista' tuża. 307 00:26:02,820 --> 00:26:06,050 U allura konna ltqajna ftit mistoqsijiet ghalik ukoll. 308 00:26:06,050 --> 00:26:10,860 Din il-kwistjoni l-ewwel dwar flussi, li printf jikteb fil-kontumaċja, 309 00:26:10,860 --> 00:26:15,920 aħna tip ta 'mimsus fuq ftit ftit mument ilu. 310 00:26:15,920 --> 00:26:22,380 Dan fprintf li konna biss jiddiskutu tieħu fi fluss * fajl bħala argument tagħha. 311 00:26:22,380 --> 00:26:26,580 fclose tieħu fi fluss * fajl kif ukoll, 312 00:26:26,580 --> 00:26:32,660 u l-valur tar-ritorn ta 'fopen jagħtik nixxiegħa * fajl kif ukoll. 313 00:26:32,660 --> 00:26:36,060 Ir-raġuni aħna ma bbenefikawx dawk qabel meta konna ttrattati printf 314 00:26:36,060 --> 00:26:39,450 huwa minħabba printf għandha nixxiegħa default. 315 00:26:39,450 --> 00:26:41,810 U l-fluss default li għalih jikteb 316 00:26:41,810 --> 00:26:45,190 inti ser issir taf dwar fil-qosor. 317 00:26:45,190 --> 00:26:50,080 Allura definittivament tagħti ħarsa lejn dan. 318 00:26:50,080 --> 00:26:53,010 >> Fit-taqsima tal-lum, aħna qed tmur biex jitkellmu ftit dwar GDB, 319 00:26:53,010 --> 00:26:57,720 peress li l-aktar familjari int ma 'dan, il-prattika aktar ikollok magħha, 320 00:26:57,720 --> 00:27:01,390 l-aktar kapaċi inti ser tkun li fil-fatt kaċċa stabbiliti bugs fil-kodiċi tiegħek. 321 00:27:01,390 --> 00:27:05,540 Dan il-veloċitajiet l-proċess ta 'debugging up bil-kbir. 322 00:27:05,540 --> 00:27:09,230 Hekk billi tuża printf, kull darba li inti tagħmel dan inti għandek recompile kodiċi tiegħek, 323 00:27:09,230 --> 00:27:13,000 inti għandek run mill-ġdid, xi kultant ikollok biex jiċċaqalqu l-sejħa printf madwar, 324 00:27:13,000 --> 00:27:17,100 jikkummentaw out kodiċi, hija biss tieħu ftit żmien. 325 00:27:17,100 --> 00:27:20,850 L-għan tagħna huwa li tipprova u tikkonvinċi lilek li ma GDB, inti tista 'essenzjalment 326 00:27:20,850 --> 00:27:26,810 xejn printf fi kwalunkwe punt fil-kodiċi tiegħek u inti qatt ma jkollhom recompile dan. 327 00:27:26,810 --> 00:27:35,120 Inti qatt ma jkollhom jibdew u jżommu guessing fejn printf jmiss. 328 00:27:35,120 --> 00:27:40,910 L-ewwel ħaġa li tagħmel huwa li kopja din il-linja u jiksbu l-kodiċi taqsima off tal-web. 329 00:27:40,910 --> 00:27:47,530 Jien ikkupjar din il-linja tal-kodiċi li tgħid, "http://cdn.cs50.net Wget". 330 00:27:47,530 --> 00:27:49,510 Jien ser jibagħtu kopja tagħha. 331 00:27:49,510 --> 00:27:55,950 Jien se jmorru fuq l-appliance tiegħi, zoom out sabiex inti tista tara dak li qed nagħmel, 332 00:27:55,950 --> 00:28:01,890 pasta fil hemm, u meta I hit Ikteb, dan il-kmand Wget litteralment huwa web tikseb. 333 00:28:01,890 --> 00:28:06,210 Huwa ser pull isfel dan il-fajl off ta 'l-Internet, 334 00:28:06,210 --> 00:28:11,790 u li għaddej biex isalva lill-direttorju kurrenti. 335 00:28:11,790 --> 00:28:21,630 Issa jekk jien lista direttorju kurrenti tiegħi tista 'tara li stajt ltqajna dan il-fajl section5.zip dritt fil hemmhekk. 336 00:28:21,630 --> 00:28:25,260 Il-mod biex jittrattaw ma 'dak Guy huwa li unzip, 337 00:28:25,260 --> 00:28:27,650 li inti tista 'tagħmel fil-linja tal-kmand, biss bħal dan. 338 00:28:27,650 --> 00:28:31,880 Section5.zip. 339 00:28:31,880 --> 00:28:36,980 Li ser unzip, joħolqu l-folder għalija, 340 00:28:36,980 --> 00:28:40,410 ttella kollha tal-kontenut, tpoġġihom fil hemmhekk. 341 00:28:40,410 --> 00:28:47,410 Allura issa I tista 'tmur fis-sezzjoni 5 tiegħi direttorju tuża l-kmand cd. 342 00:28:47,410 --> 00:28:58,310 Ċar il-iskrin bl-użu ċara. Allura ċar l-iskrin. 343 00:28:58,310 --> 00:29:02,280 Issa stajt ltqajna terminal nadif sbieħ li jittrattaw. 344 00:29:02,280 --> 00:29:06,200 >> Issa jekk jien lista l-fajls li nara f'dan id-direttorju, 345 00:29:06,200 --> 00:29:12,270 tara li stajt ltqajna erba 'fajls: buggy1, buggy2, buggy3, u buggy4. 346 00:29:12,270 --> 00:29:16,180 Stajt ukoll ltqajna fajls korrispondenti. Tagħhom c. 347 00:29:16,180 --> 00:29:20,400 Aħna mhux se tħares lejn il-fajls c. Għal issa. 348 00:29:20,400 --> 00:29:24,140 Minflok, aħna qed tmur biex jużawhom meta aħna tiftaħ GDB. 349 00:29:24,140 --> 00:29:28,220 Imxejna miżmuma minnhom madwar hekk li aħna jkollhom aċċess għall-kodiċi sors attwali meta aħna qed jużaw GDB, 350 00:29:28,220 --> 00:29:32,740 iżda l-għan ta 'din il-parti tat-taqsima huwa li tinker madwar GDB 351 00:29:32,740 --> 00:29:40,370 u tara kif nistgħu nużaw biex insemmu x'hemm tmur ħażina ma 'kull wieħed minn dawn il-programmi Buggy 4. 352 00:29:40,370 --> 00:29:43,380 Allura aħna qed biss jmorru madwar il-kamra verament malajr, 353 00:29:43,380 --> 00:29:47,000 u jien ser jistaqsu xi ħadd biex imexxu wieħed mill-programmi Buggy, 354 00:29:47,000 --> 00:29:54,730 u mbagħad aħna ser imorru bħala grupp permezz GDB, u aħna ser tara dak li nistgħu nagħmlu biex tiffissa dawn il-programmi, 355 00:29:54,730 --> 00:29:58,460 jew għall-inqas jidentifikaw x'inhu għaddej ħażin f'kull wieħed minnhom. 356 00:29:58,460 --> 00:30:04,760 Nibdew minn hawn ma 'Daniel. Se inti tmexxi buggy1? Ejja naraw x'jiġri. 357 00:30:04,760 --> 00:30:09,470 [Daniel] Dan jgħid hemm xi tort applikazzjoni. >> Yeah. Eżattament. 358 00:30:09,470 --> 00:30:12,460 Mela jekk I run buggy1, niġi tort seq. 359 00:30:12,460 --> 00:30:16,210 Fuq dan il-punt, I tista 'tmur u jiftħu buggy1.c, 360 00:30:16,210 --> 00:30:19,450 jippruvaw u ċifra barra dak li għaddej ħażin, 361 00:30:19,450 --> 00:30:22,000 iżda wieħed mill-aktar affarijiet obnoxious dwar dan l-iżball tort seq 362 00:30:22,000 --> 00:30:27,610 hija li ma jgħidlek dwar liema linja ta 'l-affarijiet tal-programm fil-fatt marret ħażin u kissru. 363 00:30:27,610 --> 00:30:29,880 Int tip ta 'għandek tfittex fil-kodiċi 364 00:30:29,880 --> 00:30:33,990 u figura użu raden u jivverifika jew printf biex tara x'inhu għaddej ħażin. 365 00:30:33,990 --> 00:30:37,840 Waħda mill-affarijiet coolest dwar GDB hija li huwa tassew, tassew faċli 366 00:30:37,840 --> 00:30:42,170 biex insemmu l-linja li biha ħabtiet programm tiegħek. 367 00:30:42,170 --> 00:30:46,160 Huwa totalment worth it li jużawh, anki jekk biss għal dak. 368 00:30:46,160 --> 00:30:56,190 Allura biex boot up GDB, I tip GDB, u mbagħad I tagħtiha l-passaġġ għall-eżekutibbli li nixtieq li run. 369 00:30:56,190 --> 00:31:01,960 Hawnhekk jien ittajpjar GDB ./buggy1. 370 00:31:01,960 --> 00:31:06,600 Hit Ikteb. Jagħti me din l-informazzjoni awtur, 371 00:31:06,600 --> 00:31:13,000 u 'l isfel hawn inti ser tara din il-linja li tgħid, "simboli Qari mid / home / 372 00:31:13,000 --> 00:31:17,680 jharvard/section5/buggy1. " 373 00:31:17,680 --> 00:31:22,060 U jekk kollox imur sew, tkun taf tara li jistampa messaġġ li tidher bħal dan. 374 00:31:22,060 --> 00:31:25,500 Hija ser taqra simboli, dan ser jgħidu "jien qari simboli mill-fajl eżekutibbli tiegħek," 375 00:31:25,500 --> 00:31:29,900 u mbagħad se jkollhom dan "isir" messaġġ fuq hawn. 376 00:31:29,900 --> 00:31:35,410 Jekk tara xi varjazzjoni oħra ta 'dan, jew tara li ma setgħux isibu l-simboli 377 00:31:35,410 --> 00:31:41,460 jew xi ħaġa bħal dik, dak li tfisser hija li inti biss ma jkunux ikkompilaw eżekutibbli tiegħek sewwa. 378 00:31:41,460 --> 00:31:49,980 Meta aħna jikkompilaw programmi għall-użu ma 'GDB, irridu jużaw dik il-bandiera speċjali g, 379 00:31:49,980 --> 00:31:54,540 u dan isir b'mod awtomatiku jekk inti tiġbor programmi tiegħek, biss billi jittajpja jagħmlu 380 00:31:54,540 --> 00:31:59,320 jew jagħmlu Buggy jew jagħmlu jirkupraw, kwalunkwe minn dawn. 381 00:31:59,320 --> 00:32:07,800 Imma jekk int kumpilazzjoni manwalment bl clang, imbagħad inti ser ikollok tmur fi u jinkludu li-g bandiera. 382 00:32:07,800 --> 00:32:10,310 >> Fuq dan il-punt, issa li għandna GDB pront tagħna, 383 00:32:10,310 --> 00:32:12,310 huwa pjuttost sempliċi biex imexxu l-programm. 384 00:32:12,310 --> 00:32:19,740 Nistgħu jew tip run, jew nistgħu biss tip r. 385 00:32:19,740 --> 00:32:22,820 Jikkmanda GDB Ħafna jistgħu jiġu mqassra. 386 00:32:22,820 --> 00:32:25,940 Normalment biex wieħed biss jew ta 'ittri koppja, li huwa pjuttost sbieħ. 387 00:32:25,940 --> 00:32:30,980 Għalhekk Saad, jekk inti tip ru hit Ikteb, x'jiġri? 388 00:32:30,980 --> 00:32:39,390 [Saad] sibt SIGSEGV, tort segmentazzjoni, u mbagħad dan kollu gobbledygook. 389 00:32:39,390 --> 00:32:43,650 >> Yeah. 390 00:32:43,650 --> 00:32:47,990 Bħal aħna qed tara fuq l-iskrin dritt issa, u bħal Saad qal, 391 00:32:47,990 --> 00:32:53,430 meta aħna tip run jew ru hit Ikteb, aħna xorta jiksbu l-tort seq istess. 392 00:32:53,430 --> 00:32:55,830 Hekk billi tuża GDB ma jsolvix il-problema tagħna. 393 00:32:55,830 --> 00:32:59,120 Iżda tagħtina xi gobbledygook, u jirriżulta li din gobbledygook 394 00:32:59,120 --> 00:33:03,080 fil-fatt tgħidilna meta din se ssir. 395 00:33:03,080 --> 00:33:10,680 Biex parse din id-daqsxejn ftit, din id-daqsxejn ewwel huwa l-funzjoni li fih kollox għaddej ħażin. 396 00:33:10,680 --> 00:33:20,270 Hemm din __ strcmp_sse4_2, u jgħidilna li din se ssir f'dan il-fajl 397 00:33:20,270 --> 00:33:29,450 imsejħa sysdeps/i386, dan kollu, għal darb'oħra, it-tip ta 'mess - iżda line 254. 398 00:33:29,450 --> 00:33:31,670 Dak it-tip ta 'diffiċli biex parse. Normalment meta inti tara għalf bħal dan, 399 00:33:31,670 --> 00:33:38,770 dan ifisser li huwa seg faulting f'wieħed mill-libreriji sistema. 400 00:33:38,770 --> 00:33:43,220 Allura xi ħaġa li tagħmel ma 'strcmp. You guys raw strcmp qabel. 401 00:33:43,220 --> 00:33:52,730 Mhux wisq crazy, iżda dan ifisser li strcmp ikun miksur jew li hemm problema bil strcmp? 402 00:33:52,730 --> 00:33:57,110 X'taħseb, Alexander? 403 00:33:57,110 --> 00:34:04,890 [Alexander] Hu li - huwa 254 l-linja? U l-- mhux il-binarju, iżda mhux limiti massimi tagħhom, 404 00:34:04,890 --> 00:34:10,590 u allura hemm ilsien ieħor għal kull funzjoni. Hija li 254 f'dik il-funzjoni, jew -? 405 00:34:10,590 --> 00:34:21,460 >> Huwa linja 254. Jidher qisu f'dan il-fajl i., U għalhekk il-kodiċi assemblaġġ s probabbilment. 406 00:34:21,460 --> 00:34:25,949 >> Iżda, I raden il-ħaġa aktar urġenti hija, għaliex aħna ve gotten tort seq, 407 00:34:25,949 --> 00:34:29,960 u jidher qisu huwa li ġejjin mill-funzjoni strcmp, 408 00:34:29,960 --> 00:34:38,030 m'hemm implikat, allura, li strcmp hija maqsuma? 409 00:34:38,030 --> 00:34:42,290 Ma għandhom, nisperaw. Hekk biss għax għandek tort segmentazzjoni 410 00:34:42,290 --> 00:34:49,480 f'wieħed mill-funzjonijiet tas-sistema, tipikament dan ifisser li inti biss ma imsejħa b'mod korrett. 411 00:34:49,480 --> 00:34:52,440 Il-ħaġa eħfef biex tagħmel biex insemmu dak li attwalment għaddejjin 412 00:34:52,440 --> 00:34:55,500 meta inti tara xi ħaġa crazy bħal dan, kull meta inti tara tort seq, 413 00:34:55,500 --> 00:34:59,800 speċjalment jekk ikollok program li l-użu ta 'aktar minn sempliċiment prinċipali, 414 00:34:59,800 --> 00:35:03,570 huwa l-użu backtrace. 415 00:35:03,570 --> 00:35:13,080 I jqassar backtrace billi tikteb bt, għall-kuntrarju l-kelma backtrace sħiħa. 416 00:35:13,080 --> 00:35:16,510 Imma Charlotte, dak li jiġri meta inti tip bt u hit Ikteb? 417 00:35:16,510 --> 00:35:23,200 [Charlotte] Dan juri me żewġ linji, 0 linja u l-linja 1. 418 00:35:23,200 --> 00:35:26,150 >> Yeah. Allura linja 0 u linja 1. 419 00:35:26,150 --> 00:35:34,560 Dawn huma l-frejms munzell attwali li kienu attwalment fis-rwol meta program tiegħek ġġarraf. 420 00:35:34,560 --> 00:35:42,230 Tibda mill-qafas topmost, il-qafas 0, u li jmorru lill-bottom-aktar, li huwa qafas 1. 421 00:35:42,230 --> 00:35:45,140 Qafas topmost tagħna hija l-qafas strcmp. 422 00:35:45,140 --> 00:35:50,080 Inti tista 'taħseb ta' dan bħala simili għal dik il-problema konna biss tagħmel fuq il-kwizz mal-pointers, 423 00:35:50,080 --> 00:35:54,890 fejn kellna tpartit qafas munzell fuq quċċata ta 'qafas munzell prinċipali, 424 00:35:54,890 --> 00:35:59,700 u kellna l-varjabbli li tpartit kien li jużaw fuq nett tal-varjabbli li kien prinċipali jużaw. 425 00:35:59,700 --> 00:36:08,440 Hawnhekk tiġrifa tagħna ġara fil-funzjoni strcmp tagħna, li kienet tissejjaħ il-funzjoni prinċipali tagħna, 426 00:36:08,440 --> 00:36:14,370 u backtrace qed tagħti us mhux biss il-funzjonijiet li fihom affarijiet li fallew, 427 00:36:14,370 --> 00:36:16,440 imma hija wkoll tgħidilna fejn kollox kien jissejjaħ minn. 428 00:36:16,440 --> 00:36:18,830 Mela jekk jien iscroll fuq ftit aktar lejn il-lemin, 429 00:36:18,830 --> 00:36:26,110 nistgħu naraw li yeah, konna fuq il-linja 254 ta 'dan il-fajl strcmp-sse4.s. 430 00:36:26,110 --> 00:36:32,540 Iżda l-sejħa kienet magħmula fi buggy1.c, linja 6. 431 00:36:32,540 --> 00:36:35,960 Allura dan ifisser li nistgħu nagħmlu - huwa nistgħu biss tmur check out u ara dak li kien għaddej 432 00:36:35,960 --> 00:36:39,930 fil buggy1.c, linja 6. 433 00:36:39,930 --> 00:36:43,780 Għal darb'oħra, hemm modi koppja biex tagħmel dan. Wieħed huwa li ħruġ minn GDB 434 00:36:43,780 --> 00:36:49,460 jew ikollhom kodiċi tiegħek tiftaħ fi tieqa u referenza transkonfinali. 435 00:36:49,460 --> 00:36:54,740 Li, minnu nnifsu, huwa pjuttost handy għaliex issa jekk int fid-ħinijiet tal-uffiċċju 436 00:36:54,740 --> 00:36:57,220 u inti stajt ltqajna tort seq u TF tiegħek s mintix fejn kollox kien tkissir, 437 00:36:57,220 --> 00:36:59,710 inti tista 'biss jgħidu, "Oh, linja 6. I do not know x'inhu għaddej, 438 00:36:59,710 --> 00:37:03,670 imma xi ħaġa dwar il-linja 6 qed jikkawża programm tiegħi biex jinkiser. " 439 00:37:03,670 --> 00:37:10,430 Il-mod ieħor biex tagħmel dan huwa inti tista 'tuża dan il-kmand imsejħa lista GDB. 440 00:37:10,430 --> 00:37:13,650 Tista 'wkoll jqassar ma l. 441 00:37:13,650 --> 00:37:18,910 Allura jekk aħna hit l, liema do nikbru hawn? 442 00:37:18,910 --> 00:37:21,160 We jiksbu mazz sħiħ ta 'għalf stramb. 443 00:37:21,160 --> 00:37:26,030 Dan huwa l-kodiċi assemblea attwali 444 00:37:26,030 --> 00:37:29,860 li huwa fil strcmp_sse4_2. 445 00:37:29,860 --> 00:37:32,440 Dan jidher tip ta 'funky, 446 00:37:32,440 --> 00:37:36,520 u r-raġuni aħna jkollna dan hija għaliex id-dritt issa, 447 00:37:36,520 --> 00:37:40,160 GDB għandha magħna fil-qafas 0. 448 00:37:40,160 --> 00:37:43,070 >> Allura ghaċ nħarsu lejn varjabbli, kwalunkwe ħin irridu nħarsu lejn il-kodiċi sors, 449 00:37:43,070 --> 00:37:50,530 aħna qed tħares lejn il-kodiċi sors li tappartjieni għall-qafas munzell aħna bħalissa pulzieri 450 00:37:50,530 --> 00:37:53,200 Allura biex tikseb xi ħaġa sinifikanti, irridu 451 00:37:53,200 --> 00:37:57,070 jimxu lejn qafas munzell li jagħmel aktar sens. 452 00:37:57,070 --> 00:38:00,180 F'dan il-każ, il-qafas munzell prinċipali jagħmel sens ftit aktar, 453 00:38:00,180 --> 00:38:02,680 minħabba li kien effettivament il-kodiċi li aħna kiteb. 454 00:38:02,680 --> 00:38:05,330 Mhux l-strcmp kodiċi. 455 00:38:05,330 --> 00:38:08,650 Il-mod inti tista 'timxi bejn frames, f'dan il-każ, għaliex għandna tnejn, 456 00:38:08,650 --> 00:38:10,430 għandna 0 u 1, 457 00:38:10,430 --> 00:38:13,650 inti tagħmel dan bil-up u l-kmandi isfel. 458 00:38:13,650 --> 00:38:18,480 Jekk I ningranaw frame wieħed, 459 00:38:18,480 --> 00:38:21,770 Issa jien fil-qafas munzell prinċipali. 460 00:38:21,770 --> 00:38:24,330 I tista 'timxi l isfel li jmorru lura lejn fejn kien I, 461 00:38:24,330 --> 00:38:32,830 jitla 'mill-ġdid, jinżlu għal darb'oħra, u jitla' mill-ġdid. 462 00:38:32,830 --> 00:38:39,750 Jekk inti qatt do program tiegħek GDB, ikollok crash, ikollok l-backtrace, 463 00:38:39,750 --> 00:38:42,380 u tara li huwa f'xi fajl li inti ma tafx x'inhu għaddej. 464 00:38:42,380 --> 00:38:45,460 Inti tipprova lista, il-kodiċi ma tfittex familjari għalik, 465 00:38:45,460 --> 00:38:48,150 tagħti ħarsa lejn frames tiegħek u ċifra barra fejn int. 466 00:38:48,150 --> 00:38:51,010 Inti probabbilment fil-qafas munzell żbaljata. 467 00:38:51,010 --> 00:38:58,760 Jew għall-inqas int fil-qafas munzell li ma tkunx waħda li inti tista 'verament debug. 468 00:38:58,760 --> 00:39:03,110 Issa li aħna qed fil-qafas munzell xieraq, aħna qed fil prinċipali, 469 00:39:03,110 --> 00:39:08,100 Issa nistgħu nużaw il-kmand lista li ċifra barra dak l-linja kien. 470 00:39:08,100 --> 00:39:13,590 U inti tista 'tara dan, hi stampata dan għalina dritt hawn. 471 00:39:13,590 --> 00:39:19,470 Iżda nistgħu hit lista kollha l-istess, u l-lista tagħtina din printout sbieħ 472 00:39:19,470 --> 00:39:23,920 tas-source code attwali li għaddej fil hawn. 473 00:39:23,920 --> 00:39:26,420 >> B'mod partikolari, nistgħu nħarsu lejn linja 6. 474 00:39:26,420 --> 00:39:29,330 Nistgħu naraw x'inhu għaddej hawn. 475 00:39:29,330 --> 00:39:31,250 U jidher qisu aħna qed jagħmlu paragun string 476 00:39:31,250 --> 00:39:41,050 bejn il-string "CS50 blat" u ARGV [1]. 477 00:39:41,050 --> 00:39:45,700 Xi ħaġa dwar dan kien jiġġarrfu. 478 00:39:45,700 --> 00:39:54,120 Allura Missy, do ikollok xi ħsibijiet dwar dak li jista 'jiġri hawn? 479 00:39:54,120 --> 00:39:59,400 [Missy] I do not know għaliex huwa jiġġarrfu. >> Inti ma taf għaliex huwa jiġġarrfu? 480 00:39:59,400 --> 00:40:02,700 Jimmy, xi ħsibijiet? 481 00:40:02,700 --> 00:40:06,240 [Jimmy] M'inix totalment ċert, iżda l-aħħar darba aħna użati string tqabbel, 482 00:40:06,240 --> 00:40:10,260 jew strcmp, kellna bħal tliet każijiet differenti taħtu. 483 00:40:10,260 --> 00:40:12,800 Aħna ma jkollu ==, ma naħsibx, id-dritt f'dik il-linja l-ewwel. 484 00:40:12,800 --> 00:40:16,700 Minflok kien mifrud fi tlieta, u wieħed kien == 0, 485 00:40:16,700 --> 00:40:19,910 wieħed kien <0, I think, u wieħed kien> 0. 486 00:40:19,910 --> 00:40:22,590 Allura forsi xi ħaġa bħal dik? >> Yeah. Allura hemm din il-kwistjoni 487 00:40:22,590 --> 00:40:27,200 ta 'li qed nagħmlu l-paragun korrett? 488 00:40:27,200 --> 00:40:31,660 Stella? Kwalunkwe ħsibijiet? 489 00:40:31,660 --> 00:40:38,110 [Stella] M'inix ċert. >> Mhux żgur. Daniel? Ħsibijiet? Okay. 490 00:40:38,110 --> 00:40:44,770 Jirriżulta minn dak li qed jiġri dritt hawnhekk hija meta aħna mexxa l-programm 491 00:40:44,770 --> 00:40:48,370 u aħna ltqajna l-tort seq, meta inti dam il-programm għall-ewwel darba, Daniel, 492 00:40:48,370 --> 00:40:50,800 ma inti tagħti l-ebda argument kmand tal-linja? 493 00:40:50,800 --> 00:40:58,420 [Daniel] No >> No F'dak il-każ, dak li huwa l-valur ta 'ARGV [1]? 494 00:40:58,420 --> 00:41:00,920 >> M'hemm l-ebda valur. >> Dritt. 495 00:41:00,920 --> 00:41:06,120 Ukoll, m'hemmx valur string xieraq. 496 00:41:06,120 --> 00:41:10,780 Iżda hemm xi valur. X'inhu l-valur li gets maħżuna hemmhekk? 497 00:41:10,780 --> 00:41:15,130 >> Valur żibel? >> Huwa jew valur żibel jew, f'dan il-każ, 498 00:41:15,130 --> 00:41:19,930 l-aħħar ta 'l-array ARGV huwa dejjem terminat bil null. 499 00:41:19,930 --> 00:41:26,050 Allura x'inhu dak li attwalment ltqajna maħżuna fil hemm huwa null. 500 00:41:26,050 --> 00:41:30,810 Il-mod ieħor biex issolvi din, aktar milli ħsieb permezz, 501 00:41:30,810 --> 00:41:33,420 huwa li jippruvaw l-istampar out. 502 00:41:33,420 --> 00:41:35,880 Dan huwa fejn I kien qal li l-użu GDB huwa kbir, 503 00:41:35,880 --> 00:41:40,640 għaliex inti tista 'jistampaw l-varjabbli, il-valuri kollha li tixtieq 504 00:41:40,640 --> 00:41:43,230 jużaw dan il-kmand p handy dandy-. 505 00:41:43,230 --> 00:41:48,520 Mela jekk jien tip p u mbagħad I tip l-valur ta 'varjabbli jew l-isem ta' varjabbli, 506 00:41:48,520 --> 00:41:55,320 jiġifieri, argc, nara li argc huwa 1. 507 00:41:55,320 --> 00:42:01,830 Jekk irrid li jistampa ARGV [0], I tista 'tagħmel dan biss bħal dik. 508 00:42:01,830 --> 00:42:04,840 U bħall rajna, ARGV [0] hija dejjem l-isem tal-programm tiegħek, 509 00:42:04,840 --> 00:42:06,910 dejjem l-isem tal-eżekutibbli. 510 00:42:06,910 --> 00:42:09,740 Hawnhekk għandek tara huwa ltqajna l-isem traġitt sħiħ. 511 00:42:09,740 --> 00:42:15,920 I tista 'wkoll jistampa ARGV [1] u tara x'jiġri. 512 00:42:15,920 --> 00:42:20,890 >> Hawnhekk aħna ltqajna dan it-tip ta 'valur mystical. 513 00:42:20,890 --> 00:42:23,890 Sirna dan 0x0. 514 00:42:23,890 --> 00:42:27,850 Ftakar fil-bidu tat-terminu meta tkellimna dwar in-numri hexadecimal? 515 00:42:27,850 --> 00:42:34,680 Jew din il-kwistjoni ftit fl-aħħar tal pset 0 dwar kif li jirrappreżentaw 50 fil-hex? 516 00:42:34,680 --> 00:42:39,410 Il-mod kif aħna jiktbu numri hex f 'CS, just biex ma jħawdu lilna nfusna 517 00:42:39,410 --> 00:42:46,080 bin-numri deċimali, hija aħna dejjem prefiss bl 0x. 518 00:42:46,080 --> 00:42:51,420 Allura dan prefiss 0x dejjem ifisser biss jinterpretaw il-numru li ġej bħala numru hexadeċimali, 519 00:42:51,420 --> 00:42:57,400 mhux bħala string, mhux bħala numru deċimali, mhux bħala numru binarju. 520 00:42:57,400 --> 00:43:02,820 Peress li n-numru 5-0 huwa numru validu f'hexadecimal. 521 00:43:02,820 --> 00:43:06,240 U huwa numru fil deċimali, 50. 522 00:43:06,240 --> 00:43:10,050 Allura dan huwa biss kif aħna disambiguate. 523 00:43:10,050 --> 00:43:14,860 Allura 0x0 mezzi 0 hexadeċimali, li huwa wkoll deċimali 0, binarja 0. 524 00:43:14,860 --> 00:43:17,030 Huwa biss il-valur 0. 525 00:43:17,030 --> 00:43:22,630 Jirriżulta li dan huwa dak null hija, fil-fatt, fil-memorja. 526 00:43:22,630 --> 00:43:25,940 Null huwa biss 0. 527 00:43:25,940 --> 00:43:37,010 Hawnhekk, l-element maħżuna ARGV [1] huwa null. 528 00:43:37,010 --> 00:43:45,220 Allura aħna qed tipprova tqabbel "CS50 blat tagħna" string għal string null. 529 00:43:45,220 --> 00:43:48,130 Allura dereferencing null, jippruvaw jiksbu aċċess għas affarijiet fil null, 530 00:43:48,130 --> 00:43:55,050 dawk huma tipikament se jikkawżaw xi tip ta 'tort segmentazzjoni jew affarijiet ħżiena oħra li jiġri. 531 00:43:55,050 --> 00:43:59,350 U jirriżulta li strcmp ma tikkontrolla biex tara 532 00:43:59,350 --> 00:44:04,340 jekk jew le inti ħadthom għadda fi valur li l null. 533 00:44:04,340 --> 00:44:06,370 Pjuttost, hija biss timxi 'l quddiem, tipprova tagħmel ħaġa tagħha, 534 00:44:06,370 --> 00:44:14,640 u jekk seg difetti, din seg difetti, u huwa problema tiegħek. Ikollok tmur tiffissa lilha. 535 00:44:14,640 --> 00:44:19,730 Really malajr, kif tista aħna tiffissa din il-problema? Charlotte? 536 00:44:19,730 --> 00:44:23,540 [Charlotte] Tista 'tiċċekkja bl-użu jekk. 537 00:44:23,540 --> 00:44:32,240 Mela jekk ARGV [1] huwa null, == 0, mbagħad jirritornaw 1, jew xi ħaġa [mhux intelliġibbli]. 538 00:44:32,240 --> 00:44:34,590 >> Yeah. Allura dak mod wieħed tajjeb ħafna biex jagħmlu dan, kif nistgħu tikkontrolla biex tara, 539 00:44:34,590 --> 00:44:39,230 il-valur aħna waslu biex jgħaddu fil strcmp, ARGV [1], hija din null? 540 00:44:39,230 --> 00:44:45,830 Jekk null huwa, allura nistgħu ngħidu okay, abort. 541 00:44:45,830 --> 00:44:49,450 >> Mod aktar komuni biex isir dan huwa li tuża l-valur argc. 542 00:44:49,450 --> 00:44:52,040 Tista 'tara dritt hawn fil-bidu tal ewlieni, 543 00:44:52,040 --> 00:44:58,040 aħna barra dak it-test ewwel li aħna tipikament jagħmlu meta nużaw argumenti kmand tal-linja, 544 00:44:58,040 --> 00:45:05,240 li huwa li teżamina jekk jew le il-valur argc tagħna huwa dak li nistennew. 545 00:45:05,240 --> 00:45:10,290 F'dan il-każ, aħna qed jistennew mill-inqas żewġ argumenti, 546 00:45:10,290 --> 00:45:13,660 l-isem tal-programm plus ieħor. 547 00:45:13,660 --> 00:45:17,140 Għaliex aħna qed madwar biex jużaw t-tieni argument dritt hawn. 548 00:45:17,140 --> 00:45:21,350 Allura wara xi tip ta 'test qabel, qabel sejħa strcmp tagħna 549 00:45:21,350 --> 00:45:37,390 li t-testijiet jew le ARGV ikun mill-anqas 2, wkoll se jagħmel l-istess tip ta 'ħaġa. 550 00:45:37,390 --> 00:45:40,620 Nistgħu naraw jekk dan jaħdem billi tmexxija tal-programm mill-ġdid. 551 00:45:40,620 --> 00:45:45,610 Inti tista 'dejjem terġa' tibda programm tiegħek fi GDB, li huwa tassew sbieħ. 552 00:45:45,610 --> 00:45:49,310 Inti tista 'taħdem, u meta inti tgħaddi fl-argumenti għall-programm tiegħek, 553 00:45:49,310 --> 00:45:53,060 inti tgħaddi minnhom meta inti sejħa run, mhux meta inti boot up GDB. 554 00:45:53,060 --> 00:45:57,120 B'dak il-mod inti tista 'żżomm jinvoka program tiegħek ma' l-argumenti differenti kull darba. 555 00:45:57,120 --> 00:46:08,080 Allura run, jew għal darb'oħra, I tista tip r, u ejja ara dak li jiġri jekk aħna tip "bonjour". 556 00:46:08,080 --> 00:46:11,140 Dejjem se jgħidlek jekk inti tixtieq li tibda mill-bidu mill-ġdid. 557 00:46:11,140 --> 00:46:17,490 Normalment, inti tixtieq li tibda mill-bidu mill-ġdid. 558 00:46:17,490 --> 00:46:25,010 U f'dan il-punt, huwa startjar mill-ġdid mill-ġdid, dan tistampa 559 00:46:25,010 --> 00:46:28,920 il-programm li aħna qed taħdem, buggy1, bl-argument hello, 560 00:46:28,920 --> 00:46:32,720 u prints dan out istandard; jgħid, "Inti tikseb D," wiċċ imdejjaq. 561 00:46:32,720 --> 00:46:37,610 Iżda aħna ma seg tort. Huwa qal li l-proċess ħareġ normalment. 562 00:46:37,610 --> 00:46:39,900 Allura li jistenna pretty tajba. 563 00:46:39,900 --> 00:46:43,050 Nru tort aktar seq, għamilna dan fil-passat, 564 00:46:43,050 --> 00:46:48,190 hekk jidher qisu dan kien tassew il-bug tort seq li konna jkollna. 565 00:46:48,190 --> 00:46:51,540 Sfortunatament, jgħidilna li aħna qed jkollna D. 566 00:46:51,540 --> 00:46:54,090 >> Aħna tista 'tmur lura u nħarsu lejn l-kodiċi u ara dak li kien għaddej hemmhekk 567 00:46:54,090 --> 00:46:57,980 ċifra barra dak li kien - għaliex kien tgħidilna li aħna ltqajna D. 568 00:46:57,980 --> 00:47:03,690 Ejja naraw, hawnhekk kien dan printf tgħid li inti ltqajna D. 569 00:47:03,690 --> 00:47:08,540 Jekk aħna tip lista, kif inti żżomm lista ittajpjar, iżomm iterazzjoni stabbiliti permezz program tiegħek, 570 00:47:08,540 --> 00:47:10,940 għalhekk ser nuruk l-linji ewwel ftit tal-programm tiegħek. 571 00:47:10,940 --> 00:47:15,450 Imbagħad ser nuruk l-linji li ġejjin, u l-blokki li jmiss u l-blokki li jmiss. 572 00:47:15,450 --> 00:47:18,240 U dan ser iżommu tipprova jinżlu. 573 00:47:18,240 --> 00:47:21,180 U issa aħna ser jiksbu "linja numru 16 hija barra mill-firxa." 574 00:47:21,180 --> 00:47:23,940 Minħabba li għandha biss 15 linji. 575 00:47:23,940 --> 00:47:30,310 Jekk ikollok dan il-punt u tiegħek mintix, "What do I do?" inti tista 'tuża l-kmand għajnuna. 576 00:47:30,310 --> 00:47:34,340 Użu jgħinu u mbagħad tagħtih l-isem ta 'kmand. 577 00:47:34,340 --> 00:47:36,460 U inti tara l-GDB tagħtina dan kollu tip ta 'għalf. 578 00:47:36,460 --> 00:47:43,870 Huwa jgħid, "Bl-ebda argument, telenka għaxar linji aktar wara jew madwar l-elenkar ta 'qabel. 579 00:47:43,870 --> 00:47:47,920 Lista - jelenka l-linji 10 qabel - " 580 00:47:47,920 --> 00:47:52,960 Mela ejja ipprova uża minus lista. 581 00:47:52,960 --> 00:47:57,000 U li jelenka l-linji 10 qabel; inti tista 'tilgħab madwar mal-lista ftit. 582 00:47:57,000 --> 00:48:02,330 Tista 'tagħmel lista, lista -, inti tista' anki tagħti lista ta 'numru, bħall-lista 8, 583 00:48:02,330 --> 00:48:07,500 u dan ser telenka l-linji 10 ta 'madwar linja 8. 584 00:48:07,500 --> 00:48:10,290 U inti tista 'tara x'inhu għaddej hawn huwa inti ħadthom ltqajna sempliċi jekk ieħor. 585 00:48:10,290 --> 00:48:13,980 Jekk inti tip CS50 blat, li tistampa "Ikollok A." 586 00:48:13,980 --> 00:48:16,530 Inkella prints out "Ikollok D." 587 00:48:16,530 --> 00:48:23,770 Belt Bummer. Kull dritt. Iva? 588 00:48:23,770 --> 00:48:26,730 >> [Daniel] Allura meta I ppruvaw jagħmlu CS50 blat mingħajr il-kwotazzjonijiet, 589 00:48:26,730 --> 00:48:29,290 jgħid "Ikollok D." 590 00:48:29,290 --> 00:48:32,560 I meħtieġa l-kwotazzjonijiet biex tiksbu biex jaħdmu; għaliex huwa li? 591 00:48:32,560 --> 00:48:38,490 >> Yeah. Jirriżulta li meta - dan huwa pass ieħor tidbit ftit gost - 592 00:48:38,490 --> 00:48:47,900 meta inti tmexxi l-programm, jekk aħna run u aħna tip fil CS50 blat, 593 00:48:47,900 --> 00:48:50,800 bħad Daniel kien qal huwa ma, u inti hit Ikteb, 594 00:48:50,800 --> 00:48:52,870 xorta jgħid irridu jiksbu D. 595 00:48:52,870 --> 00:48:55,580 U l-kwistjoni hija, għaliex hija din? 596 00:48:55,580 --> 00:49:02,120 U jirriżulta li kemm terminal tagħna u GDB parse dawn bħala żewġ argumenti separati. 597 00:49:02,120 --> 00:49:04,800 Għaliex meta jkun hemm spazju, li l-implikat bħala 598 00:49:04,800 --> 00:49:08,730 l-ewwel argument intemmet; l-argument li jmiss tkun waslet biex tibda. 599 00:49:08,730 --> 00:49:13,260 Il-mod li jikkombinaw dawn fi tnejn, jew sorry, f'waħda argument, 600 00:49:13,260 --> 00:49:18,510 huwa l-użu l-kwotazzjonijiet. 601 00:49:18,510 --> 00:49:29,560 Allura issa, jekk aħna poġġih fil-kwotazzjonijiet u run mill-ġdid, irridu jiksbu A. 602 00:49:29,560 --> 00:49:38,780 Hekk biss biex terġa, l-ebda kwotazzjonijiet, CS50 u blat huma parsed bħala żewġ argumenti separati. 603 00:49:38,780 --> 00:49:45,320 Bil-kwotazzjonijiet, huwa parsed bħala wieħed argument għal kollox. 604 00:49:45,320 --> 00:49:53,070 >> Nistgħu naraw dan bil-breakpoint. 605 00:49:53,070 --> 00:49:54,920 S'issa konna qed tmexxi programm tagħna, u huwa kien għaddej 606 00:49:54,920 --> 00:49:58,230 jew sa ma seg ħsarat jew hits żball 607 00:49:58,230 --> 00:50:05,930 jew sakemm ikun ħareġ u kollha kienet totalment multa. 608 00:50:05,930 --> 00:50:08,360 Dan mhuwiex neċessarjament l-aktar ħaġa utli, għaliex kultant 609 00:50:08,360 --> 00:50:11,840 għandek żball fil-programm tiegħek, iżda mhux jikkawżaw tort segmentazzjoni. 610 00:50:11,840 --> 00:50:16,950 Mhuwiex jikkawżaw program tiegħek biex tieqaf jew xi ħaġa bħal dik. 611 00:50:16,950 --> 00:50:20,730 Il-mod biex jiksbu GDB li nieqaf programm tiegħek fuq punt partikolari 612 00:50:20,730 --> 00:50:23,260 huwa li jiġi stabbilit breakpoint. 613 00:50:23,260 --> 00:50:26,520 Inti tista 'jew tagħmel dan billi tistabbilixxi breakpoint fuq isem il-funzjoni 614 00:50:26,520 --> 00:50:30,770 jew inti tista 'tistabbilixxi breakpoint fuq linja partikolari ta' kodiċi. 615 00:50:30,770 --> 00:50:34,450 I simili li jiġu stabbiliti breakpoints dwar l-ismijiet tal-funzjoni, għaliex - faċli biex tiftakar, 616 00:50:34,450 --> 00:50:37,700 u jekk inti fil-fatt imorru fi u tibdel il-kodiċi sors tiegħek up ftit, 617 00:50:37,700 --> 00:50:42,020 allura breakpoint tiegħek fil-fatt se jibqa fl-istess post fil-kodiċi tiegħek. 618 00:50:42,020 --> 00:50:44,760 Billi jekk inti qed tuża numri linja, u n-numri linja bidla 619 00:50:44,760 --> 00:50:51,740 għaliex inti iżżid jew tħassar xi kodiċi, imbagħad breakpoints tiegħek huma kollha totalment invitat up. 620 00:50:51,740 --> 00:50:58,590 Waħda mill-aktar affarijiet komuni nagħmel huwa stabbilit breakpoint fuq il-funzjoni prinċipali. 621 00:50:58,590 --> 00:51:05,300 Spiss I ser boot up GDB, jien ser tip b prinċipali, hit Ikteb, u li ser jistabbilixxu breakpoint 622 00:51:05,300 --> 00:51:10,630 fuq il-funzjoni prinċipali li biss jgħid, "nieqaf il-programm hekk kif tibda taħdem," 623 00:51:10,630 --> 00:51:17,960 u li mod, meta I run program tiegħi ma ', ngħidu aħna, CS50 blat bħala żewġ argumenti 624 00:51:17,960 --> 00:51:24,830 u hit Ikteb, jiġrilha l-funzjoni prinċipali u jieqaf dritt fil-linja ewwel, 625 00:51:24,830 --> 00:51:30,620 dritt qabel ma jevalwa l-funzjoni strcmp. 626 00:51:30,620 --> 00:51:34,940 >> Peress li jien waqfa qasira, issa I tista 'tibda mucking madwar u jaraw x'inhu għaddej 627 00:51:34,940 --> 00:51:40,250 bl-varjabbli kollha differenti li huma mgħoddija fil-programm tiegħi. 628 00:51:40,250 --> 00:51:43,670 Hawnhekk nista 'jistampa argc u ara x'inhu għaddej. 629 00:51:43,670 --> 00:51:50,030 Ara li argc huwa 3, minħabba li ltqajna 3 valuri differenti fiha. 630 00:51:50,030 --> 00:51:54,060 Huwa ltqajna l-isem tal-programm, huwa ltqajna l-ewwel argument u t-tieni argument. 631 00:51:54,060 --> 00:52:09,330 Nistgħu print dawk barra mill tħares lejn ARGV [0], ARGV [1], u ARGV [2]. 632 00:52:09,330 --> 00:52:12,030 Allura issa inti tista 'wkoll tara għaliex din is-sejħa strcmp se jonqsu, 633 00:52:12,030 --> 00:52:21,650 għaliex inti tara li hija ma jinqasam il-CS50 u l-blat fil-żewġ argumenti separati. 634 00:52:21,650 --> 00:52:27,250 Fuq dan il-punt, ladarba inti stajt hit breakpoint, inti tista 'tkompli pass permezz tal-programm tiegħek 635 00:52:27,250 --> 00:52:32,920 linja b'linja, għall-kuntrarju jibdew program tiegħek mill-ġdid. 636 00:52:32,920 --> 00:52:35,520 Mela jekk inti ma tridx li tibda program tiegħek mill-ġdid u biss tkompli fuq minn hawn, 637 00:52:35,520 --> 00:52:41,970 inti tista 'tuża l-kmand jitkomplew u tkompli ser tmexxi l-programm sa l-aħħar. 638 00:52:41,970 --> 00:52:45,010 Eżatt bħal ma għamlet hawnhekk. 639 00:52:45,010 --> 00:52:54,880 Madankollu, jekk I jistartja l-programm, CS50 blat, hits breakpoint tiegħi mill-ġdid, 640 00:52:54,880 --> 00:52:59,670 u dan iż-żmien, jekk ma rridx li jmorru biss it-triq kollha permezz tal-bqija tal-programm, 641 00:52:59,670 --> 00:53:08,040 I jistgħu jużaw l-kmand li jmiss, li jiena wkoll jqassar bl-n. 642 00:53:08,040 --> 00:53:12,960 U dan se pass permezz tal-linja programm b'linja. 643 00:53:12,960 --> 00:53:17,530 Allura inti tista 'tara kif l-affarijiet jesegwixxu, bħala varjabbli bidla, kif l-affarijiet tikseb aġġornata. 644 00:53:17,530 --> 00:53:21,550 Liema hija pjuttost sbieħ. 645 00:53:21,550 --> 00:53:26,570 Il-ħaġa jibred oħra huwa minflok tirrepeti l-istess kmand aktar u aktar u aktar mill-ġdid, 646 00:53:26,570 --> 00:53:30,670 jekk inti biss hit Ikteb - hekk hawn inti tara I ma ittajpjat fil xejn - 647 00:53:30,670 --> 00:53:33,780 jekk I biss hit Ikteb, se jirrepeti l-kmand ta 'qabel, 648 00:53:33,780 --> 00:53:36,900 jew il-kmand GDB preċedenti li jien biss jitqiegħed pulzieri 649 00:53:36,900 --> 00:53:56,000 I tista 'żżomm laqtu Daħħal u dan ser iżommu titjib permezz tal-linja kodiċi tiegħi b'linja. 650 00:53:56,000 --> 00:53:59,310 Nixtieq jinkoraġġixxu inti guys tmur jiċċekkjaw il-programmi Buggy oħrajn ukoll. 651 00:53:59,310 --> 00:54:01,330 Aħna ma jkollhom il-ħin biex tikseb permezz ta 'kull wieħed minnhom illum fit-taqsima. 652 00:54:01,330 --> 00:54:05,890 Il-kodiċi ta 'sors hemmhekk, sabiex inti tista' tip ta 'tara x'inhu għaddej 653 00:54:05,890 --> 00:54:07,730 wara l-kwinti jekk ikollok verament staġnati, 654 00:54:07,730 --> 00:54:11,940 iżda għall-inqas, biss prattika booting up GDB, 655 00:54:11,940 --> 00:54:13,940 tmexxija tal-programm sakemm pawżi fuqek, 656 00:54:13,940 --> 00:54:18,260 jkollna l-backtrace, jidhru liema funzjoni-tiġrifa kien, 657 00:54:18,260 --> 00:54:24,450 liema linja kien fuq, stampar xi valuri varjabbli, 658 00:54:24,450 --> 00:54:30,140 biss sabiex inti tikseb jħossu għal dan, minħabba li se verament tgħinek miexi 'l quddiem. 659 00:54:30,140 --> 00:54:36,340 Fuq dan il-punt, aħna qed tmur biex nieqaf minn GDB, li inti ma tuża nieqaf jew biss q. 660 00:54:36,340 --> 00:54:40,460 Jekk programm tiegħek huwa fin-nofs ta 'tmexxija xorta, u ma ħareġ, 661 00:54:40,460 --> 00:54:43,510 dejjem se jgħidlek, "Inti żgur li int verament tixtieq li nieqaf?" 662 00:54:43,510 --> 00:54:48,770 Tista 'biss hit iva. 663 00:54:48,770 --> 00:54:55,250 >> Issa aħna qed tmur biex tħares lejn il-problema li jmiss li għandna, li huwa l-programm qattus. 664 00:54:55,250 --> 00:54:59,880 Jekk inti tara l-qasir fuq ridirezzjonar u pajpijiet, tkun taf tara li Tommy tuża dan il-programm 665 00:54:59,880 --> 00:55:07,540 li bażikament prints l-output ta 'fajl għall-iskrin. 666 00:55:07,540 --> 00:55:12,660 Mela jekk I run qattus, dan huwa attwalment programm built-in għall-appliance, 667 00:55:12,660 --> 00:55:16,860 u jekk ikollok MACs inti tista 'tagħmel dan fuq Mac tiegħek wisq, jekk inti tiftaħ terminal. 668 00:55:16,860 --> 00:55:25,630 U aħna - qattus, ejja ngħidu, cp.c, u hit Ikteb. 669 00:55:25,630 --> 00:55:29,640 X'inhu dan ma, jekk aħna iscroll sa ftit u ara fejn aħna mexxa l-linja, 670 00:55:29,640 --> 00:55:40,440 jew fejn aħna mexxa l-kmand tal-qtates, huwa litteralment biss stampata il-kontenuti tad cp.c għall-iskrin tagħna. 671 00:55:40,440 --> 00:55:44,140 Aħna tista 'taħdem mill-ġdid u inti tista' tpoġġi fil-fajls multipli flimkien. 672 00:55:44,140 --> 00:55:49,880 Allura inti tista 'tagħmel cp.c qtates, u allura nistgħu wkoll concatenate-fajl cat.c, 673 00:55:49,880 --> 00:55:53,250 li huwa l-programm aħna waslu biex tikteb, 674 00:55:53,250 --> 00:55:58,140 u dan ser jistampaw żewġ fajls lura lura għall-iskrin tagħna. 675 00:55:58,140 --> 00:56:05,490 Allura jekk aħna iscroll sa ftit, naraw li meta aħna dam dan cp.c qtates, cat.c, 676 00:56:05,490 --> 00:56:17,110 ewwel stampata tal-fajl cp, u mbagħad taħtu, hija stampata tal-fajl cat.c dritt isfel hawn. 677 00:56:17,110 --> 00:56:19,650 Aħna ser jużaw dan biex tikseb biss saqajn tagħna imxarrab. 678 00:56:19,650 --> 00:56:25,930 Play madwar bi stampar sempliċi għall-terminal, ara kif dan jaħdem. 679 00:56:25,930 --> 00:56:39,170 Jekk inti guys tiftaħ il gedit cat.c, hit Ikteb, 680 00:56:39,170 --> 00:56:43,760 tista 'tara l-programm li aħna qed madwar biex jiktbu. 681 00:56:43,760 --> 00:56:48,980 Imxejna inklużi din il-pjanċa tal-bojler sbieħ, hekk aħna ma jkollhom iqattgħu l-ħin ittajpjar kollha li barra. 682 00:56:48,980 --> 00:56:52,310 Aħna wkoll jikkontrolla l-għadd ta 'argumenti għadda pulzieri 683 00:56:52,310 --> 00:56:56,910 Aħna jistampa messaġġ użu sympathique. 684 00:56:56,910 --> 00:57:00,950 >> Dan huwa t-tip ta 'ħaġa li, għal darb'oħra, bħal aħna kont qed jitkellem dwar, 685 00:57:00,950 --> 00:57:04,490 huwa kważi simili memorja tal-muskoli. 686 00:57:04,490 --> 00:57:07,190 Just remember li jżomm tagħmel l-istess tip ta 'għalf 687 00:57:07,190 --> 00:57:11,310 u dejjem stampar xi tip ta 'messaġġ utli 688 00:57:11,310 --> 00:57:17,670 sabiex in-nies jafu kif tmexxi programm tiegħek. 689 00:57:17,670 --> 00:57:21,630 Bil qattus, huwa pjuttost sempliċi; aħna qed biss se jmorru kollha permezz ta 'l-argumenti differenti 690 00:57:21,630 --> 00:57:24,300 li kienu għaddew għall-programm tagħna, u aħna qed tmur għall-istampar 691 00:57:24,300 --> 00:57:29,950 kontenut tagħhom barra għall-iskrin wieħed kull darba. 692 00:57:29,950 --> 00:57:35,670 Sabiex jistampa fajls lill-iskrin, aħna qed tmur biex tagħmel xi ħaġa simili ħafna 693 00:57:35,670 --> 00:57:38,120 għal dak li għamilna fl-aħħar tal-kwizz. 694 00:57:38,120 --> 00:57:45,350 Fl-aħħar tal-kwizz, li jimpjegaw il-programm, kellna biex tiftaħ fajl, 695 00:57:45,350 --> 00:57:48,490 u mbagħad kellna biex jistampaw lilha. 696 00:57:48,490 --> 00:57:54,660 F'dan il-każ, aħna qed tmur biex jiftħu fajl, u aħna qed tmur biex taqra minnha minflok. 697 00:57:54,660 --> 00:58:00,630 Imbagħad aħna qed tmur biex jistampa, minflok għall-fajl, aħna qed tmur biex jistampaw l-iskrin. 698 00:58:00,630 --> 00:58:05,830 Allura l-istampar l-iskrin inti ħadthom kollha isir qabel ma printf. 699 00:58:05,830 --> 00:58:08,290 Allura dak mhux wisq crazy. 700 00:58:08,290 --> 00:58:12,190 Iżda qari fajl huwa tip ta 'stramb. 701 00:58:12,190 --> 00:58:17,300 Aħna ser jgħaddu dik ftit kull darba. 702 00:58:17,300 --> 00:58:20,560 Jekk inti guys tmur lura għal dak il-problema aħħar fuq kwizz tiegħek, problema 33, 703 00:58:20,560 --> 00:58:27,280 l-ewwel linja li aħna qed tmur biex tagħmel hawn, jiftaħ il-fajl, hija simili ħafna għal dak li għamilna hemm. 704 00:58:27,280 --> 00:58:36,370 Allura Stella, dak ma li tfittex linja simili, meta aħna tiftaħ fajl? 705 00:58:36,370 --> 00:58:47,510 [Stella] FAJL Kapitali *, file - >> Okay. >> - Hija ugwali għal fopen. >> Yup. 706 00:58:47,510 --> 00:58:55,980 Li f'dan il-każ huwa? Huwa fil-kumment. 707 00:58:55,980 --> 00:59:06,930 >> Huwa fil-kumment? ARGV [i] ur? 708 00:59:06,930 --> 00:59:11,300 >> Eżattament. Dritt fuq. Allura Stella totalment id-dritt. 709 00:59:11,300 --> 00:59:13,720 Dan huwa dak li l-linja Dehra. 710 00:59:13,720 --> 00:59:19,670 Aħna ser tikseb varjabbli nixxiegħa fajl, jaħżnu * FAJL, hekk kollha brieret, 711 00:59:19,670 --> 00:59:25,720 FAJL, *, u l-isem ta 'din il-varjabbli se jkun fajl. 712 00:59:25,720 --> 00:59:32,250 Aħna jista 'sejħa hija tkun xi tkun aħna simili. Aħna jista 'sejħa hija first_file, jew file_i, ikun x'ikun aħna tixtieq. 713 00:59:32,250 --> 00:59:37,590 U allura l-isem tal-fajl ġie mgħoddi fuq il-linja tal-kmand għal dan il-programm. 714 00:59:37,590 --> 00:59:44,450 Allura huwa maħżun fil ARGV [i,] u allura aħna qed tmur biex tiftaħ dan il-fajl fil-modalità jinqara. 715 00:59:44,450 --> 00:59:48,100 Issa li konna fetaħ il-fajl, x'inhu l-ħaġa li aħna dejjem għandek tiftakar li jagħmlu 716 00:59:48,100 --> 00:59:52,230 kull meta aħna ve fetaħ fajl? Agħlaq dan. 717 00:59:52,230 --> 00:59:57,220 Allura Missy, kif nistgħu tagħlaq fajl? 718 00:59:57,220 --> 01:00:01,020 [Missy] fclose (fajl) >> fclose (fajl). Eżattament. 719 01:00:01,020 --> 01:00:05,340 Great. Okay. Jekk inħarsu lejn din tagħmel kumment dritt hawn, 720 01:00:05,340 --> 01:00:11,940 jgħid, "Open ARGV [i] u jistampa l-kontenut tiegħu sa stdout." 721 01:00:11,940 --> 01:00:15,460 >> Out Standard huwa isem stramb. Stdout huwa biss mod tagħna ta 'tgħid 722 01:00:15,460 --> 01:00:22,880 irridu li jistampaw il-terminali; irridu li jistampaw il-fluss produzzjoni standard. 723 01:00:22,880 --> 01:00:26,450 Nistgħu attwalment teħles minn dan il-kumment dritt hawn. 724 01:00:26,450 --> 01:00:36,480 Jien ser kopja u paste dan peress li huwa dak li għamilna. 725 01:00:36,480 --> 01:00:41,290 Fuq dan il-punt, issa għandna biex taqra l-ftit fajl mill bit. 726 01:00:41,290 --> 01:00:46,300 Imxejna diskussi koppja ta 'modi ta' fajls qari. 727 01:00:46,300 --> 01:00:51,830 Liema huma Favourites tieghek s'issa? 728 01:00:51,830 --> 01:00:57,960 Liema modi inti dehru jew għandek tiftakar, li jaqra fajls? 729 01:00:57,960 --> 01:01:04,870 [Daniel] fread? >> Fread? Allura fread hija waħda. Jimmy, do you know xi ħaddieħor? 730 01:01:04,870 --> 01:01:12,150 [Jimmy] No >> Okay. Nope. Charlotte? Alexander? Kwalunkwe oħrajn? Okay. 731 01:01:12,150 --> 01:01:20,740 Allura l-oħrajn huma fgetc, huwa wieħed li aħna ser jużaw ħafna. 732 01:01:20,740 --> 01:01:26,410 Hemm ukoll fscanf; inti guys tara mudell hawn? 733 01:01:26,410 --> 01:01:29,170 Huma kollha tibda bil f. Xejn x'jaqsmu ma 'fajl. 734 01:01:29,170 --> 01:01:35,260 Hemm fread, fgetc, fscanf. Dawn huma kollha tal-funzjonijiet qari. 735 01:01:35,260 --> 01:01:49,120 Għall-kitba għandna fwrite, għandna fputc minflok fgetc. 736 01:01:49,120 --> 01:01:58,250 Għandna wkoll fprintf bħal rajna fuq il-kwizz. 737 01:01:58,250 --> 01:02:01,680 Peress li din hija problema li tinvolvi qari mill-fajl, 738 01:02:01,680 --> 01:02:04,940 aħna qed tmur biex tuża wieħed minn dawn il-funzjonijiet 3. 739 01:02:04,940 --> 01:02:10,890 Aħna mhux ser tuża dawn il-funzjonijiet stabbiliti hawn. 740 01:02:10,890 --> 01:02:14,880 Dawn il-funzjonijiet huma kollha jinsabu fl-istandard I / O librerija. 741 01:02:14,880 --> 01:02:17,510 Mela jekk inti tħares lejn il-quċċata ta 'dan il-programm, 742 01:02:17,510 --> 01:02:24,110 tista 'tara li konna diġà inkluża l-fajl tal-header għall-istandard I / O librerija. 743 01:02:24,110 --> 01:02:27,120 Jekk irridu insemmu liema waħda rridu l-użu, 744 01:02:27,120 --> 01:02:29,690 nistgħu dejjem tiftaħ il-paġni bniedem. 745 01:02:29,690 --> 01:02:34,350 Allura nistgħu tip stdio bniedem 746 01:02:34,350 --> 01:02:43,180 u taqra kollha dwar il-kontribut stdio u l-funzjonijiet ta 'produzzjoni fil C. 747 01:02:43,180 --> 01:02:49,870 U nistgħu diġà ara oh, tfittex. Huwa isemmi fgetc, huwa jsemmi fputc. 748 01:02:49,870 --> 01:02:57,220 Allura inti tista 'drill stabbiliti ftit u ħarsa lejn, jiġifieri, fgetc 749 01:02:57,220 --> 01:03:00,060 u ħarsa lejn il-paġna bniedem tagħha. 750 01:03:00,060 --> 01:03:03,430 Tista 'tara li din tmur flimkien ma' mazz sħiħ ta 'funzjonijiet oħra: 751 01:03:03,430 --> 01:03:12,640 fgetc, fgets, getc, getchar, gets, ungetc, u l-input tagħha ta 'karattri u kordi. 752 01:03:12,640 --> 01:03:19,180 Allura dan huwa kif naqraw fl karattri u kordi mill-fajls mill input standard, 753 01:03:19,180 --> 01:03:21,990 li huwa essenzjalment mill-utent. 754 01:03:21,990 --> 01:03:24,780 U dan huwa kif nagħmlu dan b'mod C. attwali 755 01:03:24,780 --> 01:03:30,850 Allura dan mhux bl-użu GetString u l-funzjonijiet GetChar 756 01:03:30,850 --> 01:03:36,840 li aħna użati mill-bibljoteka CS50. 757 01:03:36,840 --> 01:03:39,710 Aħna qed tmur biex tagħmel din il-problema fi ftit ta 'modi 758 01:03:39,710 --> 01:03:43,430 sabiex inti tista 'tara żewġ modi differenti ta' kif isir dan. 759 01:03:43,430 --> 01:03:48,490 Kemm il-funzjoni fread li Daniel imsemmija u fgetc huma modi tajba biex jagħmlu dan. 760 01:03:48,490 --> 01:03:53,790 Naħseb fgetc huwa ftit aktar faċli, minħabba li għandha biss, kif tara, 761 01:03:53,790 --> 01:03:59,660 1 argument, il-* FILE li aħna qed jippruvaw biex taqra l-karattru minn, 762 01:03:59,660 --> 01:04:02,740 u l-valur tar-ritorn tiegħu huwa int. 763 01:04:02,740 --> 01:04:05,610 U dan huwa ftit konfuża, id-dritt? 764 01:04:05,610 --> 01:04:11,450 >> Għaliex aħna qed jkollna karattru, hekk għaliex ma dan ir-ritorn ta 'char? 765 01:04:11,450 --> 01:04:18,700 You guys xi ideat dwar l-għaliex dan jista 'ma jirritornaw char? 766 01:04:18,700 --> 01:04:25,510 [Tweġibiet Missy, mhux intelliġibbli] >> Yeah. Allura Missy totalment id-dritt. 767 01:04:25,510 --> 01:04:31,570 Jekk huwa ASCII, allura dan integer jistgħu jiġu identifikati ma 'char attwali. 768 01:04:31,570 --> 01:04:33,520 Jista 'jkun karattru ASCII, u li d-dritt. 769 01:04:33,520 --> 01:04:36,220 Dan huwa eżattament dak li qed jiġri. 770 01:04:36,220 --> 01:04:39,190 Aħna qed jużaw int sempliċement minħabba li jkun bits aktar. 771 01:04:39,190 --> 01:04:44,750 Huwa akbar minn char; char tagħna biss għandha 8 bits, li 1 byte fuq 32-bit magni tagħna. 772 01:04:44,750 --> 01:04:48,520 U l-int tkun worth kollha bytes 4 "ta 'spazju. 773 01:04:48,520 --> 01:04:50,940 U jirriżulta li l-mod fgetc xogħlijiet, 774 01:04:50,940 --> 01:04:53,940 jekk aħna iscroll fil sinopsi tagħna f'din il-paġna bniedem ftit, 775 01:04:53,940 --> 01:05:05,000 iscroll-triq kollha stabbiliti. Jirriżulta li jużaw dan il-valur speċjali msejħa EOF. 776 01:05:05,000 --> 01:05:09,640 Huwa kostanti speċjali bħala l-valur tar-ritorn tal-funzjoni fgetc 777 01:05:09,640 --> 01:05:14,570 kull meta inti hit-aħħar tal-fajl jew jekk ikollok żball. 778 01:05:14,570 --> 01:05:18,170 U jirriżulta li tagħmel dawn il-paraguni ma 'EOF kif suppost, 779 01:05:18,170 --> 01:05:24,060 inti tixtieq li jkollok dak l-ammont żejjed ta 'informazzjoni li għandek fil-int 780 01:05:24,060 --> 01:05:28,420 kontradistint mill-użu ta 'varjabbli char. 781 01:05:28,420 --> 01:05:32,130 Anki jekk fgetc jkun effettivament jkollna karattru minn fajl, 782 01:05:32,130 --> 01:05:38,450 inti tixtieq li tiftakar li huwa jirritorna xi ħaġa li ta 'int tip għalik. 783 01:05:38,450 --> 01:05:41,360 Cela dit, huwa pjuttost faċli biex jintuża. 784 01:05:41,360 --> 01:05:44,960 Huwa ser tagħtina karattru; hekk kollha għandna tagħmel hu li jżomm fejn tistaqsi l-fajl, 785 01:05:44,960 --> 01:05:48,440 "Agħti me-karattru li jmiss, agħti lili il-karattru li jmiss, agħti lili il-karattru li jmiss," 786 01:05:48,440 --> 01:05:51,400 sakemm aħna nikseb l-aħħar tal-fajl. 787 01:05:51,400 --> 01:05:54,730 U li se pull karattru wieħed fi żmien mill-fajl tagħna, 788 01:05:54,730 --> 01:05:56,250 u allura nistgħu nagħmlu xi aħna nixtiequ magħha. 789 01:05:56,250 --> 01:06:00,160 Nistgħu jaħżnuh, nistgħu iżżidhiex mal string, nistgħu ipprintjaha. 790 01:06:00,160 --> 01:06:04,630 Do kwalunkwe ta 'dak. 791 01:06:04,630 --> 01:06:09,600 >> Zooming lura out u jmorru lura għall-programm cat.c tagħna, 792 01:06:09,600 --> 01:06:16,170 jekk aħna qed tmur għall-użu fgetc, 793 01:06:16,170 --> 01:06:21,710 kif jista qegħdin noqorbu din il-linja li jmiss tal-kodiċi? 794 01:06:21,710 --> 01:06:26,020 Aħna ser tużah - fread se jagħmlu xi ħaġa kemmxejn differenti. 795 01:06:26,020 --> 01:06:32,600 U din id-darba, aħna qed biss ser tuża fgetc biex tikseb karattru wieħed fi żmien. 796 01:06:32,600 --> 01:06:40,910 Biex il-proċess ta 'fajl sħiħ, dak li jista għandna nagħmlu? 797 01:06:40,910 --> 01:06:44,030 Kemm karattri hemm fil-fajl? 798 01:06:44,030 --> 01:06:47,390 Hemm ħafna. Allura inti probabilment tixtieq li tikseb wieħed 799 01:06:47,390 --> 01:06:49,860 u mbagħad jiksbu ieħor u jiksbu ieħor u jiksbu ieħor. 800 01:06:49,860 --> 01:06:53,330 X'tip ta 'algoritmu taħseb aħna jista' jkollha tuża hawn? 801 01:06:53,330 --> 01:06:55,470 Liema tip ta '-? [Alexander] A għal loop? >> Eżattament. 802 01:06:55,470 --> 01:06:57,500 Xi tip ta 'linja. 803 01:06:57,500 --> 01:07:03,380 A għall-linja huwa attwalment kbir, f'dan il-każ. 804 01:07:03,380 --> 01:07:08,620 U bħalek kienu jgħidu, ħsejjes bħal inti tixtieq ċirku fuq il-fajl kollu, 805 01:07:08,620 --> 01:07:11,820 jkollna karattru fi żmien. 806 01:07:11,820 --> 01:07:13,850 Xi suġġerimenti dwar dak li jista 'look like? 807 01:07:13,850 --> 01:07:22,090 [Alexander, mhux intelliġibbli] 808 01:07:22,090 --> 01:07:30,050 >> Okay, just tell me bl-Ingliż dak li qed tipprova tagħmel? [Alexander, mhux intelliġibbli] 809 01:07:30,050 --> 01:07:36,270 Allura f'dan il-każ, li ħsejjes simili aħna qed biss tipprova loop fuq il-fajl kollu. 810 01:07:36,270 --> 01:07:45,330 [Alexander] Hekk i > Id-daqs tal -? 811 01:07:45,330 --> 01:07:49,290 I raden-daqs tal-fajl, id-dritt? Id-daqs - we'll biss jiktbu dan bħal dan. 812 01:07:49,290 --> 01:07:57,470 Daqs tal-fajl għalissa, i + +. 813 01:07:57,470 --> 01:08:04,610 Għalhekk jirriżulta li l-mod inti tagħmel dan permezz fgetc, u dan huwa ġdid, 814 01:08:04,610 --> 01:08:10,460 hija li hemm ebda mod faċli biex tikseb biss id-daqs ta 'fajl 815 01:08:10,460 --> 01:08:16,979 ma 'dan "sizeof" tip ta' bini li inti stajt tidher qabel. 816 01:08:16,979 --> 01:08:20,910 Meta nużaw dik il-funzjoni fgetc, aħna qed jintroduċu xi tip ta ' 817 01:08:20,910 --> 01:08:29,069 ġdid, sintassi funky għal dan għal loop, fejn minflok li jużaw biss counter bażiku 818 01:08:29,069 --> 01:08:33,920 li jmorru karattru minn karattru, aħna qed tmur biex jiġbdu karattru wieħed fi żmien, 819 01:08:33,920 --> 01:08:37,120 karattru wieħed fi żmien, u l-mod nafu aħna fl-aħħar 820 01:08:37,120 --> 01:08:41,290 mhux meta konna magħduda ċertu numru ta 'karattri, 821 01:08:41,290 --> 01:08:49,939 iżda meta l-karattru aħna iġbed huwa dak il-għan speċjali ta 'karattru fajl. 822 01:08:49,939 --> 01:08:58,689 Allura nistgħu nagħmlu dan billi - I call dan ch, u aħna qed tmur biex initialize din 823 01:08:58,689 --> 01:09:08,050 bl-ewwel sejħa tagħna sabiex inġibu l-ewwel karattru mill-fajl. 824 01:09:08,050 --> 01:09:14,979 Allura din il-parti dritt hawn, dan se tikseb karattru mill-fajl 825 01:09:14,979 --> 01:09:20,840 u jaħżnu fil-ch varjabbli. 826 01:09:20,840 --> 01:09:25,420 Aħna ser iżommu tagħmel dan sakemm irridu jiksbu l-aħħar tal-fajl, 827 01:09:25,420 --> 01:09:41,170 li nagħmlu mill-ittestjar għall-karattru li ma jkunux ugwali għal dan il-karattru EOF speċjali. 828 01:09:41,170 --> 01:09:48,750 U allura minflok tagħmel ch + +, li kien biss inkrement il-valur, 829 01:09:48,750 --> 01:09:52,710 hekk jekk irridu jaqra out tal-fajl, kapital A, ngħidu aħna, 830 01:09:52,710 --> 01:09:56,810 ch + + tagħtina b, u allura aħna d jiksbu ċ u mbagħad d. 831 01:09:56,810 --> 01:09:59,310 Li b'mod ċar mhux dak li rridu. Dak li rridu hawn 832 01:09:59,310 --> 01:10:05,830 f'dan bit-aħħar huwa irridu jiksbu l-karattru li jmiss mill-fajl. 833 01:10:05,830 --> 01:10:09,500 >> Allura kif tista irridu jiksbu l-karattru li jmiss mill-fajl? 834 01:10:09,500 --> 01:10:13,470 Kif se nilħqu dawn l-ewwel karattru mill-fajl? 835 01:10:13,470 --> 01:10:17,200 [Student] fgetfile? >> Fgetc, jew, sorry, inti kienu totalment id-dritt. 836 01:10:17,200 --> 01:10:20,470 I misspelled dan id-dritt hemmhekk. So yeah. 837 01:10:20,470 --> 01:10:26,240 Hawnhekk minflok tagħmel ch + +, 838 01:10:26,240 --> 01:10:29,560 aħna qed biss ser sejħa fgetc (fajl) darb'oħra 839 01:10:29,560 --> 01:10:39,180 u jaħżnu r-riżultat fil-varjabbli tagħna ch istess. 840 01:10:39,180 --> 01:10:43,730 [Kwistjoni Student, mhux intelliġibbli] 841 01:10:43,730 --> 01:10:52,390 >> Dan huwa fejn dawn guys * FAJL huma speċjali. 842 01:10:52,390 --> 01:10:59,070 Il-mod kif jaħdmu huwa li - meta inti l-ewwel tiftaħ - meta inti l-ewwel tagħmel dik is-sejħa fopen, 843 01:10:59,070 --> 01:11:04,260 l * FILE effettivament iservi bħala indikatur għall-bidu tal-fajl. 844 01:11:04,260 --> 01:11:12,830 U allura kull darba li inti sejħa fgetc, li jiċċaqlaq karattru wieħed permezz tal-fajl. 845 01:11:12,830 --> 01:11:23,280 Allura meta inti sejħa dan, int inkrementazzjoni l-pointer fajl minn karattru. 846 01:11:23,280 --> 01:11:26,210 U meta inti fgetc darb'oħra, int jmexxuh karattru ieħor 847 01:11:26,210 --> 01:11:28,910 u ieħor karattru u ieħor karattru u ieħor karattru. 848 01:11:28,910 --> 01:11:32,030 [Kwistjoni Student, mhux intelliġibbli] >> U that's - yeah. 849 01:11:32,030 --> 01:11:34,810 Huwa tip ta 'dan magic taħt il-barnuża. 850 01:11:34,810 --> 01:11:37,930 Inti biss iżommu inkrementazzjoni permezz. 851 01:11:37,930 --> 01:11:46,510 Fuq dan il-punt, int kapaċi attwalment jaħdmu bil-karattru. 852 01:11:46,510 --> 01:11:52,150 Allura kif tista aħna Stampa din lill-iskrin, issa? 853 01:11:52,150 --> 01:11:58,340 Nistgħu nużaw il-ħaġa printf istess li aħna użati qabel. 854 01:11:58,340 --> 01:12:00,330 Li aħna kont qed tuża l semestru. 855 01:12:00,330 --> 01:12:05,450 Nistgħu sejħa printf, 856 01:12:05,450 --> 01:12:21,300 u nistgħu jgħaddu fil-karattru biss bħal dik. 857 01:12:21,300 --> 01:12:27,430 Mod ieħor biex tagħmel dan huwa aktar milli jużaw printf u li jiġri dan string format, 858 01:12:27,430 --> 01:12:29,490 nistgħu wkoll jużaw waħda mill-funzjonijiet l-oħra. 859 01:12:29,490 --> 01:12:40,090 Nistgħu nużaw fputc, li tistampa karattru għall-iskrin, 860 01:12:40,090 --> 01:12:52,580 ħlief jekk inħarsu lejn fputc - let me zoom out ftit. 861 01:12:52,580 --> 01:12:56,430 Naraw liema sabiħ huwa jieħu fil-karattru li naqraw bl-użu fgetc, 862 01:12:56,430 --> 01:13:05,100 iżda mbagħad aħna għandna biex jagħtuh nixxiegħa għall-istampar għall. 863 01:13:05,100 --> 01:13:11,850 Aħna jista 'wkoll tuża l-funzjoni putchar, li se jpoġġi direttament lill out standard. 864 01:13:11,850 --> 01:13:16,070 Allura hemm mazz sħiħ ta 'għażliet differenti li nistgħu nużaw għall-istampar. 865 01:13:16,070 --> 01:13:19,580 Huma qed kollha fl-istandard I / O librerija. 866 01:13:19,580 --> 01:13:25,150 Kull meta inti tixtieq li jistampaw - hekk printf, awtomatikament, se print għall-istandard speċjali barra nixxiegħa, 867 01:13:25,150 --> 01:13:27,910 li huwa li stdout. 868 01:13:27,910 --> 01:13:41,300 Allura nistgħu biss jirreferu għaliha bħala tip ta 'dan il-valur magic, stdout fil hawn. 869 01:13:41,300 --> 01:13:48,410 Oops. Poġġi l-virgola barra. 870 01:13:48,410 --> 01:13:52,790 >> Dan huwa ħafna ta 'informazzjoni ġdida funky fil hawn. 871 01:13:52,790 --> 01:13:58,600 A lott ta 'dan huwa ħafna idjomatiku, fis-sens li dan huwa il-kodiċi 872 01:13:58,600 --> 01:14:05,700 li huwa miktub b'dan il-mod biss għaliex dan huwa nadif biex jinqraw, faċli biex jinqara. 873 01:14:05,700 --> 01:14:11,520 Hemm ħafna modi differenti biex tagħmel dan, il-funzjonijiet differenti ħafna tista 'tuża, 874 01:14:11,520 --> 01:14:14,680 imma għandna t-tendenza li kemm issegwi dawn it-tendenzi istess tul u aktar. 875 01:14:14,680 --> 01:14:20,180 Allura ma jkun sorpriż jekk tara kodiċi bħal dan ġejjin up u għal darb'oħra. 876 01:14:20,180 --> 01:14:25,690 Kull dritt. Fuq dan il-punt, għandna bżonn li jinkiser għall-jum. 877 01:14:25,690 --> 01:14:31,300 Grazzi għall ġejjin. Grazzi għall-ħars jekk int online. U aħna ser tara inti ġimgħa d-dieħla. 878 01:14:31,300 --> 01:14:33,890 [CS50.TV]