1 00:00:00,000 --> 00:00:02,730 [Powered by Google Translate] [பகுதி 5: குறைந்த வசதியாக] 2 00:00:02,730 --> 00:00:05,180 [நேட் Hardison, ஹார்வர்ட் பல்கலைக்கழகம்] 3 00:00:05,180 --> 00:00:08,260 [இந்த CS50 உள்ளது.] [CS50.TV] 4 00:00:08,260 --> 00:00:11,690 எனவே நண்பர்களே, மீண்டும் வரவேற்க. 5 00:00:11,690 --> 00:00:16,320 பகுதி 5 வரவேற்கிறது. 6 00:00:16,320 --> 00:00:20,220 இந்த கட்டத்தில், வினாடி வினா 0 முடித்தவர்களுக்கு மற்றும் நீ செய்தது எப்படி பார்த்து கொண்டு, 7 00:00:20,220 --> 00:00:25,770 நான் மிகவும் இந்த பகுதியில் மதிப்பெண்களை தாக்கம் காரணமாக வட்டம் நீங்கள் உண்மையில் நன்றாக. 8 00:00:25,770 --> 00:00:28,050 எங்கள் ஆன்லைன் பார்வையாளர்கள், நாம் கேள்விகள் ஒரு ஜோடி இருந்தது 9 00:00:28,050 --> 00:00:33,680 பிரச்சனை செட் கடந்த இரண்டு பிரச்சினைகள் பற்றி - அல்லது வினாடி வினா மீது, மாறாக. 10 00:00:33,680 --> 00:00:39,690 எனவே நாம் எல்லோரும் என்ன நடந்தது பார்க்கும் அளவுக்கு மிகவும் விரைவாக அந்த வழியாக செல்ல போகிறோம் 11 00:00:39,690 --> 00:00:45,060 மற்றும் பதிலாக தான் தீர்வு தன்னை பார்க்க விட உண்மையான தீர்வு செல்ல எப்படி. 12 00:00:45,060 --> 00:00:50,330 நாங்கள், உண்மையில் விரைவாக பிரச்சினைகளை கடந்த சில மேல் செல்ல 32 மற்றும் 33 போகிறோம். 13 00:00:50,330 --> 00:00:53,240 இப்போது, மீண்டும், அதனால் ஆன்லைன் பார்வையாளர்கள் இந்த பார்க்கலாம். 14 00:00:53,240 --> 00:00:59,080 >> நீங்கள் பக்கம் 13 அது உங்கள் பிரச்சினை 32, திரும்ப வேண்டும் 15 00:00:59,080 --> 00:01:02,730 16 13, பிரச்சனை 32 அனைத்து பரிமாற்றங்கள் பற்றி. 16 00:01:02,730 --> 00:01:05,010 இது இரண்டு முழு மாற்றம் பற்றி அனைத்து இருந்தது. 17 00:01:05,010 --> 00:01:08,740 அதை நாம் விரிவுரையில் இரண்டு முறை மீது போயிருந்தேன் அது தான் பிரச்சனை. 18 00:01:08,740 --> 00:01:13,590 இங்கு, நாம் என்ன செய்ய கேட்டு ஒரு விரைவு நினைவகம் சுவடு உள்ளது. 19 00:01:13,590 --> 00:01:17,000 அவர்கள் ஸ்டாக் இருக்கும், மாறிகளின் மதிப்புகளை நிரப்பவும் 20 00:01:17,000 --> 00:01:20,250 குறியீடு இந்த இடமாற்று செயல்பாடு மூலம் செல்லும் என. 21 00:01:20,250 --> 00:01:24,500 குறிப்பாக, நாம் பார்த்து வருகிறோம் - I'm இந்த ஐபாட் கீழே போடமாட்டேன் - 22 00:01:24,500 --> 00:01:29,650 குறிப்பாக, நாம் பார்த்து வருகிறோம் இந்த வரி இங்கே 6 சரியான எண் தான். 23 00:01:29,650 --> 00:01:36,740 இது முந்தைய பிரச்சினை தான் அருகில் இருத்தல் 6 எண். 24 00:01:36,740 --> 00:01:41,720 நாம் என்ன செய்ய வேண்டும் நினைவக நிலை காண்பிக்க அல்லது லேபிள் 25 00:01:41,720 --> 00:01:46,090 அதை நாம் இந்த வரி எண் 6 இயக்க நேரத்தில் உள்ளது, என்று 26 00:01:46,090 --> 00:01:52,540 இது திறமையுடன் இங்கே நம் இடமாற்று செயல்பாடு இருந்து திரும்ப உள்ளது. 27 00:01:52,540 --> 00:01:59,450 நாம் இங்கே கீழே இருந்தால், நாம் நினைவகத்தில் எல்லாம் முகவரிகள் நமக்கு வழங்கப்படும் என்று பார்த்தேன். 28 00:01:59,450 --> 00:02:02,540 இந்த மிக முக்கியமான, நாங்கள் ஒரு நொடியில் அது திரும்பி விடுவேன். 29 00:02:02,540 --> 00:02:09,240 பின்னர் கீழே இங்கே கீழே, நாம் குறிப்பிட போகிறோம் என்று ஒரு சிறிய நினைவகம் வரைபடம் இருந்தது. 30 00:02:09,240 --> 00:02:12,490 நான் உண்மையில் என் ஐபாட் இந்த அவுட் செய்யவில்லை. 31 00:02:12,490 --> 00:02:20,720 அதனால் நான் குறிப்பிற்கு ஐபாட் மற்றும் இந்த குறியீடு இடையே முன்னும் பின்னுமாக நாள் மாற்றி போகிறேன். 32 00:02:20,720 --> 00:02:26,540 >> ஆரம்பிப்போம். முதல், வலது இங்கே முக்கிய வரிகளை முதல் இரண்டு கவனம் செலுத்த வேண்டும். 33 00:02:26,540 --> 00:02:30,220 துவக்க, நாம் 2 1 மற்றும் y செய்ய x துவக்க போகிறோம். 34 00:02:30,220 --> 00:02:33,040 நாம் இரண்டு முழு மாறிகள் இருக்கிறது, அவர்கள் ஸ்டாக் வைக்க போகிறோம் இரு. 35 00:02:33,040 --> 00:02:36,050 நாம் ஒரு 1 மற்றும் 2 வைக்க போகிறோம். 36 00:02:36,050 --> 00:02:43,150 நான் என் ஐபாட் மீது கவிழ்த்து என்றால், வட்டம், நாம் பார்ப்போம் - 37 00:02:43,150 --> 00:02:48,660 ஆப்பிள் டிவி பிரதிபலிப்புக்கு, மற்றும் அங்கு நாம். சரி. 38 00:02:48,660 --> 00:02:51,670 நான் என் ஐபாட் மீது கவிழ்த்து இருந்தால், 39 00:02:51,670 --> 00:02:56,220 நான் 2 1 மற்றும் y செய்ய x துவக்க வேண்டும். 40 00:02:56,220 --> 00:03:00,580 நாம் x குறித்தது பெட்டியில் ஒரு 1 எழுதுவதன் மூலம் மிக எளிதாக செய்ய 41 00:03:00,580 --> 00:03:07,730 மேலும் பெட்டியில் ஒரு 2 y குறித்தது. மிகவும் எளிமையான. 42 00:03:07,730 --> 00:03:11,620 எனவே இப்போது மடிக்கணினி திரும்பி செல்லலாம், அடுத்த என்ன நடக்கிறது என்று பார்க்கலாம். 43 00:03:11,620 --> 00:03:15,810 விஷயங்களை தந்திரமான இங்கு இந்த அடுத்த வரிசை தான். 44 00:03:15,810 --> 00:03:28,110 நாம் அளவுருக்கள் x முகவரி மற்றும் y முகவரி கடந்து இடமாற்று செயல்பாடு ஒரு மற்றும் ப. 45 00:03:28,110 --> 00:03:32,380 x மற்றும் y முகவரி முகவரி நாம் கணக்கிட முடியாது என்று விஷயங்கள் 46 00:03:32,380 --> 00:03:36,360 இந்த புல்லட் குறிப்பிட்டு இல்லாமல் இங்கே சரியான கீழே சுட்டிக்காட்டியுள்ளது. 47 00:03:36,360 --> 00:03:39,750 மற்றும் அதிர்ஷ்டவசமாக, முதல் இரண்டு புல்லட் புள்ளிகள் பதில்கள் உள்ளன சரியாக என்ன சொல்ல. 48 00:03:39,750 --> 00:03:44,740 நினைவகத்தில் x முகவரி 10, மற்றும் நினைவகத்தில் y முகவரி 14. 49 00:03:44,740 --> 00:03:51,870 எனவே அந்த என நிறைவேறுவது என்று மதிப்புகள் ஒரு நமது இடமாற்று விழாவில் வரை மேல் ப. 50 00:03:51,870 --> 00:04:00,760 எனவே மீண்டும், எங்கள் வரைபடம் மீண்டும் மாறுவதற்கு, நான் ஒரு ஒரு 10 எழுதலாம் 51 00:04:00,760 --> 00:04:07,400 ப மற்றும் ஒரு 14. 52 00:04:07,400 --> 00:04:11,610 நாம் இடமாற்று தொடர அங்கு இப்போது, இந்த புள்ளி ஆகும். 53 00:04:11,610 --> 00:04:14,520 எனவே, மீண்டும் மடிக்கணினி மீண்டும் புரட்டுகிறது 54 00:04:14,520 --> 00:04:21,079 நாம் இடமாற்று வேலை வழி tmp ஒரு மற்றும் கடை விளைவாக நான் முதல் dereference என்று பார்க்க. 55 00:04:21,079 --> 00:04:27,650 எனவே dereference ஆபரேட்டர் ஏ ", என்கிறார். ஒரு முகவரி மாறி ஒரு உள்ளடக்கங்களை டிரீட். 56 00:04:27,650 --> 00:04:33,830 அந்த முகவரியில் சேமிக்கப்படும் என்ன சென்று, அதை ஏற்ற. " 57 00:04:33,830 --> 00:04:41,720 என்ன மாறி வெளியே ஏற்ற எங்கள் tmp மாறி சென்று சேமித்து வைக்க போவதில்லை. 58 00:04:41,720 --> 00:04:45,150 ஐபாட் மீண்டும் புரட்டுகிறது. 59 00:04:45,150 --> 00:04:51,690 நாங்கள் 10 உரையாற்ற சென்றால், நாங்கள் முகவரி 10 varible x என்று 60 00:04:51,690 --> 00:04:55,480 நாம் நினைவில் x முகவரி 10 என்று எங்கள் புல்லட் பாயிண்ட் மூலம் கூறினார் ஏனெனில். 61 00:04:55,480 --> 00:05:00,180 எனவே, நாங்கள் எங்கள் iPad இல் பார்க்க போல், அங்கு சென்று 1 இது தான் மதிப்பு, பெற முடியும் 62 00:05:00,180 --> 00:05:06,300 அந்த tmp இந்த ஏற்ற. 63 00:05:06,300 --> 00:05:08,250 மீண்டும், இந்த இறுதி உள்ளடக்கங்களை அல்ல. 64 00:05:08,250 --> 00:05:14,350 நாம் நடக்க போவதை நாம் இறுதியில் திட்டம் நம் இறுதி மாநில கிடைக்கும். 65 00:05:14,350 --> 00:05:17,210 ஆனால் இப்போது, நாம் tmp சேமிக்கப்படும் மதிப்பு 1 வேண்டும். 66 00:05:17,210 --> 00:05:19,210 >> மற்றும் இங்கு ஒரு விரைவு கேள்வி இருக்கிறது. 67 00:05:19,210 --> 00:05:23,980 [அலெக்சாண்டர்] dereference ஆபரேட்டர் இல்லை - என்று மட்டும் மாறி முன் நட்சத்திர சரி? 68 00:05:23,980 --> 00:05:27,600 >> ஆமாம். நாங்கள் மீண்டும் எங்கள் மடிக்கணினி மீண்டும் கவிழ்த்து என, dereference ஆபரேட்டர் எனவே 69 00:05:27,600 --> 00:05:33,780 வலது முன் இந்த நட்சத்திரம். 70 00:05:33,780 --> 00:05:37,460 என்ற அர்த்தத்தில், அது - நீங்கள் பெருக்கல் ஆபரேட்டர் அதை மாறாக 71 00:05:37,460 --> 00:05:42,400 இதில் இரண்டு விஷயங்கள் தேவை; dereference ஆபரேட்டர் ஒரு ஒரும ஆபரேட்டர் உள்ளது. 72 00:05:42,400 --> 00:05:46,130 ஒரு பைனரி ஆபரேட்டர் பதிலாக ஒரு மதிப்பு பயன்படுத்தப்படும், 73 00:05:46,130 --> 00:05:48,810 நீங்கள் இரண்டு வெவ்வேறு மதிப்புகள் விண்ணப்பிக்க வேண்டும். 74 00:05:48,810 --> 00:05:52,080 அதனால் இந்த வரிசையில் நடக்கும். 75 00:05:52,080 --> 00:05:58,390 நாம் மதிப்பு 1 ஏற்ற எங்கள் தற்காலிக முழு எண் மாறி அதை சேமித்து. 76 00:05:58,390 --> 00:06:05,800 அடுத்த வரியில், நாங்கள் ஒரு ப உள்ளடக்கங்களை சேமிக்க - 77 00:06:05,800 --> 00:06:12,630 அல்லது, மாறாக, நாம் ப ஒரு சுட்டி காட்டியது அமைந்துள்ள இடத்தில் சுட்டி காட்டியது என்று உள்ளடக்கத்தை சேமிக்க. 78 00:06:12,630 --> 00:06:17,690 நாம் இடது வலது இந்த ஆய்வு என்றால், நாங்கள், dereference ப போகிறீர்கள் 79 00:06:17,690 --> 00:06:23,580 நாங்கள் 14 உரையாற்ற போகிறோம், நாம், இல்லை என்று முழு கைப்பற்ற போகிறோம் 80 00:06:23,580 --> 00:06:26,900 பின்னர் நாம், முகவரி 10 செல்கிறோம் 81 00:06:26,900 --> 00:06:34,240 நாம் அந்த இடத்தில் ப எங்கள் dereference விளைவாக தூக்கி செல்கிறார்கள். 82 00:06:34,240 --> 00:06:40,080 நாம் இந்த ஒரு சிறிய இன்னும் உறுதியான செய்ய முடியும் நம் ஐபாட், மீண்டும் புரட்டுகிறது, 83 00:06:40,080 --> 00:06:44,070 நான் இங்கே முகவரிகள் அனைத்து எண்கள் எழுத அது உதவலாம். 84 00:06:44,070 --> 00:06:53,820 எனவே y நேரத்தில், நாம் முகவரியை 14 என்று, x முகவரி 10 உள்ளது. 85 00:06:53,820 --> 00:07:00,180 நாம் ப மணிக்கு தொடங்கும் போது, நாம் dereference ப, நாம் மதிப்பு 2 கைப்பற்ற போகிறோம். 86 00:07:00,180 --> 00:07:08,320 நாங்கள் அந்த முகவரிக்கு 14 வாழ்கிறார் என்று மதிப்பு ஏனெனில் இந்த மதிப்பு கைப்பற்ற போகிறோம். 87 00:07:08,320 --> 00:07:15,700 நாம், முகவரி 10 வாழ்கிறார் என்று மாறி அதை வைத்து போகிறாய் 88 00:07:15,700 --> 00:07:19,160 இது எங்கள் மாறி x தொடர்பான, சரியான உள்ளது. 89 00:07:19,160 --> 00:07:21,810 நாம் இங்கே மேற்சேர்க்கை சிறிது செய்ய முடியும் 90 00:07:21,810 --> 00:07:35,380 நாம் 1 விடுவித்தாக மற்றும் பதிலாக நாம் ஒரு 2 எழுத வேண்டும். 91 00:07:35,380 --> 00:07:39,560 எனவே நாம் இப்போது மறைந்து x நான் கூட, நன்கு மற்றும் உலகின் நல்லது. 92 00:07:39,560 --> 00:07:44,890 நாம் tmp மாறி x பழைய மதிப்பு சேமிக்கப்படும். 93 00:07:44,890 --> 00:07:50,210 எனவே அடுத்த வரி இடமாற்று முடிக்க முடியும். 94 00:07:50,210 --> 00:07:53,030 எங்கள் மடிக்கணினி மீண்டும் புரட்டுகிறது. 95 00:07:53,030 --> 00:07:58,150 இப்போது அந்த எஞ்சியுள்ள எமது தற்காலிக முழு எண் மாறி உள்ளடக்கங்களை எடுத்து உள்ளது 96 00:07:58,150 --> 00:08:05,630 மற்றும் கேட்ச் பிடித்து என்று முகவரியில் வசித்து என்று மாறி அவற்றை சேமிக்க. 97 00:08:05,630 --> 00:08:10,230 எனவே நாம் மாறி அணுகலை பெற திறம்பட dereference ப போகிறாய் 98 00:08:10,230 --> 00:08:14,340 என்று, ப அதை வைத்திருக்கும் முகவரி உள்ளது 99 00:08:14,340 --> 00:08:19,190 நாம் tmp அதை வைத்திருக்கும் மதிப்பு விஷயங்களுடன் போகிறோம். 100 00:08:19,190 --> 00:08:23,280 மீண்டும் ஐபாட் மீண்டும் புரட்டுகிறது. 101 00:08:23,280 --> 00:08:31,290 நான், இங்கே 2 இந்த மதிப்பு அழிக்க முடியும் 102 00:08:31,290 --> 00:08:41,010 அதற்கு பதிலாக நாம் அது தொடர்பாக 1 உரிமை நகலெடுக்க வேண்டும். 103 00:08:41,010 --> 00:08:43,059 பிறகு நிச்சயமாக இயக்கும் அடுத்த வரியில், - 104 00:08:43,059 --> 00:08:47,150 நாம் லேப்டாப் மீண்டும் கவிழ்த்து என்றால் - இந்த புள்ளி 6 105 00:08:47,150 --> 00:08:52,500 நாம் வரைபடம் முற்றிலும் பூர்த்தி செய்யவேண்டும் என விரும்பினேன், அந்த சமயத்தில் அது. 106 00:08:52,500 --> 00:08:58,940 எனவே ஐபாட் மீண்டும் குலுக்கல் முறை, இப்போது நீ, நிறைவு வரைபடம் பார்க்க முடியும் 107 00:08:58,940 --> 00:09:06,610 நாம் x ஒரு 10, ப 14, tmp ஒரு 1, 2, மற்றும் y ஒரு 1 வேண்டும் என்று பார்க்கலாம். 108 00:09:06,610 --> 00:09:11,000 இதை பற்றி எந்த கேள்விகள் உள்ளன? 109 00:09:11,000 --> 00:09:14,640 இது வழியாக நடந்து கொண்டு, இன்னும் உணர்வை ஏற்படுத்தும்? 110 00:09:14,640 --> 00:09:24,850 குறைந்த பயன்? வட்டம் இல்லை. சரி. 111 00:09:24,850 --> 00:09:28,230 >> சுட்டிகள் மிகவும் தந்திரமான உட்பட்டவை. 112 00:09:28,230 --> 00:09:33,420 நாம் வேலை நண்பர்களே ஒரு மிக பொதுவான கூற்று உண்டு: 113 00:09:33,420 --> 00:09:36,590 "சுட்டிகள் புரிந்து கொள்ள, நீங்கள் முதல் சுட்டிகள் புரிந்து கொள்ள வேண்டும்." 114 00:09:36,590 --> 00:09:40,530 இதில் நான் மிகவும் உண்மை என்று. அதை பயன்படுத்தி கொள்ள ஒரு எடுத்து இல்லை. 115 00:09:40,530 --> 00:09:45,360 , மிகவும் பயனுள்ளதாக இருக்கும், படங்கள் நிறைய வரைய இது போன்ற நினைவக வரைபடங்களை நிறைய வரைய 116 00:09:45,360 --> 00:09:49,480 நீங்கள் எடுத்துக்காட்டாக பிறகு எடுத்துக்காட்டாக பின்னர் உதாரணம் மூலம் நடக்க பிறகு, 117 00:09:49,480 --> 00:09:54,450 அது இன்னும் சிறிது உணர்வு மற்றும் இன்னும் கொஞ்சம் உணர்வு மற்றும் இன்னும் கொஞ்சம் உணர்வு செய்ய தொடங்க வேண்டும். 118 00:09:54,450 --> 00:10:01,560 இறுதியாக, ஒரு நாள், நீங்கள் எல்லாம் முற்றிலும் நிபுணத்துவம் வேண்டும். 119 00:10:01,560 --> 00:10:13,800 நாம் அடுத்த பிரச்சனை செல்ல? எந்த கேள்விகளை முன் எல்லாம் சரி. 120 00:10:13,800 --> 00:10:18,840 எனவே மடிக்கணினி மீண்டும் புரட்ட. 121 00:10:18,840 --> 00:10:23,300 நாம் அடுத்த பிரச்சனை சிக்கல் எண் 33 கோப்பு உள்ளது I / O 122 00:10:23,300 --> 00:10:26,350 இந்த சிறிது மீது பெரிதாக்கவும். 123 00:10:26,350 --> 00:10:28,710 பிரச்சனை 33 - ஆம்? 124 00:10:28,710 --> 00:10:32,110 >> [டேனியல்] நான் ஒரு விரைவு கேள்வி இருந்தது. இந்த நட்சத்திரம், அல்லது நட்சத்திர, 125 00:10:32,110 --> 00:10:35,590 நீங்கள் முன்பு ஒரு நட்சத்திர பயன்படுத்த போது dereferencing என்று. 126 00:10:35,590 --> 00:10:38,820 நீங்கள் முன் ampersand பயன்படுத்த போது அதற்கு பெயரென்ன என்று? 127 00:10:38,820 --> 00:10:43,140 >> Ampersand முன் முகவரியை-ன் ஆபரேட்டர் உள்ளது. 128 00:10:43,140 --> 00:10:45,880 எனவே வரை மீண்டும் உருட்டும் நாம். 129 00:10:45,880 --> 00:10:49,310 Oops. நான் என்னால் உண்மையிலேயே சுருள் இல்லை ஜூம் முறையில் நான். 130 00:10:49,310 --> 00:10:52,780 நாங்கள் இங்கே உண்மையில் விரைவில் இந்த குறியீடு பார்த்தால், 131 00:10:52,780 --> 00:10:54,980 மீண்டும், அதே நடக்கிறது. 132 00:10:54,980 --> 00:10:59,180 நாம் இங்கேயே இந்த குறியீடு பார்த்தால், இந்த வரிசையில் நாம் அழைப்பு, இடமாற்றம் செய்ய அங்கு 133 00:10:59,180 --> 00:11:10,460 ampersand தான் "முகவரி இது மாறி x வாழ்க்கை கிடைக்கும்." என்று 134 00:11:10,460 --> 00:11:14,460 உங்கள் தொகுப்பி உங்கள் குறியீடு தொகுக்கும் போது, 135 00:11:14,460 --> 00:11:20,590 அது உண்மையில் உடல் வாழ உங்கள் மாறிகள் அனைத்து நினைவகம் ஒரு இடத்தில் அவுட் குறிக்க வேண்டும். 136 00:11:20,590 --> 00:11:24,910 அதை எல்லாம் தொகுக்கப்பட்ட முறை மற்றும் தொகுப்பி பிறகு, என்ன செய்ய முடியும் 137 00:11:24,910 --> 00:11:31,110 அது "ஓ, நான் முகவரி 10 x வைத்து. நான் முகவரி 14 y வைத்து.", என்று 138 00:11:31,110 --> 00:11:34,640 அது நீங்கள் இந்த மதிப்புகள் பூர்த்தி செய்யலாம். 139 00:11:34,640 --> 00:11:44,740 உனக்கு - அது போல் மற்றும் பாஸ் & y இந்த கடத்தலாம். 140 00:11:44,740 --> 00:11:50,730 இந்த பாடல் முகவரியை பெற, ஆனால் அவர்கள் கூட, நீங்கள் இடமாற்று செயல்பாடு அவற்றை கடந்து 141 00:11:50,730 --> 00:11:55,690 இந்த வகை தகவல், சரியான இங்கே இந்த எண்ணாக *, ஒடுக்கி சொல்கிறது 142 00:11:55,690 --> 00:12:01,350 "சரி, நாம் ஒரு முழு எண் மாறி ஒரு முகவரியை இந்த முகவரியை புரிந்து கொள்ள போகிறோம்." 143 00:12:01,350 --> 00:12:05,900 ஒரு முழு எண்ணாக ஒரு முகவரி, எந்த ஒரு கேரக்டர் மாறி முகவரி வேறுபட்டது 144 00:12:05,900 --> 00:12:09,930 ஒரு முழு எண்ணாக ஒரு 32 பிட் கணினியில், எடுத்து ஏனெனில், இடத்தை 4 பைட்டுகள் எடுத்து 145 00:12:09,930 --> 00:12:13,310 ஒரு பாத்திரம் மட்டுமே இடம் 1 பைட் எடுத்து அதேசமயம். 146 00:12:13,310 --> 00:12:17,310 அது என்ன தெரியுமா முக்கியமானது - வாழ்ந்து என்ன, மதிப்பு என்ன வகை 147 00:12:17,310 --> 00:12:20,340 உள்ளே கடந்து விட்டது முகவரியில் வாழ்க்கை 148 00:12:20,340 --> 00:12:22,020 நீங்கள் கையாளும் என்று அல்லது முகவரி. 149 00:12:22,020 --> 00:12:29,020 அந்த வகையில், நீங்கள் எவ்வளவு பைட்டுகள் தகவல் உண்மையில் உங்கள் RAM வெளியே ஏற்ற தெரியும். 150 00:12:29,020 --> 00:12:31,780 பின்னர், ஆம், நீங்கள் இந்த dereference ஆபரேட்டர், கேட்டு 151 00:12:31,780 --> 00:12:37,200 சென்று ஒரு குறிப்பிட்ட முகவரியில் தகவல் அணுகுகிறது. 152 00:12:37,200 --> 00:12:42,820 அது இங்கே இந்த ஒரு மாறி கொண்டு, மியூச்சுவல் ஒரு முகவரி போன்ற உள்ளடக்கங்களை சிகிச்சை, 153 00:12:42,820 --> 00:12:47,880 அந்த முகவரிக்கு சென்று, வெளியே இழுக்க, ஒரு பதிவு என்ற செயலி, சுமை ஏற்ற 154 00:12:47,880 --> 00:12:56,340 உண்மையான மதிப்புகள் அல்லது அந்த முகவரியில் வசிக்கும் உள்ளடக்கங்களை. 155 00:12:56,340 --> 00:12:59,620 மேலும் எந்த கேள்விகளையும்? இந்த நல்ல கேள்விகள் உள்ளன. 156 00:12:59,620 --> 00:13:01,650 இது மிகவும் புதிய சொற்களை நிறைய இருக்கிறது. 157 00:13:01,650 --> 00:13:09,800 அது வெவ்வேறு இடங்களில் & மற்றும் * பார்த்து, மேலும் பங்கி என்ன தான். 158 00:13:09,800 --> 00:13:13,180 >> எல்லாம் சரி. 159 00:13:13,180 --> 00:13:18,530 அதனால் மீண்டும் பிரச்சனை 33, தாக்கல் நான் த / பெ 160 00:13:18,530 --> 00:13:22,540 இந்த விஷயங்கள் ஒரு ஜோடி நடந்தது என்று அந்த பிரச்சினைகள் இருந்தது. 161 00:13:22,540 --> 00:13:25,400 ஒரு, இது ஒரு மிகவும் புதிய தலைப்பு தான். 162 00:13:25,400 --> 00:13:30,590 இது, வினாடி வினா முன் அழகான விரைவில் வழங்கப்பட்டது 163 00:13:30,590 --> 00:13:33,400 பின்னர் நான் கணித அந்த வார்த்தை பிரச்சினைகள் போன்ற வகையான என்று 164 00:13:33,400 --> 00:13:39,720 அவர்கள் உங்களுக்கு தகவல் நிறைய கொடுக்க, ஆனால் நீங்கள் உண்மையில் அது ஒரு டன் பயன்படுத்த கொண்ட முடிவடையும் இல்லை. 165 00:13:39,720 --> 00:13:44,060 இந்த பிரச்சினை முதல் பகுதி CSV கோப்பு என்ன விவரிக்கிறார். 166 00:13:44,060 --> 00:13:50,620 இப்போது, CSV கோப்பு, விளக்கம் படி, ஒரு மதிப்புகள் கோப்பு. 167 00:13:50,620 --> 00:13:55,300 இந்த அனைத்து சுவாரசியமான இருக்கும் காரணம், நீங்கள் எப்போதும் அவற்றை பயன்படுத்த காரணம், 168 00:13:55,300 --> 00:14:00,800 ஏனெனில், எப்படி பல எப்போதும் எக்செல் போன்ற பொருட்களை பயன்படுத்த வேண்டும்? 169 00:14:00,800 --> 00:14:03,240 , ஒருவேளை, அல்லது உங்கள் வாழ்வில் சில புள்ளியில் பயன்படுத்தும் நீங்கள் மிக படம். 170 00:14:03,240 --> 00:14:06,430 நீங்கள் Excel போன்ற ஏதாவது பயன்படுத்த வேண்டும். 171 00:14:06,430 --> 00:14:10,940 ஒரு எக்ஸ்செல் விரிதாளின் தரவு வெளியே அல்லது அதை செயலாக்க எந்த செய்ய வேண்டும், 172 00:14:10,940 --> 00:14:17,240 நீங்கள் ஒரு சி நிரல் அல்லது பைதான் நிரல், ஜாவா நிரல், எழுத விரும்பினால் 173 00:14:17,240 --> 00:14:20,070 நீங்கள் அங்கு சேமித்து தரவு சமாளிக்க, 174 00:14:20,070 --> 00:14:23,170 இது வெளியே பொதுவான வழிகளில் ஒன்று CSV கோப்பு உள்ளது. 175 00:14:23,170 --> 00:14:26,850 நீங்கள், உரையாடலை 'என சேமி' சென்று போது நீங்கள் எக்செல் திறக்க முடியும் 176 00:14:26,850 --> 00:14:32,840 நீ ஒரு உண்மையான CSV கோப்பு அவுட் பெற முடியும். 177 00:14:32,840 --> 00:14:35,890 >> இந்த விஷயங்கள் பற்றி எப்படி தெரியும் எளிது. 178 00:14:35,890 --> 00:14:42,010 அது வேலை செய்யும் விதம் போன்ற என்று தான் - அதாவது, அது அடிப்படையில், ஒரு விரிதாள் பின்பற்றும் 179 00:14:42,010 --> 00:14:47,590 அங்கு, நாம் இங்கே பார்க்க போல், மிக விட்டு, மிக சிறிய, 180 00:14:47,590 --> 00:14:49,910 நாம் கடந்த பெயர்கள். 181 00:14:49,910 --> 00:14:54,670 எனவே நாம் Malan, Hardison, பின்னர் Bowden, MacWilliam, பின்னர் சான் வேண்டும். 182 00:14:54,670 --> 00:14:59,470 அனைத்து கடைசியாக பெயர்கள். பின்னர் ஒரு கமா முதல் பெயர்கள் கடந்த பெயர்கள் பிரிக்கிறது. 183 00:14:59,470 --> 00:15:02,970 டேவிட், நேட், ராப், டாமி, மற்றும் Zamyla. 184 00:15:02,970 --> 00:15:06,850 நான் எப்போதும் ராபி மற்றும் டாம் கலக்கு. 185 00:15:06,850 --> 00:15:10,940 பின்னர், இறுதியாக, மூன்றாவது பத்தியில் மின்னஞ்சல் முகவரிகள் ஆகும். 186 00:15:10,940 --> 00:15:18,500 நீங்கள் புரிந்து முறை, திட்டத்தின் எஞ்சிய செயல்படுத்த மிகவும் நேர்மையானவன். 187 00:15:18,500 --> 00:15:23,850 நாம் சி நிரலை இந்த ஒரே கட்டமைப்பை பிரதிபலிக்கும் வகையில் செய்துவிட்டேன் என்ன 188 00:15:23,850 --> 00:15:27,510 நாம் ஒரு கட்டமைப்பை பயன்படுத்தப்படுகின்றன. 189 00:15:27,510 --> 00:15:30,520 நாம் அத்துடன் இந்த ஒரு சிறு விளையாட்டு தொடங்க வேண்டும். 190 00:15:30,520 --> 00:15:35,790 நாம் அகராதிகள் கையாளும் போது சிக்கல் தொகுப்பு 3, முதல் சிறிது அவர்களை பார்த்தேன். 191 00:15:35,790 --> 00:15:40,290 ஆனால் இந்த ஊழியர்கள் struct கடைசி பெயர், ஒரு முதல் பெயர், மற்றும் ஒரு மின்னஞ்சல் சேமிக்கிறது. 192 00:15:40,290 --> 00:15:44,500 எங்கள் CSV கோப்பு போன்ற சேமிக்கும். 193 00:15:44,500 --> 00:15:47,950 இந்த ஒரு வடிவம் இருந்து மற்றொரு மாற்றப்படுகிறது. 194 00:15:47,950 --> 00:15:54,630 நாம், ஒரு வரி வரும், இந்த வழக்கில், ஒரு ஊழியர்கள் struct மாற்ற வேண்டும் 195 00:15:54,630 --> 00:15:59,060 அப்படி ஒரு கமாவால் பிரிக்கப்பட்ட வரி,. 196 00:15:59,060 --> 00:16:01,500 அந்த உணர்வு ஏற்படுத்தும்? நீங்கள் அனைத்து வினாடி வினா எடுத்து, 197 00:16:01,500 --> 00:16:07,680 அதனால் நான் நீங்கள் குறைந்தது, இதை பற்றி யோசிக்க சில நேரம் என்று கற்பனை. 198 00:16:07,680 --> 00:16:16,410 >> வாடகை செயல்பாடு, பிரச்சினை நமக்குள் எடுத்து கேட்கும் - இந்த ஒரு சிறிய பிட் மீது we'll ஜூம் - 199 00:16:16,410 --> 00:16:22,480 , பெயர் கள், ஒரு பணியாளர் அமைப்பு, ஒரு ஊழியர்கள் struct அழைத்து 200 00:16:22,480 --> 00:16:30,900 எங்கள் staff.csv கோப்பு அதன் உள்ளடக்கங்களை சேர்க்க. 201 00:16:30,900 --> 00:16:34,230 இந்த பயன்படுத்த மிகவும் நேரடியான என்று கூறினார். 202 00:16:34,230 --> 00:16:37,430 நாம் வகையான சிறிது மேலும் இந்த செயல்பாடுகளை இன்று முழுவதும் விளையாட வேண்டும். 203 00:16:37,430 --> 00:16:44,510 ஆனால் இந்த வழக்கில், fprintf செயல்பாடு மிகவும் முக்கியமானது. 204 00:16:44,510 --> 00:16:51,960 எனவே fprintf கொண்டு, நாங்கள் உங்களுக்கு printf இந்த கால பயன்படுத்தி வருகின்றனர் போல், அச்சிட முடியாது. 205 00:16:51,960 --> 00:16:55,050 நீங்கள் ஒரு கோப்பை printf ஒரு வரி முடியும். 206 00:16:55,050 --> 00:16:59,030 அதற்கு பதிலாக வழக்கம் printf அழைப்பு உருவாக்கும் அதனால் நீங்கள் அதை வடிவமைப்பு சரம் கொடுக்க அங்கு 207 00:16:59,030 --> 00:17:05,380 பிறகு, பின்வரும் வாதங்களை அனைத்து மாறிகள் பதிலாக 208 00:17:05,380 --> 00:17:11,290 fprintf கொண்டு, உங்கள் முதல் வாதம் பதிலாக நீங்கள் எழுத வேண்டும் கோப்பு. 209 00:17:11,290 --> 00:17:21,170 நாம், மனிதன் fprintf, எடுத்துக்காட்டாக, சாதனம் இந்த கவனிக்க இருந்தால் 210 00:17:21,170 --> 00:17:25,980 நாம் printf மற்றும் fprintf இடையிலான வித்தியாசத்தை பார்க்க முடியும். 211 00:17:25,980 --> 00:17:28,960 நான் இங்கே ஒரு சிறிது பெரிதாக்க வேண்டும். 212 00:17:28,960 --> 00:17:33,140 Printf அப்படி, நாம் ஒரு வடிவம் சரம் கொடுங்கள், பிறகு தொடர்ந்து வாதங்கள் 213 00:17:33,140 --> 00:17:37,580 எங்கள் வடிவம் சரம் கொண்டு மாற்று அல்லது மாற்று அனைத்து காரணிகள் ஆகும். 214 00:17:37,580 --> 00:17:47,310 Fprintf கொண்டு, அதேசமயம், முதல் வாதம் உண்மையில் ஒரு ஓடை என்று இந்த கோப்பு * ஆகும். 215 00:17:47,310 --> 00:17:51,800 >> , எங்கள் வாடகை இங்கு திரும்பி நகரும் 216 00:17:51,800 --> 00:17:54,550 நாம் ஏற்கனவே நம் கோப்பு * ஸ்ட்ரீம் நமக்கு திறந்து கிடைத்துவிட்டது. 217 00:17:54,550 --> 00:17:57,810 என்று இந்த முதல் வரி என்ன இது staff.csv கோப்பு திறக்கும், 218 00:17:57,810 --> 00:18:01,690 இது, append முறையில் அதை திறக்கும், மற்றும் நாம் செய்ய சென்ற என்று தான் 219 00:18:01,690 --> 00:18:08,640 கோப்பு ஊழியர்கள் அமைப்பு எழுத. 220 00:18:08,640 --> 00:18:10,870 மேலும், நான் ஐபாட் பயன்படுத்த வேண்டாம், நாம் பார்ப்போம்? 221 00:18:10,870 --> 00:18:17,900 நான் ஐபாட் பயன்படுத்த வேண்டும். நாம் வெற்றிடத்தை வேண்டும் - நான் ஒரு சிறிய சிறப்பாக எழுத முடியும் அட்டவணை இந்த போடலாம் - 222 00:18:17,900 --> 00:18:33,680 வாடகை களைவதற்கு இது, ஒரு வாதத்தை உள்ள கள் என்று ஒரு பணியாளர் அமைப்பு ஆகும். 223 00:18:33,680 --> 00:18:44,120 எங்கள் ப்ரேஸ் தான், நாம், கோப்பு என்று நம் கோப்பு * கிடைத்துவிட்டது 224 00:18:44,120 --> 00:18:48,380 நாம், நமக்கு கொடுக்கப்பட்ட எங்கள் fopen வரி இல்லை 225 00:18:48,380 --> 00:18:51,890 இது pedia ஏற்கனவே இருந்து நான் புள்ளிகள் அதை எழுத வேண்டும். 226 00:18:51,890 --> 00:19:00,530 பின்னர் எமது அடுத்த வரியில், நாம் fprintf ஒரு அழைப்பு செய்ய போகிறோம் 227 00:19:00,530 --> 00:19:03,700 நாம், நாம் அச்சிட வேண்டும் என்று கோப்பில் கடந்து போகிறாய் 228 00:19:03,700 --> 00:19:10,290 பின்னர் எங்கள் வடிவம் சரம், அது - 229 00:19:10,290 --> 00:19:14,300 நான் உங்களுக்கு இது போல் என்ன சொல்ல தெரியப்படுத்துவோம். 230 00:19:14,300 --> 00:19:20,500 எப்படி நீங்கள் பற்றி, ஸ்டெல்லா? நீங்கள் வடிவம் சரம் முதல் பகுதி போல் என்ன தெரியுமா? 231 00:19:20,500 --> 00:19:24,270 [ஸ்டெல்லா] நிச்சயமாக இல்லை. >> ஜிம்மி ask தாராளமாக. 232 00:19:24,270 --> 00:19:27,690 நீங்கள், ஜிம்மி தெரியுமா? 233 00:19:27,690 --> 00:19:31,000 [ஜிம்மி] இது கடைசி வேண்டுமா? எனக்கு தெரியாது. நான் முற்றிலும் உறுதியாக இல்லை. 234 00:19:31,000 --> 00:19:39,020 சரி >>. எப்படி, யார் தேர்வு இந்த சரியான கிடைத்ததா? 235 00:19:39,020 --> 00:19:41,770 சரி, இல்லை. 236 00:19:41,770 --> 00:19:47,920 அதை இங்கே நாம் செய்ய வேண்டிய அனைத்து எங்கள் ஊழியர்கள் அமைப்பு ஒவ்வொரு பகுதியாக வேண்டும் என்று மாறிவிடும் 237 00:19:47,920 --> 00:19:53,290 எங்கள் கோப்பில் ஒரு சரம் போன்ற அச்சு வேண்டும். 238 00:19:53,290 --> 00:19:59,900 நாங்கள் கடைசி பெயர் இல்லை, ஏனெனில் நாங்கள் சரம் மாற்று தன்மையை மூன்று வெவ்வேறு முறை பயன்படுத்த 239 00:19:59,900 --> 00:20:07,160 கமா தொடர்ந்து, பின்னர் முதல் பெயர், ஒரு கமா தொடர்ந்து 240 00:20:07,160 --> 00:20:12,430 பின்னர் இறுதியாக எந்த மின்னஞ்சல் முகவரியை தொடர்ந்து - இது 241 00:20:12,430 --> 00:20:15,140 என் திரையில் பொருத்தப்படும் - ஆனால் அது ஒரு வரியில் முடிவதற்கு சற்று தன்மையை தொடர்ந்து தான். 242 00:20:15,140 --> 00:20:20,060 அதனால் நான் அங்கே அதை எழுத போகிறேன். 243 00:20:20,060 --> 00:20:23,560 பின்னர், எங்கள் வடிவம் சரம் தொடர்ந்து 244 00:20:23,560 --> 00:20:27,880 நாம் இப்போது நாங்கள் டாட் குறியீடு பயன்படுத்தி அணுக இதில், மாற்று இல்லை 245 00:20:27,880 --> 00:20:31,370 நாம் சிக்கல் தொகுப்பு 3 இல் பார்த்தேன் என்று. 246 00:20:31,370 --> 00:20:48,820 நாம் s.last, s.first, மற்றும் s.email பயன்படுத்தலாம் 247 00:20:48,820 --> 00:20:58,990 எங்கள் வடிவம் சரம் கொண்டு அந்த மூன்று மதிப்புகள் பதிலாக. 248 00:20:58,990 --> 00:21:06,190 அதனால் எப்படி போனீர்கள்? இதில்? 249 00:21:06,190 --> 00:21:09,700 ஆமாம்? இல்லை? ஒருவேளை? சரி. 250 00:21:09,700 --> 00:21:14,180 >> நாம் அச்சிடப்பட்ட நாங்கள் எங்கள் கோப்பை திறந்து பிறகு பிறகு நாம் அந்த இறுதி விஷயம்: 251 00:21:14,180 --> 00:21:17,370 நாம் ஒரு கோப்பு திறந்து விட்டேன் போதெல்லாம், நாங்கள் எப்போதும் அதை மூட நினைவில் கொள்ள வேண்டும். 252 00:21:17,370 --> 00:21:19,430 இல்லையெனில் நாம் நினைவக கசிவு முடிவுக்கு வேண்டும், ஏனெனில், 253 00:21:19,430 --> 00:21:22,500 கோப்பு விளக்கிகளை பயன்படுத்தி. 254 00:21:22,500 --> 00:21:25,950 நாம் அது செயல்பாட்டை பயன்படுத்த வேண்டாம், அதை மூட? டேனியல்? 255 00:21:25,950 --> 00:21:30,120 [டேனியல்] fclose? சரியாக >> fclose,. 256 00:21:30,120 --> 00:21:37,520 எனவே இந்த பிரச்சினை கடைசி பகுதியாக, fclose செயல்பாட்டை பயன்படுத்தி, கோப்பு சரியாக மூட வேண்டும் 257 00:21:37,520 --> 00:21:40,370 இது தான் என்று தெரிகிறது. 258 00:21:40,370 --> 00:21:43,880 மிகவும் வேடிக்கையான இல்லை. 259 00:21:43,880 --> 00:21:46,990 Cool. 260 00:21:46,990 --> 00:21:49,520 அந்த வினாடி வினா மீது பிரச்சனை 33 தான். 261 00:21:49,520 --> 00:21:52,480 நாங்கள் I / O வரும் நிச்சயமாக இன்னும் கோப்பு வேண்டும். 262 00:21:52,480 --> 00:21:55,130 நாம், இன்று விரிவுரையில் சற்று செய்ய, அல்லது பிரிவில் வேண்டும் 263 00:21:55,130 --> 00:22:01,710 இந்த புதிய pset பெருமளவு அமைக்க நடக்கிறது என்ன காரணம். 264 00:22:01,710 --> 00:22:05,020 இந்த கட்டத்தில் வினாடி வினா இருந்து செல்லலாம். ஆமாம்? 265 00:22:05,020 --> 00:22:10,880 >> [சார்லோட்]] ஏன் பதிலாக fclose என்ற fclose (கோப்பு) (staff.csv)? 266 00:22:10,880 --> 00:22:19,100 >> ஆ. அது மாறிவிடும் என்பதால் - நிறைய கேள்வி, ஒரு பெரிய அதில் ஒன்று தான், 267 00:22:19,100 --> 00:22:27,800 ஏன், நாம் fclose எழுத போது, நாம் fclose (கோப்பு) நட்சத்திரம் மாறி எழுதி 268 00:22:27,800 --> 00:22:33,680 கோப்பு பெயர், staff.csv எதிர்ப்பு? அந்த சரியானதா? Yeah. 269 00:22:33,680 --> 00:22:39,570 எனவே ஒரு பார்க்கலாம். நான் என் மடிக்கணினி மீண்டும் மாற வேண்டும், 270 00:22:39,570 --> 00:22:45,040 மற்றும் நாட்டின் fclose விழாவில் பார்போம். 271 00:22:45,040 --> 00:22:51,460 எனவே, fclose செயல்பாடு ஒரு ஸ்ட்ரீம் மூடிவிட்டு, அதை நாம் மூட வேண்டும் என்று தகவலரங்கத்தில் சுட்டிக்காட்டி எடுத்து 272 00:22:51,460 --> 00:22:57,010 நாம் மூட வேண்டும் என்று உண்மையான கோப்பு பெயர் எதிர்க்கும். 273 00:22:57,010 --> 00:23:01,620 இந்த காரணத்தால், திரைக்கு பின்னால், நீங்கள் fopen ஒரு அழைப்பை போது, தான் 274 00:23:01,620 --> 00:23:12,020 நீங்கள் ஒரு கோப்பை திறந்து போது, நீங்கள் உண்மையில் கோப்பு பற்றிய தகவல்களை சேமிக்க நினைவக ஒதுக்கீடு. 275 00:23:12,020 --> 00:23:16,380 எனவே, கோப்பு பற்றிய தகவல்களை கொண்டுள்ளது கோப்பு சுட்டிக்காட்டி உள்ளது 276 00:23:16,380 --> 00:23:23,080 அதை திறக்க போன்ற, நீங்கள் கோப்பு தற்போது எங்கே அதன் அளவு, 277 00:23:23,080 --> 00:23:29,100 நீங்கள் படித்து மற்றும் கோப்பு உள்ள குறிப்பிட்ட இடத்திற்கு அழைப்புகள் எழுதி வைக்க முடியும் என்று. 278 00:23:29,100 --> 00:23:38,060 நீங்கள் கோப்பு பெயருக்கு பதிலாக, மூடிய சுட்டிக்காட்டி மூட முடியும். 279 00:23:38,060 --> 00:23:48,990 >> ஆமாம்? [டேனியல்] எனவே வாடகை பயன்படுத்த, நீங்கள் சொல்ல முடியும் - அது எப்படி பயனர் உள்ளீடு விடுகிறது? 280 00:23:48,990 --> 00:23:53,830 Fprintf இது பயனர் உள்ளீடு காத்திருப்பேன் என்ற அர்த்தத்தில் GetString போல் 281 00:23:53,830 --> 00:23:57,180 நீங்கள் இந்த தட்டச்சு ask - அல்லது நீங்கள் இந்த மூன்று விஷயங்களை தட்டச்சு காத்திருக்க? 282 00:23:57,180 --> 00:24:00,480 அல்லது நீங்கள் வாடகை செயல்படுத்த ஏதாவது பயன்படுத்த வேண்டும்? 283 00:24:00,480 --> 00:24:04,100 >> சரி. நாங்கள் இல்லை - கேள்வி, எப்படி நாம் பயனர் உள்ளீடு கிடைக்கும் என்று 284 00:24:04,100 --> 00:24:09,220 வாடகை செயல்படுத்தப்பட்டதின்? மற்றும் நாம் இங்கே இல்லை, வாடகை மற்றும் அழைப்பவர் உள்ளது 285 00:24:09,220 --> 00:24:17,690 ஏற்கனவே struct சேமிக்கப்படும் தரவு அனைத்து இந்த ஊழியர்கள் struct வழங்கப்பட்டது. 286 00:24:17,690 --> 00:24:22,990 எனவே fprintf ஒரு கோப்பு நேரடியாக தரவு எழுத முடியும். 287 00:24:22,990 --> 00:24:25,690 எந்த பயனர் உரைக்காக காத்திருக்கும் உள்ளது. 288 00:24:25,690 --> 00:24:32,110 பயனர் ஏற்கனவே ஒழுங்காக இந்த ஊழியர்கள் struct அது செலுத்துவதன் மூலம் உள்ளீடு கொடுக்கப்பட்ட. 289 00:24:32,110 --> 00:24:36,510 அந்த சுட்டிகள் எந்த பூஜ்ய இருந்தால் மற்றும் விஷயங்கள், நிச்சயமாக, உடைக்க வேண்டும் 290 00:24:36,510 --> 00:24:40,370 எனவே நாம் இங்கு மீண்டும் உருட்டும் மற்றும் நாம் struct பாருங்கள். 291 00:24:40,370 --> 00:24:43,640 நாம் சரம் கடந்த, சரம் முதல், சரம் மின்னஞ்சல் வேண்டும். 292 00:24:43,640 --> 00:24:48,530 நாம் இப்போது அந்த உண்மையில் அனைத்து, முக்காடிட்டு, கரி * மாறிகள் என்று. 293 00:24:48,530 --> 00:24:53,470 அந்த வெற்று குறிக்கின்ற அல்லது. 294 00:24:53,470 --> 00:24:55,800 அவர்கள், குவியல் மீது நினைவக சுட்டி 295 00:24:55,800 --> 00:24:59,650 ஸ்டேக்கில் ஒருவேளை நினைவகம். 296 00:24:59,650 --> 00:25:04,580 நாம் உண்மையில் எனக்கு தெரியும், ஆனால் இந்த சுட்டிகள் எந்த பூஜ்ய, அல்லது தவறான என்றால், இல்லை 297 00:25:04,580 --> 00:25:08,120 நிச்சயமாக எங்கள் வாடகை செயல்பாடு செயலிழக்க செய்வேன் என்று. 298 00:25:08,120 --> 00:25:11,050 அந்த பரீட்சை நோக்கத்துக்கு அப்பாற்பட்டது வகையான என்று ஒன்று இருந்தது. 299 00:25:11,050 --> 00:25:16,440 நாம் அதை பற்றி கவலை இல்லை. 300 00:25:16,440 --> 00:25:22,170 பெரிய. சரி. எனவே வினாடி வினா இருந்து நகரும். 301 00:25:22,170 --> 00:25:25,760 >> இந்த பையன் மூட விட, நாம் pset 4 பார்க்க போகிறோம். 302 00:25:25,760 --> 00:25:34,700 நீங்கள் pset ஸ்பெக் பார்த்து இருந்தால், மீண்டும் அதை அணுக முடியும், cs50.net/quizzes, 303 00:25:34,700 --> 00:25:42,730 நாம் பிரிவில் பிரச்சினைகளை இன்று ஒரு சில செல்ல போகிறோம். 304 00:25:42,730 --> 00:25:52,240 நான் கீழே ஸ்க்ரோலிங் - கேள்விகள் பிரிவு pset ஸ்பெக் மூன்றாம் பக்கத்தில் தொடங்குகிறது. 305 00:25:52,240 --> 00:25:57,800 முதல் பகுதி திருப்பி மற்றும் குழாய்கள் மீது போய் குறுகிய பார்க்க கேட்கும். 306 00:25:57,800 --> 00:26:02,820 குளிர் குறுகிய இருந்தது இது, நீங்கள் பயன்படுத்த முடியும் என்று சில புதிய, குளிர் கட்டளை வரி தந்திரங்களை காட்டுகிறது. 307 00:26:02,820 --> 00:26:06,050 பின்னர் நாங்கள் அதே நீங்கள் ஒரு சில கேள்விகளை கிடைத்துவிட்டது. 308 00:26:06,050 --> 00:26:10,860 நீரோடைகள் பற்றி இந்த முதல் கேள்வி, printf முன்னிருப்பாக எழுதுகிறார் எந்த, 309 00:26:10,860 --> 00:26:15,920 நாம் எந்த ஒரு நிமிடம் முன்பு தான் கொஞ்சம் மீது தொட்டது. 310 00:26:15,920 --> 00:26:22,380 நாங்கள் பேசிக்கொண்டிருந்தோம் இந்த fprintf அதன் வாதம் ஒரு கோப்பு * ஸ்ட்ரீம் எடுத்து. 311 00:26:22,380 --> 00:26:26,580 fclose, அதே ஒரு கோப்பு * ஸ்ட்ரீம் எடுத்து 312 00:26:26,580 --> 00:26:32,660 மற்றும் fopen திரும்ப மதிப்பு அத்துடன் நீங்கள் ஒரு கோப்பு * ஸ்ட்ரீம் கொடுக்கிறது. 313 00:26:32,660 --> 00:26:36,060 நாம் printf தீர்க்கப்பட போது நாம் முன்னர் அந்த பார்த்ததில்லை காரணம் 314 00:26:36,060 --> 00:26:39,450 printf ஒரு முன்னிருப்பு ஸ்ட்ரீம் ஏனெனில் இது. 315 00:26:39,450 --> 00:26:41,810 அது எழுதுகிறார் எந்த இயல்புநிலை ஸ்ட்ரீம் 316 00:26:41,810 --> 00:26:45,190 நீங்கள் சுருக்கமாக கண்டுபிடிக்க வேண்டும். 317 00:26:45,190 --> 00:26:50,080 எனவே அதை கண்டிப்பாக பாருங்கள். 318 00:26:50,080 --> 00:26:53,010 >> இன்றைய பகுதியில், நாம், GDB பற்றி கொஞ்சம் பேச போகிறோம் 319 00:26:53,010 --> 00:26:57,720 மிகவும் பிரபலமான நீங்கள் இருக்கும் என்பதால், மேலும் நடைமுறையில் நீங்கள், அது கிடைக்கும் 320 00:26:57,720 --> 00:27:01,390 சிறந்த முடிந்தது நீங்கள் உண்மையில் உங்கள் சொந்த குறியீடு பிழைகளை கீழே வேட்டையாட வேண்டும். 321 00:27:01,390 --> 00:27:05,540 இந்த லாபம் வரை பிழைத்திருத்தம் செயல்முறை வேகம். 322 00:27:05,540 --> 00:27:09,230 எனவே printf பயன்படுத்தி, ஒவ்வொரு முறையும் நீங்கள், உங்கள் குறியீடு மீள்தொகுப்பானது வேண்டும் என்று 323 00:27:09,230 --> 00:27:13,000 நீங்கள் மீண்டும் இயக்க வேண்டும், சில நேரங்களில் நீங்கள், சுற்றி printf அழைப்பு நகர்த்த வேண்டும் 324 00:27:13,000 --> 00:27:17,100 குறியீடு அவுட் கருத்து, அது இன்னும் சிறிது நேரத்தில் எடுக்கும். 325 00:27:17,100 --> 00:27:20,850 எங்கள் இலக்கு முயற்சி மற்றும் GDB கொண்டு, நீங்கள் அடிப்படையில் முடியும் என்று நீங்கள் நம்ப வேண்டும் 326 00:27:20,850 --> 00:27:26,810 printf உங்கள் குறியீடு எந்த கட்டத்தில் எதையும் நீங்கள் அதை மீள்தொகுப்பானது வேண்டும். 327 00:27:26,810 --> 00:27:35,120 நீங்கள் ஆரம்பிக்க மற்றும் printf அடுத்த யோசிக்காமல் வைத்திருக்க வேண்டும். 328 00:27:35,120 --> 00:27:40,910 செய்ய முதல் விஷயம் இந்த வரியை நகலெடுத்து வலை பிரிவு குறியீடு ஆஃப் பெற உள்ளது. 329 00:27:40,910 --> 00:27:47,530 நான் "wget ​​http://cdn.cs50.net", என்கிறார் அந்த குறியீடு இந்த வரி நகல். 330 00:27:47,530 --> 00:27:49,510 நான் அதை நகலெடுத்து போகிறேன். 331 00:27:49,510 --> 00:27:55,950 நான் என் சாதனம் வழியாக செல்ல போகிறேன், நீங்கள், நான் செய்து பார்க்கலாம் அவுட் பெரிதாக்கவும் 332 00:27:55,950 --> 00:28:01,890 அங்கு அதை ஒட்டி, நான் Enter விசையை போது, இந்த wget கட்டளை மொழியில் ஒரு இணைய பெற வேண்டும். 333 00:28:01,890 --> 00:28:06,210 இது, இணைய இந்த கோப்பு ஆஃப் இழுத்து நடக்கிறது 334 00:28:06,210 --> 00:28:11,790 அது தற்போதைய அடைவு அதை காப்பாற்ற நடக்கிறது. 335 00:28:11,790 --> 00:28:21,630 நான் என் தற்போதைய அடைவு பட்டியலிட இப்போது நீங்கள் நான் அங்கு இந்த section5.zip கோப்பு பெற்றுவிட்டோம் என்று பார்க்கலாம். 336 00:28:21,630 --> 00:28:25,260 அந்த பையன் சமாளிக்க வழி, அது zip கோப்பை திறக்க உள்ளது 337 00:28:25,260 --> 00:28:27,650 நீங்கள் இப்படியே, கட்டளை வரியில் செய்ய முடியும். 338 00:28:27,650 --> 00:28:31,880 Section5.zip. 339 00:28:31,880 --> 00:28:36,980 அது zip கோப்பை திறக்க வேண்டும் என்று, எனக்கு கோப்புறையை உருவாக்க 340 00:28:36,980 --> 00:28:40,410 அனைத்து உள்ளடக்கங்களை உயர்த்துவதற்காக, அங்கு அவர்களை வைத்து. 341 00:28:40,410 --> 00:28:47,410 எனவே இப்போது நான் சிடி கட்டளையை பயன்படுத்தி என் பகுதி 5 அடைவில் செல்லலாம். 342 00:28:47,410 --> 00:28:58,310 தெளிவான பயன்படுத்தி திரையில் தெளிவாக. எனவே திரையில் தெளிவாக. 343 00:28:58,310 --> 00:29:02,280 இப்போது நான் சமாளிக்க ஒரு நல்ல சுத்தமான முனையம் கிடைத்துவிட்டது. 344 00:29:02,280 --> 00:29:06,200 >> நான் இந்த அடைவில் பார்க்க அனைத்து கோப்புகள், பட்டியலிட இப்போது நீங்கள் 345 00:29:06,200 --> 00:29:12,270 buggy1, buggy2, buggy3, மற்றும் buggy4: நான் நான்கு கோப்புகளை பெற்றுவிட்டோம் என்று பார்க்க. 346 00:29:12,270 --> 00:29:16,180 நான் அதற்கான. கேட்ச் கோப்புகளை கிடைத்துவிட்டது. 347 00:29:16,180 --> 00:29:20,400 நாம் இப்போது. கேட்ச் கோப்புகளை பார்க்க போவதில்லை. 348 00:29:20,400 --> 00:29:24,140 அதற்கு பதிலாக, நாம் GDB திறந்து அவற்றை பயன்படுத்த போகிறோம். 349 00:29:24,140 --> 00:29:28,220 நாம் GDB பயன்படுத்தும் போது நாம், நாம் உண்மையான மூல குறியீடு அணுகல் அதனால் அவர்களை சுற்றி வைத்திருக்கிறேன் 350 00:29:28,220 --> 00:29:32,740 ஆனால் பகுதியில் இந்த பகுதியை இலக்கு GDB சுற்றி டிங்கர் உள்ளது 351 00:29:32,740 --> 00:29:40,370 நாம் இந்த நான்கு தரமற்ற திட்டங்கள் ஒவ்வொரு தவறு என்ன நடக்கிறது கண்டுபிடிக்க முடியும் என்பதை பார்க்க. 352 00:29:40,370 --> 00:29:43,380 எனவே தான், உண்மையில் விரைவாக அறைக்கு போகிறாய் 353 00:29:43,380 --> 00:29:47,000 மற்றும் நான், தரமற்ற திட்டங்கள் ஒரு இயக்க கேட்பது போகிறேன் 354 00:29:47,000 --> 00:29:54,730 பின்னர், நாம் GDB மூலம் ஒரு குழுவாக செல்ல வேண்டும், மற்றும் நாம் இந்த திட்டங்களை சரி செய்ய என்ன செய்ய முடியும் என்று பார்க்கிறேன் 355 00:29:54,730 --> 00:29:58,460 அல்லது குறைந்த பட்சம் அவர்கள் ஒவ்வொரு தவறு என்ன நடக்கிறது அடையாளம். 356 00:29:58,460 --> 00:30:04,760 டேனியல் இங்கு ஆரம்பிப்போம். நீங்கள் buggy1 இயங்கும்? என்ன நடக்கிறது என்று பார்ப்போம். 357 00:30:04,760 --> 00:30:09,470 [டேனியல்] இது ஒரு பயன்பாடு தவறு இல்லை என்கிறார். >> சரி. சரியாக. 358 00:30:09,470 --> 00:30:12,460 நான் buggy1 ரன் என்றால், நான் ஒரு நொடி தவறு தான். 359 00:30:12,460 --> 00:30:16,210 இந்த கட்டத்தில், நான், போய் buggy1.c திறக்க முடியவில்லை 360 00:30:16,210 --> 00:30:19,450 , முயற்சி மற்றும் தவறு என்ன நடக்கிறது கண்டுபிடித்தார்கள் 361 00:30:19,450 --> 00:30:22,000 ஆனால் இந்த நொடி தவறு பிழை பற்றி மிகவும் அருவருப்பான விஷயங்கள் ஒரு 362 00:30:22,000 --> 00:30:27,610 இது நிரல் விஷயங்கள் வரி உண்மையில் தவறு மற்றும் உடைத்து என்ன சொல்ல இல்லை என்று. 363 00:30:27,610 --> 00:30:29,880 நீங்கள் வகையான குறியீடு பார்க்க வேண்டும் 364 00:30:29,880 --> 00:30:33,990 மற்றும் யூகம் பயன்படுத்தி கண்டுபிடிக்க மற்றும் சோதிக்க அல்லது printf தவறு என்ன நடக்கிறது என்பதை. 365 00:30:33,990 --> 00:30:37,840 GDB பற்றி சிறந்த விஷயங்கள் ஒரு அது உண்மையில் மிகவும் எளிது 366 00:30:37,840 --> 00:30:42,170 வரி கண்டுபிடிக்க இது உங்கள் நிரல் செயலிழந்தால் மணிக்கு. 367 00:30:42,170 --> 00:30:46,160 இது முற்றிலும் கூட தான் என்று இருந்தால், அதை பயன்படுத்த மதிப்புள்ள. 368 00:30:46,160 --> 00:30:56,190 எனவே GDB வரை துவக்க, நான் GDB தட்டச்சு, பிறகு நான் இயக்க வேண்டும் என்று இயங்கக்கூடிய அது பாதை கொடுக்க. 369 00:30:56,190 --> 00:31:01,960 இங்கே நான் gdb ஐ ./buggy1 தட்டச்சு. 370 00:31:01,960 --> 00:31:06,600 Enter விசையை. என்னை இந்த காப்புரிமை தகவல் கொடுக்கிறது 371 00:31:06,600 --> 00:31:13,000 கீழே இங்கே நீங்கள் ", / வீட்டில் / இருந்து படித்தல் குறியீடுகள் சொல்வது இந்த வரிசையில் பார்க்கலாம் 372 00:31:13,000 --> 00:31:17,680 jharvard/section5/buggy1. " 373 00:31:17,680 --> 00:31:22,060 எல்லாம் நன்றாக நடந்தால் மற்றும், நீங்கள் இந்த மாதிரி ஒரு செய்தியை அச்சிட பார்க்கிறேன். 374 00:31:22,060 --> 00:31:25,500 அது குறியீடுகளை படிக்க வேண்டும், அது "நான், உங்கள் செயல்படும் கோப்பை இருந்து குறியீடுகளை படித்து வருகிறேன்" சொல்கிறேன் 375 00:31:25,500 --> 00:31:29,900 பின்னர் அதை இங்கு இந்த "செய்து" செய்தி சாப்பிடும். 376 00:31:29,900 --> 00:31:35,410 இந்த சில மற்ற வேறுபாடுகள் பாருங்கள், அல்லது நீங்கள் பார்த்தால் அது குறியீடுகளை கண்டறிய முடியவில்லை 377 00:31:35,410 --> 00:31:41,460 அல்லது அப்படி ஒன்று, என்ன அர்த்தம் நீங்கள் ஒழுங்காக உங்கள் இயங்கக்கூடிய தொகுக்கப்பட்ட இல்லை என்று. 378 00:31:41,460 --> 00:31:49,980 நாம் GDB பயன்படுத்த திட்டங்கள் தொகுக்க போது, நாம், அந்த சிறப்பு கிராம் கொடி பயன்படுத்த வேண்டும் 379 00:31:49,980 --> 00:31:54,540 நீங்கள் உங்கள் திட்டங்களை தொகுக்க வேண்டும் என்று நான் செய்ய தட்டச்சு, முன்னிருப்பாக முடிந்தது 380 00:31:54,540 --> 00:31:59,320 அல்லது தரமற்ற அல்லது ஏதேனும், மீட்க வேண்டும். 381 00:31:59,320 --> 00:32:07,800 ஆனால் நீங்கள் கணகண வென்ற சப்தம் உடன் கைமுறையாக ஒடுக்குவதற்கான என்றால், பிறகு நீங்கள் போய் அந்த-கிராம் கொடி சேர்க்க வேண்டும். 382 00:32:07,800 --> 00:32:10,310 >> இந்த கட்டத்தில், இப்போது நாம் GDB வரியில், என்று 383 00:32:10,310 --> 00:32:12,310 இது நிரலை இயக்க அழகான எளிது. 384 00:32:12,310 --> 00:32:19,740 நாம் ஒன்று ரன் தட்டச்சு செய்யலாம், அல்லது நாம் தான் r தட்டச்சு செய்யலாம். 385 00:32:19,740 --> 00:32:22,820 மிகவும் GDB கட்டளைகளை சுருக்கமாக இருக்க முடியும். 386 00:32:22,820 --> 00:32:25,940 பொதுவாக அழகான நல்ல இது ஒன்று அல்லது இரண்டு கடிதங்கள், என்று. 387 00:32:25,940 --> 00:32:30,980 நீங்கள் r தட்டச்சு மற்றும் என்ன, Enter விசையை என்றால், Saad? 388 00:32:30,980 --> 00:32:39,390 [Saad] நான் SIGSEGV, அடுக்கு தவறு, பின்னர் இந்த gobbledygook கிடைத்தது. 389 00:32:39,390 --> 00:32:43,650 >> சரி. 390 00:32:43,650 --> 00:32:47,990 நாம் இப்போது திரையில் பார்க்கிறோம் போன்ற, மற்றும் Saad சொன்னது போல், 391 00:32:47,990 --> 00:32:53,430 நாம் நடத்தும் அல்லது r தட்டச்சு மற்றும் Enter விசையை போது, நாம் இன்னும் அதே நொடி தவறு தான். 392 00:32:53,430 --> 00:32:55,830 எனவே GDB பயன்படுத்தி எமது பிரச்சினை இல்லை. 393 00:32:55,830 --> 00:32:59,120 ஆனால் அது சில gobbledygook கொடுக்கிறது, அது மாறிவிடும் இந்த gobbledygook 394 00:32:59,120 --> 00:33:03,080 இது நடக்கிறது, அங்கு உண்மையில் நமக்கு சொல்கிறது. 395 00:33:03,080 --> 00:33:10,680 இந்த சிறிது அலச, இந்த முதல் பிட் எல்லாம் தவறு நடக்கிறது இதில் செயல்பாடு ஆகும். 396 00:33:10,680 --> 00:33:20,270 அங்கு இந்த __ strcmp_sse4_2, அது இந்த கோப்பில் நடக்கிறது என்று நமக்கு சொல்கிறது 397 00:33:20,270 --> 00:33:29,450 sysdeps/i386 என்று, இந்த, மீண்டும், ஒரு குப்பை கூளங்கள் வகையான - ஆனால் வரி 254. 398 00:33:29,450 --> 00:33:31,670 என்று பாகுபடுத்த வகையான கடினமாக உள்ளது. நீங்கள், இந்த மாதிரி பார்க்க வழக்கமாக போது 399 00:33:31,670 --> 00:33:38,770 அது கணினி நூலகங்கள் ஒரு வகை பெயர்ச்சிகள் Seg என்று பொருள். 400 00:33:38,770 --> 00:33:43,220 அதனால் ஏதாவது strcmp செய்ய. உங்களுக்கு முன் strcmp பார்த்திருக்கிறேன். 401 00:33:43,220 --> 00:33:52,730 மிகவும் வேடிக்கையான, ஆனால் இந்த strcmp strcmp ஒரு பிரச்சனை இருக்கிறது என்று உடைந்து அல்லது என்று என்றால் என்ன? 402 00:33:52,730 --> 00:33:57,110 நீங்கள், அலெக்சாண்டர் என்ன நினைக்கிறீர்கள்? 403 00:33:57,110 --> 00:34:04,890 [அலெக்சாண்டர்] என்று இது - 254 வரி? மற்றும் - இல்லை பைனரி, ஆனால் அதை அவர்கள் கூரையில் இல்லை, 404 00:34:04,890 --> 00:34:10,590 பின்னர் ஒவ்வொரு செயல்பாடு வேறு மொழி இல்லை. - அந்த விழாவில் 254, அல்லது? 405 00:34:10,590 --> 00:34:21,460 >> இது வரி 254 தான். இந்த. கள் கோப்பில் போல், ஒருவேளை அது சட்டமன்ற குறியீடு எனவே. 406 00:34:21,460 --> 00:34:25,949 >> ஆனால், நான், நாம் ஒரு நொடி தவறு வந்திருக்கிறேன் ஏனென்றால் இன்னும் இன்றியமையாத ஒன்று, என்று நினைக்கிறேன் 407 00:34:25,949 --> 00:34:29,960 அது strcmp விழா வரும் போல் தெரிகிறது, 408 00:34:29,960 --> 00:34:38,030 இந்த வெளிப்படுத்தாது, பின்னர், அந்த strcmp உடைந்துள்ளது? 409 00:34:38,030 --> 00:34:42,290 இது வட்டம், கூடாது. நீங்கள் ஒரு அடுக்கு தவறு இருக்கிறது, ஏனென்றால் 410 00:34:42,290 --> 00:34:49,480 கணினி செயல்பாடுகளை ஒரு, பொதுவாக என்று நீங்கள் சரியாக என்று இல்லை என்று அர்த்தம். 411 00:34:49,480 --> 00:34:52,440 என்ன உண்மையில் நடக்கிறது கண்டுபிடிக்க செய்ய அதிவேக விஷயம் 412 00:34:52,440 --> 00:34:55,500 நீங்கள் ஒரு நொடி தவறு பார்க்கும் போதெல்லாம் நீங்கள் இப்படி வேடிக்கையாக ஒன்று, பார்க்கும் போது, 413 00:34:55,500 --> 00:34:59,800 நீங்கள், மேல் தான் முக்கிய பயன்படுத்தி என்று ஒரு திட்டம் உள்ளது குறிப்பாக 414 00:34:59,800 --> 00:35:03,570 ஒரு backtrace பயன்படுத்த வேண்டும். 415 00:35:03,570 --> 00:35:13,080 நான் முழு backtrace வார்த்தைக்கு பதிலாக, BT எழுதி backtrace சுருக்கியது. 416 00:35:13,080 --> 00:35:16,510 ஆனால் சார்லோட், நீங்கள் BT தட்டச்சு மற்றும் வெற்றி உள்ளிடவும் போது என்ன நடக்கும்? 417 00:35:16,510 --> 00:35:23,200 [சார்லோட்] இது எனக்கு இரண்டு கோடுகள், வரி 0 மற்றும் வரி 1 காட்டுகிறது. 418 00:35:23,200 --> 00:35:26,150 >> சரி. எனவே வரி 0 மற்றும் வரி 1. 419 00:35:26,150 --> 00:35:34,560 இந்த உங்கள் நிரல் முறிந்தது போது நாடகம் தற்போது என்று உண்மையான ஸ்டேக் சட்டங்கள் உள்ளன. 420 00:35:34,560 --> 00:35:42,230 மிக உயர்ந்த சட்டம், சட்ட 0 இருந்து தொடங்கி, மற்றும் சட்ட 1 இது, கீழே மிக போகிறது. 421 00:35:42,230 --> 00:35:45,140 நமது மிக சிறந்த சட்ட strcmp சட்டம் உள்ளது. 422 00:35:45,140 --> 00:35:50,080 நீங்கள், இந்த நாங்கள் குறிப்புகள் கொண்ட வினாடி வினா செய்கிறார்கள் என்று சிக்கல் போன்ற யோசிக்க முடியும் 423 00:35:50,080 --> 00:35:54,890 அங்கு நாங்கள், முக்கிய ஸ்டாக் சட்டகமானது மேல் ஸ்டாக் சட்டகமானது இடமாற்றம் 424 00:35:54,890 --> 00:35:59,700 நாம் இடமாற்று முக்கிய பயன்படுத்தி அந்த மாறிகள் மேல் பயன்படுத்தி அந்த மாறிகள் இருந்தது. 425 00:35:59,700 --> 00:36:08,440 இங்கே நம் விபத்தில் எங்கள் முக்கிய செயல்பாடு அழைப்பு அது நம் strcmp செயல்பாடு, நடந்தது 426 00:36:08,440 --> 00:36:14,370 மற்றும் backtrace எங்களை விஷயங்களை தோல்வி இதில் செயல்பாடுகளை மட்டும் கொடுத்து, 427 00:36:14,370 --> 00:36:16,440 எல்லாம் இருந்து அழைத்து அங்கு ஆனால் இது நாம் சொல்வது. 428 00:36:16,440 --> 00:36:18,830 நான் ஒரு சிறிய மேற்பட்ட உருட்டும், நீங்கள் 429 00:36:18,830 --> 00:36:26,110 நாம் ஆமாம், நாம் இந்த strcmp-sse4.s கோப்பின் வரி 254 இருந்தன என்று பார்க்க முடியும். 430 00:36:26,110 --> 00:36:32,540 ஆனால் அழைப்பு buggy1.c, வரி 6 செய்யப்பட்டது. 431 00:36:32,540 --> 00:36:35,960 நாம் போய் பார்த்துவிட்டு மற்றும் என்ன நடக்கிறது என்று பார்க்க போக முடியும் - நாம் என்ன செய்ய முடியும் என்று 432 00:36:35,960 --> 00:36:39,930 buggy1.c, வரி 6 மணிக்கு. 433 00:36:39,930 --> 00:36:43,780 மீண்டும், இதை செய்ய இரண்டு வழிகள் உள்ளன. ஒரு GDB வெளியே வெளியேற வேண்டும் 434 00:36:43,780 --> 00:36:49,460 அல்லது உங்கள் குறியீடு மற்றொரு சாளரத்தில் மற்றும் குறுக்கு குறிப்பு ஒன்றில் திறக்க வேண்டும். 435 00:36:49,460 --> 00:36:54,740 இப்போது நீங்கள் அலுவலக மணி நேரத்தில் என்றால் காரணம் என்று, மற்றும் கூட, அழகான எளிது அல்ல 436 00:36:54,740 --> 00:36:57,220 நீங்கள் ஒரு நொடி தவறு கிடைத்தது எல்லாம் உடைத்து அங்கு உங்கள் TF, ஆச்சரியமாக இருக்கிறது 437 00:36:57,220 --> 00:36:59,710 நீங்கள் "ஓ, வரி 6, சொல்ல முடியாது. நான், என்ன நடக்கிறது என்று தெரியவில்லை 438 00:36:59,710 --> 00:37:03,670 ஆனால் வரி 6 பற்றி ஏதோ என் திட்டத்தை முறியடிக்க ஏற்படுத்துகிறது. " 439 00:37:03,670 --> 00:37:10,430 அதை செய்ய வேறு வழி நீங்கள் GDB பட்டியல் என்று இந்த கட்டளையை பயன்படுத்த முடியும். 440 00:37:10,430 --> 00:37:13,650 நீங்கள் எல் அதை சுருக்கியது முடியும். 441 00:37:13,650 --> 00:37:18,910 நாங்கள் எல் வெற்றி என்றால், நாம் இங்கே என்ன கிடைக்கும்? 442 00:37:18,910 --> 00:37:21,160 நாம் வித்தியாசமான விஷயங்களை ஒரு மொத்தமாக கிடைக்கும். 443 00:37:21,160 --> 00:37:26,030 இந்த உண்மையான சட்டசபை குறியீடு உள்ளது 444 00:37:26,030 --> 00:37:29,860 அந்த strcmp_sse4_2 உள்ளது. 445 00:37:29,860 --> 00:37:32,440 இந்த, பங்கி என்ன தெரிகிறது 446 00:37:32,440 --> 00:37:36,520 நாம் இந்த வருகிறோம் காரணம், இப்போது தான் 447 00:37:36,520 --> 00:37:40,160 GDB சட்ட 0 எங்களுக்கு உள்ளது. 448 00:37:40,160 --> 00:37:43,070 >> அதனால் எப்போது நாம் பார்க்க மாறிகள், நாம் மூல குறியீடு பார் எந்த நேரம், 449 00:37:43,070 --> 00:37:50,530 நாம் ஸ்டேக் சட்ட சார்ந்திருக்கிறது நாம் தற்போது இருக்கிறோம் என்று மூல குறியீடு பார்க்க 450 00:37:50,530 --> 00:37:53,200 எனவே அர்த்தமுள்ள எதையும் பெறுவதற்காக, நாம் வேண்டும் 451 00:37:53,200 --> 00:37:57,070 மேலும் அர்த்தமுள்ளதாக ஒரு ஸ்டாக் சட்டகமானது செல்ல. 452 00:37:57,070 --> 00:38:00,180 இந்த வழக்கில், முக்கிய ஸ்டாக் சட்டகமானது, இன்னும் கொஞ்சம் உணர்வு என்று 453 00:38:00,180 --> 00:38:02,680 என்று உண்மையில் நாம் எழுதிய குறியீடு ஏனெனில். 454 00:38:02,680 --> 00:38:05,330 இல்லை strcmp குறியீடு. 455 00:38:05,330 --> 00:38:08,650 நாம் இரண்டு ஏனெனில் நீங்கள், இந்த வழக்கில், பிரேம்கள் இடையிலான நகர்த்த முடியாது, 456 00:38:08,650 --> 00:38:10,430 நாம், 0 மற்றும் 1 வேண்டும் 457 00:38:10,430 --> 00:38:13,650 நீங்கள் மேலும் கீழும் கட்டளையை என்று. 458 00:38:13,650 --> 00:38:18,480 நான் ஒரு சட்டகம், மேலே நகர்த்த வேண்டும் 459 00:38:18,480 --> 00:38:21,770 இப்போது நான் முக்கிய ஸ்டாக் சட்டகமானது இருக்கிறேன். 460 00:38:21,770 --> 00:38:24,330 நான், நான் அங்கு செல்ல கீழே நகர்த்த முடியாது 461 00:38:24,330 --> 00:38:32,830 மீண்டும் சென்று, மீண்டும் கீழே போய், மீண்டும் போக. 462 00:38:32,830 --> 00:38:39,750 நீங்கள் எப்போதாவது GDB உங்கள் திட்டத்தை செய்தால், நீங்கள் ஒரு விபத்தில், நீ, backtrace கிடைக்கும் 463 00:38:39,750 --> 00:38:42,380 மற்றும் நீங்கள் என்ன நடக்கிறது என்று தெரியவில்லை என்று சில கோப்பில் என்று பார்க்க. 464 00:38:42,380 --> 00:38:45,460 நீங்கள் பட்டியல் முயற்சி, குறியீடு, உங்களுக்கு தெரிந்தவர்கள் இல்லை 465 00:38:45,460 --> 00:38:48,150 உங்கள் சட்டங்களை பார்த்து கொள்கிறேன், நீங்கள் எங்கே கண்டுபிடித்தார்கள். 466 00:38:48,150 --> 00:38:51,010 நீங்கள் தவறான ஸ்டேக் சட்டத்தில் ஒருவேளை நீங்கள். 467 00:38:51,010 --> 00:38:58,760 அல்லது குறைந்த பட்சம் நீங்கள் உண்மையில் debug என்று அல்ல, ஒரு ஸ்டாக் சட்டகமானது இருக்கிறோம். 468 00:38:58,760 --> 00:39:03,110 இப்போது நாம் சரியான ஸ்டாக் சட்டகமானது இருக்கிறோம் என்று, நாம், முக்கிய இருக்கிறோம் 469 00:39:03,110 --> 00:39:08,100 இப்போது நாம் வரி என்ன கண்டுபிடிக்க பட்டியலில் கட்டளையை பயன்படுத்தலாம். 470 00:39:08,100 --> 00:39:13,590 நீங்கள் அதை பார்க்க முடியும்; அது சரி இங்கே நமக்கு அது அச்சிடப்பட்ட. 471 00:39:13,590 --> 00:39:19,470 ஆனால் நாம் அனைவரும் ஒரே பட்டியலிட அடிக்க முடியும், மற்றும் பட்டியல் எங்களுக்கு இந்த நல்ல நகல் கொடுக்கிறது 472 00:39:19,470 --> 00:39:23,920 இங்கே நடக்கிறது என்று உண்மையான மூல குறியீடு. 473 00:39:23,920 --> 00:39:26,420 >> குறிப்பாக, நாங்கள் வரி 6 பார்க்க முடியும். 474 00:39:26,420 --> 00:39:29,330 நாம் இங்கே என்ன நடக்கிறது பார்க்கலாம். 475 00:39:29,330 --> 00:39:31,250 நாம் ஒரு சரம் ஒப்பீடு செய்து போல் இது இருக்கிறது 476 00:39:31,250 --> 00:39:41,050 சரம் "CS50 பாறைகள்" மற்றும் argv இடையே [1]. 477 00:39:41,050 --> 00:39:45,700 இதை பற்றி ஏதாவது நொறுங்கியதில். 478 00:39:45,700 --> 00:39:54,120 மிஸ்ஸி அதனால், நீங்கள் இங்கே என்ன நடக்கிறது என்று எந்த எண்ணங்கள் இருக்கிறது? 479 00:39:54,120 --> 00:39:59,400 [மிஸ்ஸி] இது நொறுங்கியதில் ஏன் என்று எனக்கு தெரியவில்லை. இது நொறுங்கியதில் ஏன் >> உனக்கு தெரியாது? 480 00:39:59,400 --> 00:40:02,700 ஜிம்மி, எந்த எண்ணங்கள்? 481 00:40:02,700 --> 00:40:06,240 [ஜிம்மி] நான் முற்றிலும் உறுதியாக இல்லை, ஆனால் நாம் சரம் பயன்படுத்தப்படும் கடந்த கால ஒப்பிட்டு, 482 00:40:06,240 --> 00:40:10,260 அல்லது strcmp, நாம் கீழ் மூன்று வெவ்வேறு சந்தர்ப்பங்களில் போல் இருந்தது. 483 00:40:10,260 --> 00:40:12,800 நாம் ஒரு == இல்லை, நான் முதல் வரிசையில், நினைக்கவில்லை. 484 00:40:12,800 --> 00:40:16,700 மாறாக அது, மூன்று பிரிக்கப்பட்டு, மற்றும் ஒரு == 0 இருந்தது 485 00:40:16,700 --> 00:40:19,910 ஒரு <0, நான் நினைக்கிறேன், மற்றும் ஒரு> 0. 486 00:40:19,910 --> 00:40:22,590 என்று, அதனால் ஏதாவது? >> சரி. எனவே இந்த பிரச்சினை உள்ளது 487 00:40:22,590 --> 00:40:27,200 நாம் சரியாக ஒப்பிட்டு செய்கிறாய்? 488 00:40:27,200 --> 00:40:31,660 ஸ்டெல்லா? எந்த எண்ணங்கள்? 489 00:40:31,660 --> 00:40:38,110 [ஸ்டெல்லா] நிச்சயமாக இல்லை. >> நிச்சயமாக இல்லை. டேனியல்? எண்ணங்கள்? சரி. 490 00:40:38,110 --> 00:40:44,770 அதை நாம் நிரல் ஓடி போது என்ன இங்கே நடக்கிறது என்று மாறிவிடும் 491 00:40:44,770 --> 00:40:48,370 நீங்கள் முதன் முறையாக இந்த திட்டம், டேனியல், ஓடி போது நாம், நொடி தவறு தான் 492 00:40:48,370 --> 00:40:50,800 நீங்கள் எந்த கட்டளை வரி அளவுருக்களை கொடுத்தாய்? 493 00:40:50,800 --> 00:40:58,420 [டேனியல்] இல்லை >> இல்லை அந்த வழக்கில், argv மதிப்பு என்ன? [1]? 494 00:40:58,420 --> 00:41:00,920 >> இல்லை மதிப்பு உள்ளது. >> வலது. 495 00:41:00,920 --> 00:41:06,120 சரி, எந்த சரியான சரம் மதிப்பு உள்ளது. 496 00:41:06,120 --> 00:41:10,780 ஆனால் சில மதிப்பு உள்ளது. அங்கு சேமித்து விடும் என்று மதிப்பு என்ன? 497 00:41:10,780 --> 00:41:15,130 >> ஒரு குப்பை மதிப்பு? இந்த வழக்கில், அல்லது ஒரு குப்பை மதிப்பு அல்லது >>, 498 00:41:15,130 --> 00:41:19,930 argv வரிசை இறுதியில் எப்போதும் பூஜ்ய முடிவு. 499 00:41:19,930 --> 00:41:26,050 அதனால் என்ன உண்மையில் சேமிக்கப்படும் நடந்தது பூஜ்ய உள்ளது. 500 00:41:26,050 --> 00:41:30,810 வேறு வழி, அது மூலம் நினைத்து விட, இந்த தீர்ப்பதற்கு 501 00:41:30,810 --> 00:41:33,420 இது அச்சிடுகிறது முயற்சி ஆகும். 502 00:41:33,420 --> 00:41:35,880 நான், GDB பயன்படுத்தி பெரும் என்று கூறி அங்கு இந்த 503 00:41:35,880 --> 00:41:40,640 நீங்கள் விரும்பும் அனைத்து மாறிகள் அவுட் அச்சிட முடியாது, ஏனெனில், அனைத்து மதிப்புகள் 504 00:41:40,640 --> 00:41:43,230 இந்த எளிய-சிறந்த ப கட்டளையை பயன்படுத்தி. 505 00:41:43,230 --> 00:41:48,520 நான் ப தட்டச்சு மற்றும் அதனால் நான், ஒரு மாறி அல்லது ஒரு மாறி பெயரை மதிப்பு தட்டச்சு 506 00:41:48,520 --> 00:41:55,320 , argc சொல்ல, நான் argc 1 என்று பார்க்க. 507 00:41:55,320 --> 00:42:01,830 நான் argv அவுட் அச்சிட வேண்டும் என்றால் [0], நான் அப்படி செய்ய முடியாது. 508 00:42:01,830 --> 00:42:04,840 நாம் கண்டது போல, argv [0] எப்போதும் உங்கள் திட்டத்தின் பெயர், 509 00:42:04,840 --> 00:42:06,910 எப்போதும் இயக்க பெயர். 510 00:42:06,910 --> 00:42:09,740 இங்கே நீங்கள் முழு பாதை பெயர் இருக்கிறது பார்க்க. 511 00:42:09,740 --> 00:42:15,920 நான் வெளியே அச்சிட முடியாது argv [1] மற்றும் என்ன நடக்கிறது என்று பார்க்கலாம். 512 00:42:15,920 --> 00:42:20,890 >> இங்கே நாம் மாய மதிப்பு இந்த வகையான கிடைத்தது. 513 00:42:20,890 --> 00:42:23,890 நாம் இந்த 0x0 கிடைத்தது. 514 00:42:23,890 --> 00:42:27,850 நாம் அறுபதின்ம எண்கள் பற்றி பேசிய போது கால தொடக்கத்தில் நினைவிருக்கிறதா? 515 00:42:27,850 --> 00:42:34,680 அல்லது எண்ம 50 பிரதிநிதித்துவம் எப்படி pset 0 இறுதியில் அந்த சிறிய கேள்வி? 516 00:42:34,680 --> 00:42:39,410 நாம் சிஎஸ் உள்ள எண்ம எண்களை எழுத வழி, தான் நம்மை குழப்பி இல்லை 517 00:42:39,410 --> 00:42:46,080 தசம எண்கள், நாம் எப்போதும் 0x அவர்களை முன்னொட்டு ஆகும். 518 00:42:46,080 --> 00:42:51,420 இந்த 0x முன்னொட்டு எப்போதும் நான், ஒரு அறுபதின்ம எண் பின்வரும் எண் புரிந்து பொருள் 519 00:42:51,420 --> 00:42:57,400 ஒரு சரம் என, ஒரு தசம எண், ஒரு பைனரி எண். 520 00:42:57,400 --> 00:43:02,820 எண் 5-0 அறுபதின்ம சரியான எண்ணிக்கை என்பதால். 521 00:43:02,820 --> 00:43:06,240 அது தசம, 50 ல் ஒரு எண். 522 00:43:06,240 --> 00:43:10,050 இந்த நாங்கள் குழப்பநீக்கம் எப்படி இருக்கும். 523 00:43:10,050 --> 00:43:14,860 அதனால் 0 தசம இது 0x0 வழிமுறையாக அறுபதின்ம 0, பைனரி 0. 524 00:43:14,860 --> 00:43:17,030 அது மதிப்பு 0 தான். 525 00:43:17,030 --> 00:43:22,630 இந்த வெற்று நினைவகத்தில், உண்மையில், என்ன ஆகும் என்று கூறினார். 526 00:43:22,630 --> 00:43:25,940 வெற்று வெறும் 0 ஆகும். 527 00:43:25,940 --> 00:43:37,010 இங்கே, உறுப்பு [1] பூஜ்ய உள்ளது argv சேமிக்கப்படுகிறது. 528 00:43:37,010 --> 00:43:45,220 எனவே நாம் ஒரு வெற்று சரம் நமது "CS50 பாறைகள்" சரம் ஒப்பிட்டு முயற்சிக்கும். 529 00:43:45,220 --> 00:43:48,130 எனவே பூஜ்ய dereferencing, பூஜ்ய நேரத்தில் விஷயங்களை அணுக முயற்சி, 530 00:43:48,130 --> 00:43:55,050 அந்த பொதுவாக பிரிவு தவற்றை அல்லது நடக்கும் மற்ற கெட்ட ஒருவித ஏற்படுத்த போகிறோம். 531 00:43:55,050 --> 00:43:59,350 அது strcmp பார்க்கவும் இல்லை என்று திருப்பி 532 00:43:59,350 --> 00:44:04,340 நீங்கள் வெற்று என்று ஒரு மதிப்பு தேறிவிட்டேன் அல்லது இல்லையா. 533 00:44:04,340 --> 00:44:06,370 மாறாக, அது மேலே சென்று, அதன் வேலையை செய்ய முயற்சி 534 00:44:06,370 --> 00:44:14,640 அது தவறுகளை Seg என்றால், அது தவறுகளை Seg, அது உங்கள் பிரச்சினை. அதை சரி செய்ய செல்ல வேண்டும். 535 00:44:14,640 --> 00:44:19,730 உண்மையில் விரைவாக, நாம் இந்த பிரச்சனையை எப்படி சரி என்று? சார்லோட்? 536 00:44:19,730 --> 00:44:23,540 [சார்லோட்] நீங்கள் இருந்தால் பயன்படுத்தி பார்க்கலாம். 537 00:44:23,540 --> 00:44:32,240 நீங்கள் argv [1] பூஜ்ய இல்லை, == 0, பின்னர் 1 திரும்பி, அல்லது ஏதாவது [புரிந்து]. 538 00:44:32,240 --> 00:44:34,590 >> சரி. அதனால், நாம் பார்க்கவும் முடியாது, அது செய்ய ஒரு சிறந்த வழி 539 00:44:34,590 --> 00:44:39,230 நாம் strcmp செல்லும் போகிறீர்கள் மதிப்பு, argv [1], அது வெற்று? 540 00:44:39,230 --> 00:44:45,830 அது வெற்று என்றால், நாம், கருச்சிதைவு, சரியா சொல்ல முடியாது. 541 00:44:45,830 --> 00:44:49,450 >> இதை செய்ய ஒரு பொதுவான வழி argc மதிப்பு பயன்படுத்த வேண்டும். 542 00:44:49,450 --> 00:44:52,040 நீங்கள், முக்கிய ஆரம்பத்தில் இங்கு காணலாம் 543 00:44:52,040 --> 00:44:58,040 நாம், நாம் கட்டளை வரி அளவுருக்களை பயன்படுத்த போது நாம் பொதுவாக என்ன என்று முதலில் சோதனை தவிர்க்கப்பட்டன 544 00:44:58,040 --> 00:45:05,240 இது எங்கள் argc மதிப்பு நாம் எதிர்பார்க்க என்ன இல்லையா என்பதை சோதிக்க வேண்டும். 545 00:45:05,240 --> 00:45:10,290 இந்த வழக்கில், நாம், குறைந்த பட்சம் இரண்டு வாதங்களை எதிர்பார்த்து 546 00:45:10,290 --> 00:45:13,660 திட்டத்தின் பெயர் மற்றும் பிற ஒரு. 547 00:45:13,660 --> 00:45:17,140 நாங்கள் இங்கே இரண்டாவது வாதம் பயன்படுத்த பற்றி இருப்பதால். 548 00:45:17,140 --> 00:45:21,350 எனவே எங்கள் strcmp அழைப்பு முன், முன்பே சோதனை ஒருவித கொண்ட 549 00:45:21,350 --> 00:45:37,390 argv குறைந்தது 2 இல்லையா என்று சோதனைகள், இந்த விஷயத்தை அதே மாதிரி செய்ய வேண்டும். 550 00:45:37,390 --> 00:45:40,620 என்று மீண்டும் இயங்குவதாக செய்கிறது என்றால் நாம் பார்க்க முடியும். 551 00:45:40,620 --> 00:45:45,610 நீங்கள் எப்போதும் நன்றாக உள்ளது GDB, உள்ள உங்கள் நிரல் மீண்டும் முடியாது. 552 00:45:45,610 --> 00:45:49,310 நீங்கள் இயக்க முடியும், மற்றும் நீங்கள் உங்கள் நிரல் வாக்குவாதம் போகும்போது 553 00:45:49,310 --> 00:45:53,060 நீங்கள் GDB வரை துவக்க போது, நீங்கள் இயக்க அழைப்பு போது அவர்களை கடந்து இல்லை. 554 00:45:53,060 --> 00:45:57,120 அந்த வழியில் நீங்கள் வேறு வாதங்கள் ஒவ்வொரு முறை உங்கள் திட்டத்தை செயல்படுத்துவதன் வைத்திருக்க முடியும். 555 00:45:57,120 --> 00:46:08,080 எனவே ரன், அல்லது மீண்டும், நான் r தட்டச்சு செய்து, நாம் தட்டச்சு செய்தால் என்ன "ஹலோ" என்ன பார்க்க நாம். 556 00:46:08,080 --> 00:46:11,140 நீங்கள் மீண்டும் தொடக்கத்தில் இருந்து ஆரம்பிக்க வேண்டும் என்றால் அது எப்போதும் நீங்கள் கேட்க வேண்டும். 557 00:46:11,140 --> 00:46:17,490 பொதுவாக, நீங்கள் மீண்டும் ஆரம்பத்தில் இருந்து ஆரம்பிக்க வேண்டும். 558 00:46:17,490 --> 00:46:25,010 இந்த கட்டத்தில், அதை மீண்டும் மீண்டும், அதை அச்சிடுகிறது 559 00:46:25,010 --> 00:46:28,920 நாம் வாதம் ஹலோ கொண்டு, buggy1 இயங்கும் என்று திட்டம், 560 00:46:28,920 --> 00:46:32,720 அது இந்த தரத்தை அவுட் அச்சிடுகிறது; இது சோகமான முகத்துடன் "நீங்கள், ஒரு டி கிடைக்கும்", என்கிறார். 561 00:46:32,720 --> 00:46:37,610 ஆனால் நாங்கள் தவறு Seg இல்லை. அந்த செயல்பாடு பொதுவாக வெளியேறிவிட்டது கூறினார். 562 00:46:37,610 --> 00:46:39,900 அதனால் நல்ல தெரிகிறது. 563 00:46:39,900 --> 00:46:43,050 எந்த நொடி தவறு, நாம், அது கடந்த செய்யப்பட்ட 564 00:46:43,050 --> 00:46:48,190 உண்மையில் நாம் பெறுவது என்று நொடி தவறு பிழை போல அது தோன்றுகிறது. 565 00:46:48,190 --> 00:46:51,540 துரதிருஷ்டவசமாக, அதை நாம் ஒரு டி வருகிறோம் என்று சொல்கிறது 566 00:46:51,540 --> 00:46:54,090 >> நாம் திரும்பி சென்று குறியீடு பார்த்து அங்கு என்ன நடக்கிறது என்று பார்க்கலாம் 567 00:46:54,090 --> 00:46:57,980 என்ன கண்டுபிடிக்க - அதை நாம் ஒரு டி என்று சொல்வதை ஏன் 568 00:46:57,980 --> 00:47:03,690 இந்த printf நீங்கள் ஒரு டி கிடைத்தது என்று பார்க்கலாம், இங்கே 569 00:47:03,690 --> 00:47:08,540 நாம் பட்டியல் தட்டச்சு நீங்கள் தட்டச்சு பட்டியலை வைத்து போல், அது, உங்கள் திட்டம் மூலம் கீழே தேடி கொண்டிருக்கிறான் 570 00:47:08,540 --> 00:47:10,940 அது உங்கள் திட்டத்தின் முதல் சில வரிகளை காண்பிக்கிறேன். 571 00:47:10,940 --> 00:47:15,450 அது அடுத்த சில வரிகளில், அடுத்த துண்டின் அடுத்த துண்டின் காண்பிக்கிறேன். 572 00:47:15,450 --> 00:47:18,240 அது கீழே செல்ல முயற்சி வைக்கிறேன். 573 00:47:18,240 --> 00:47:21,180 இப்போது நாம் "எண் 16 எல்லைக்கு வெளியே வரிசையாக." கிடைக்கும் 574 00:47:21,180 --> 00:47:23,940 இது மட்டும் 15 வரிசைகள் ஏனெனில். 575 00:47:23,940 --> 00:47:30,310 நீங்கள் இந்த புள்ளியை பெற உங்கள் "நான் என்ன செய்ய வேண்டும்?", என்று இருந்தால் நீங்கள் உதவி கட்டளையை பயன்படுத்தலாம். 576 00:47:30,310 --> 00:47:34,340 உதவி மற்றும் அது ஒரு கட்டளை பெயரை பயன்படுத்த. 577 00:47:34,340 --> 00:47:36,460 நீங்கள் GDB எங்களுக்கு பொருட்களை அனைத்து இந்த வகையான கொடுக்கிறது பார்க்க. 578 00:47:36,460 --> 00:47:43,870 அது "இல்லை வாதத்தை கொண்டு, முந்தைய பட்டியல் பிறகு அல்லது பத்து வரிகள் பட்டியலிடுகிறது, என்கிறார். 579 00:47:43,870 --> 00:47:47,920 பட்டியல் - முன் பத்து வரிகளில் பட்டியலிடுகிறது - " 580 00:47:47,920 --> 00:47:52,960 எனவே பட்டியலில் கழித்து பயன்படுத்தி முயற்சி செய்வோம். 581 00:47:52,960 --> 00:47:57,000 மற்றும் அந்த 10 வரிகளுக்கு முந்தைய பட்டியலிடுகிறது; நீங்கள் பட்டியல் சற்று சுற்றி விளையாட முடியும். 582 00:47:57,000 --> 00:48:02,330 நீங்கள் பட்டியல், பட்டியல் செய்ய முடியும் - நீங்கள் கூட, பட்டியலில் 8 போன்ற, பட்டியலிட பல கொடுக்க முடியும் 583 00:48:02,330 --> 00:48:07,500 அது வரி 8 சுற்றி 10 வரிகளை பட்டியலிட வேண்டும். 584 00:48:07,500 --> 00:48:10,290 நீங்கள் வேறு ஒரு எளிய கிடைத்துவிட்டது மற்றும் நீ இங்கே என்ன நடக்கிறது பார்க்கலாம். 585 00:48:10,290 --> 00:48:13,980 நீங்கள் CS50 பாறைகள் தட்டச்சு செய்தால், அது "நீங்கள் ஒரு ஏ கிடைக்கும்" அவுட் அச்சிடுகிறது 586 00:48:13,980 --> 00:48:16,530 இல்லையெனில் "நீ ஒரு டி கிடைக்கும்" அவுட் அச்சிடுகிறது 587 00:48:16,530 --> 00:48:23,770 Bum நா r நகரம். எல்லாம் சரி. ஆமாம்? 588 00:48:23,770 --> 00:48:26,730 >> [டேனியல்] நான் மேற்கோள் இல்லாமல் CS50 பாறைகள் செய்து முயன்ற போது, 589 00:48:26,730 --> 00:48:29,290 அது "நீங்கள் ஒரு டி கிடைக்கும்" என்கிறார் 590 00:48:29,290 --> 00:48:32,560 நான் வேலை பெற மேற்கோள் தேவை; அது ஏன்? 591 00:48:32,560 --> 00:48:38,490 >> சரி. அது மாறிவிடும் போது - இந்த மற்றொரு வேடிக்கை சிறு சிறு துணுக்கு ஆகும் - 592 00:48:38,490 --> 00:48:47,900 நாம் அது இயக்க நீங்கள், நிரலை நாம் CS50 பாறைகள் தட்டச்சு போது, 593 00:48:47,900 --> 00:48:50,800 போல், டேனியல் அவர் கூறினார், நீங்கள் Enter விசையை 594 00:48:50,800 --> 00:48:52,870 அது இன்னும் ஒரு டி கிடைக்கும் நிதி 595 00:48:52,870 --> 00:48:55,580 மற்றும் கேள்வி, ஏன் இந்த உள்ளது? 596 00:48:55,580 --> 00:49:02,120 அது நம் முனையம் மற்றும் GDB இருவரும் இந்த இரண்டு தனித்தனி விவாதங்கள் இட என்று கூறினார். 597 00:49:02,120 --> 00:49:04,800 என குறிப்பிட்டதாக என்று ஒரு இடம், இருக்கும் போது, ஏனெனில் 598 00:49:04,800 --> 00:49:08,730 முதல் வாதம் முடிவுக்கு வந்தது; அடுத்த வாதம் தொடங்க உள்ளது. 599 00:49:08,730 --> 00:49:13,260 இரண்டு அந்த இணைக்க வழி, அல்லது மன்னிக்கவும், ஒரு விவாதம், 600 00:49:13,260 --> 00:49:18,510 மேற்கோள் பயன்படுத்த வேண்டும். 601 00:49:18,510 --> 00:49:29,560 நாம் மேற்கோள் அதை வைத்து மீண்டும் இயக்க வேண்டும், அதனால் இப்போது, நாம் ஒரு ஏ கிடைக்கும் 602 00:49:29,560 --> 00:49:38,780 அதனால் தான் (உந்து வண்டியை) மீண்டும் நல்ல நிலைக்கு கொண்டு வா, இல்லை மேற்கோள், CS50 மற்றும் பாறைகள் இரண்டு தனி வாதங்கள் என அலச வேண்டும். 603 00:49:38,780 --> 00:49:45,320 மேற்கோள்கள், அது முற்றிலும் ஒரு வாதம் என அலச வேண்டும். 604 00:49:45,320 --> 00:49:53,070 >> நாம் ஒரு இடைவேளைநேரத்தை இந்த பார்க்கலாம். 605 00:49:53,070 --> 00:49:54,920 இதுவரை நாம் இயங்குவதாக, அது இயங்கும் செய்யப்பட்ட 606 00:49:54,920 --> 00:49:58,230 அல்லது அது தவறு அல்லது வெற்றி பிழை Seg வரை 607 00:49:58,230 --> 00:50:05,930 அல்லது அது வெளியேறிவிட்டது மற்றும் அனைத்து நன்றாக உள்ளது வரை. 608 00:50:05,930 --> 00:50:08,360 சில நேரங்களில் இந்த அவசியம் மிகவும் பயனுள்ளதாக அல்ல 609 00:50:08,360 --> 00:50:11,840 நீங்கள் உங்கள் நிரல் பிழை உள்ளது, ஆனால் அது ஒரு அடுக்கு தவறு காரணமாக இல்லை. 610 00:50:11,840 --> 00:50:16,950 இது உங்கள் நிறுத்த திட்டம் அல்லது அப்படி எதுவும் காரணமாக இல்லை. 611 00:50:16,950 --> 00:50:20,730 உங்கள் திட்டத்தை ஒரு குறிப்பிட்ட புள்ளியில் இடைநிறுத்தப்பட்டு GDB பெற வழி 612 00:50:20,730 --> 00:50:23,260 அமைக்கப்படாத உள்ளது. 613 00:50:23,260 --> 00:50:26,520 நீங்கள் ஒரு செயல்பாடு பெயர் ஒரு இடைவேளைநேரத்தை மூலம் இதை செய்ய முடியும் 614 00:50:26,520 --> 00:50:30,770 அல்லது நீங்கள் குறியீடு ஒரு குறிப்பிட்ட வரியில் அமைக்கப்படாத முடியும். 615 00:50:30,770 --> 00:50:34,450 நினைவில் எளிதாக, - நான், செயல்பாடு பெயர்கள் முறிவுப்புள்ளிகளை அமைக்க விரும்புகிறீர்களா 616 00:50:34,450 --> 00:50:37,700 நீங்கள் உண்மையில் சென்று சிறிது உங்கள் மூல குறியீடு மாற்ற வேண்டும், 617 00:50:37,700 --> 00:50:42,020 பின்னர் உங்கள் இடைவேளைநேரத்தை உண்மையில் உங்கள் குறியீடு உள்ள அதே இடத்தில் இருக்கும். 618 00:50:42,020 --> 00:50:44,760 அதேசமயம் நீங்கள் வரிசை எண்களை பயன்படுத்தி, மற்றும் வரிசை எண்களை மாற்ற வேண்டும் 619 00:50:44,760 --> 00:50:51,740 நீங்கள் சில குறியீடு சேர்க்க அல்லது நீக்க ஏனெனில், பிறகு உங்கள் முறிவுப்புள்ளிகளை அனைத்து முற்றிலும் வரை ஸ்க்ரீவ்டு. 620 00:50:51,740 --> 00:50:58,590 நான் மிகவும் பொதுவான விஷயங்கள் ஒரு முக்கிய செயல்பாடு ஒரு அமைக்கப்படாத. 621 00:50:58,590 --> 00:51:05,300 பெரும்பாலும் நான் GDB வரை துவக்க வேண்டும், நான் Enter விசையை, ப முக்கிய தட்டச்சு செய்யலாம், மற்றும் அந்த அமைக்கப்படாத வேண்டும் 622 00:51:05,300 --> 00:51:10,630 நான் சொல்வது எந்த முக்கிய செயல்பாடு, "விரைவில் நீங்கள் இயங்கும் தொடங்கும் என திட்டம் இடைநிறுத்தம்" 623 00:51:10,630 --> 00:51:17,960 அந்த வகையில், நான் CS50 பாறைகள், என்று, என் நிரலை போது இரண்டு வாதங்கள் 624 00:51:17,960 --> 00:51:24,830 மேலும், Enter விசையை, இது முக்கிய செயல்பாடு கிடைத்தால் அது முதல் வரியில் நிறுத்தப்படும் 625 00:51:24,830 --> 00:51:30,620 இது strcmp செயல்பாட்டை மதிப்பீடு வலது முன். 626 00:51:30,620 --> 00:51:34,940 >> நான் இடைநிறுத்தப்பட்டுள்ளது நான் இருந்து, இப்போது நான் சுற்றி mucking மற்றும் என்ன நடக்கிறது தொடங்களாம் 627 00:51:34,940 --> 00:51:40,250 என் நிரலை கடந்து என்று பல்வேறு மாறிகளை அனைத்து. 628 00:51:40,250 --> 00:51:43,670 இங்கே நான் argc அவுட் அச்சிட்டு என்ன நடக்கிறது பார்க்கலாம். 629 00:51:43,670 --> 00:51:50,030 அது 3 வெவ்வேறு மதிப்புகள் கிடைத்தது தான் காரணம் argc, 3 என்று பார்க்க. 630 00:51:50,030 --> 00:51:54,060 இது திட்டத்தின் பெயர் இருக்கிறது, இது முதல் வாதம் மற்றும் இரண்டாவது வாதம் இருக்கிறது. 631 00:51:54,060 --> 00:52:09,330 நாம் argv பார்த்து அந்த அவுட் அச்சிட முடியாது [0], argv [1], மற்றும் argv [2]. 632 00:52:09,330 --> 00:52:12,030 இந்த strcmp அழைப்பு தோத்துடுவாங்க ஏன் இப்போது நீங்கள், பார்க்க முடியும் 633 00:52:12,030 --> 00:52:21,650 நீங்கள் இரண்டு தனி வாதங்களை எடுத்து CS50 மற்றும் பாறைகள் பிரிந்து என்று பார்க்க காரணம். 634 00:52:21,650 --> 00:52:27,250 நீங்கள் ஒரு இடைவேளைநேரத்தை ஹிட் செய்த இந்த கட்டத்தில், உங்கள் திட்டம் மூலம் நடவடிக்கை தொடரலாம் 635 00:52:27,250 --> 00:52:32,920 வரி மூலம் வரி, மீண்டும் உங்கள் திட்டத்தை தொடங்கி எதிர்க்கும். 636 00:52:32,920 --> 00:52:35,520 நீங்கள் மீண்டும் உங்கள் திட்டத்தை தொடங்க விரும்பவில்லை என்றால், இங்கே இருந்து தொடர்ந்து 637 00:52:35,520 --> 00:52:41,970 நீங்கள் தொடர்க கட்டளையை பயன்படுத்தலாம் மற்றும் தொடர்ந்து முடிவுக்கு நிரலை இயக்க முடியும். 638 00:52:41,970 --> 00:52:45,010 அதை இங்கே போல. 639 00:52:45,010 --> 00:52:54,880 நான் திட்டம், CS50 பாறைகள் மீண்டும் எனினும், இது, மீண்டும் என் இடைவேளைநேரத்தை பலி 640 00:52:54,880 --> 00:52:59,670 இந்த நேரத்தில், நான், நிரல் மற்ற அனைத்து வழிகளிலும் தான் செல்ல விரும்பவில்லை 641 00:52:59,670 --> 00:53:08,040 நான் கூட, n சுருக்கியது இது அடுத்த கட்டளையை பயன்படுத்த முடியாது. 642 00:53:08,040 --> 00:53:12,960 இந்த வரி மூலம் நிரல் வரி மூலம் செல்லும். 643 00:53:12,960 --> 00:53:17,530 விஷயங்களை இயக்க எனவே நீங்கள் விஷயங்களை மேம்படுத்தப்பட்டது செய்து போல்,,, மாறிகளின் மாற்றம் பார்க்கலாம். 644 00:53:17,530 --> 00:53:21,550 இது மிகவும் நன்றாக இருக்கிறது. 645 00:53:21,550 --> 00:53:26,570 மற்ற குளிர் விஷயம், மாறாக மீண்டும் மேல் மற்றும் மேல் அதே கட்டளையை மீண்டும் விட 646 00:53:26,570 --> 00:53:30,670 நீங்கள் Enter விசையை என்றால் - இங்கே நான் எதையும் தட்டச்சு இல்லை பார்க்க - 647 00:53:30,670 --> 00:53:33,780 நான் Enter விசையை என்றால், அது, முந்தைய கட்டளையை மீண்டும் 648 00:53:33,780 --> 00:53:36,900 அல்லது முந்தைய GDB கட்டளையை நான் உள்ளே போட வேண்டும் என்று 649 00:53:36,900 --> 00:53:56,000 நான் உள்ளிடவும் தாக்கியதால் வைத்திருக்க முடியும் மற்றும் வரி மூலம் என் குறியீடு வரி மூலம் நுழைவதை வைக்கிறேன். 650 00:53:56,000 --> 00:53:59,310 நான் உங்களுக்கு மற்ற தரமற்ற திட்டங்கள் அதே பாருங்கள் செல்ல ஊக்குவிக்க வேண்டும். 651 00:53:59,310 --> 00:54:01,330 நாம் அனைவரும் இன்று பகுதியில் மூலம் பெற நேரமில்லை. 652 00:54:01,330 --> 00:54:05,890 மூல குறியீடு உள்ளது, எனவே நீங்கள் என்ன நடக்கிறது பார்க்க என்ன செய்ய முடியும் 653 00:54:05,890 --> 00:54:07,730 நீங்கள் உண்மையில் சிக்கிவிடும் என்றால் திரைக்கு பின்னால், 654 00:54:07,730 --> 00:54:11,940 ஆனால் மிக குறைந்த பட்சம், தான், GDB வரை துவக்க பயிற்சி 655 00:54:11,940 --> 00:54:13,940 அதை நீங்கள் முறித்து வரை, இயங்குவதாக 656 00:54:13,940 --> 00:54:18,260 ,, backtrace பெற்று விபத்தில் இருந்து செயல்பட என்ன கண்டறிவதன் 657 00:54:18,260 --> 00:54:24,450 என்ன வரி, சில மாறி மதிப்புகள் அச்சிடுகிறது, இருந்தது 658 00:54:24,450 --> 00:54:30,140 என்று உண்மையில் நீங்கள் முன்னோக்கி செல்லும் உதவும் என்பதால் தான் நீங்கள், அது ஒரு உணர்வு கிடைக்கும். 659 00:54:30,140 --> 00:54:36,340 இந்த கட்டத்தில், நாங்கள் உங்களுக்கு q விட்டு பயன்படுத்தி அல்லது அவை, GDB வெளியே விட்டு செல்கிறோம். 660 00:54:36,340 --> 00:54:40,460 உங்கள் நிரல் இன்னும் இயங்கும் நடுவில் உள்ளது, அது வெளியேறிவிட்டது என்றால், 661 00:54:40,460 --> 00:54:43,510 அது எப்போதும் நீங்கள் கேட்க வேண்டும், "நீங்கள் உண்மையில் வெளியேற வேண்டுமா?" 662 00:54:43,510 --> 00:54:48,770 நீ ஆம் அடிக்க முடியும். 663 00:54:48,770 --> 00:54:55,250 >> இப்போது நாம் பூனை திட்டம் இது நாம் அடுத்த பிரச்சனை, பார்க்க போகிறோம். 664 00:54:55,250 --> 00:54:59,880 நீங்கள் திருப்பி மற்றும் குழாய்கள் மீது குறுகிய பார்க்கலாம் என்றால், நீங்கள் டாமி இந்த திட்டத்தை பயன்படுத்துகிறது என்று பார்ப்போம் 665 00:54:59,880 --> 00:55:07,540 அந்த அடிப்படையில் திரையில் ஒரு கோப்பை அனைத்து வெளியீடு அச்சிடுகிறது. 666 00:55:07,540 --> 00:55:12,660 நான் பூனை ரன் இருந்தால், இந்த பயன்பாட்டிற்கான உண்மையில் ஒரு உள்ளமைக்கப்பட்ட நிரல், 667 00:55:12,660 --> 00:55:16,860 நீங்கள் மேக்ஸின் இருந்தால் நீங்கள் முனையத்தில் திறந்து என்றால், நீங்கள், உங்கள் மேக் இந்த செய்ய முடியும். 668 00:55:16,860 --> 00:55:25,630 நாம் - பூனை, தான், cp.c சொல்கிறேன், மற்றும் Enter விசையை. 669 00:55:25,630 --> 00:55:29,640 இந்த என்ன, நாம் சற்று மேலே நாம் வரி ஓடி அங்கு பார்க்க 670 00:55:29,640 --> 00:55:40,440 அல்லது நாம் cat கட்டளையை ஓடி, அது உண்மையில் நம் திரையில் cp.c உள்ளடக்கங்களை அச்சு. 671 00:55:40,440 --> 00:55:44,140 நாங்கள் மீண்டும் இயக்க முடியும் மற்றும் நீங்கள் ஒன்றாக பல கோப்புகளை வைக்க முடியும். 672 00:55:44,140 --> 00:55:49,880 எனவே, நீங்கள் பூனை cp.c செய்ய முடியும், அதன் பிறகு நாம் cat.c கோப்பு ஒன்று சேர் முடியும் 673 00:55:49,880 --> 00:55:53,250 இது, நாம் பற்றி எழுத போகிறீர்கள் நிரல் 674 00:55:53,250 --> 00:55:58,140 அது நம் திரையில் மீண்டும் மீண்டும் இரண்டு கோப்புகளை அச்சிட வேண்டும். 675 00:55:58,140 --> 00:56:05,490 நாம் சற்று மேலே என்றால், நாம் பார்க்க வேண்டும் என்று நாம் இந்த பூனை cp.c, cat.c, ஓடி போது 676 00:56:05,490 --> 00:56:17,110 முதலில் cp கோப்பு அச்சு, மற்றும் அது கீழே, அதை சரி கீழே இங்கே cat.c கோப்பு அச்சு. 677 00:56:17,110 --> 00:56:19,650 நாம் நமது அடி ஈரமான பெற இந்த பயன்படுத்த போகிறோம். 678 00:56:19,650 --> 00:56:25,930 முனையத்தில் எளிய அச்சிடும் சுற்றி விளையாட, அந்த வேலை எப்படி பார்க்க. 679 00:56:25,930 --> 00:56:39,170 நீங்கள் gedit cat.c மூலம் திறந்து இருந்தால், Enter விசையை 680 00:56:39,170 --> 00:56:43,760 நீங்கள் எழுத போகிறீர்கள் என்று திட்டம் பார்க்க முடியும். 681 00:56:43,760 --> 00:56:48,980 நாம் இந்த நல்ல கொதிகலத்தகடு சேர்த்தேன், நாம் என்று தட்டச்சு நேரம் செலவிட இல்லை அதனால். 682 00:56:48,980 --> 00:56:52,310 நாங்கள் உள்ளே கடந்து வாதங்கள் எண்ணை சரிபார்த்து 683 00:56:52,310 --> 00:56:56,910 நாம் ஒரு நல்ல பயன்பாடு செய்தியை அச்சிட. 684 00:56:56,910 --> 00:57:00,950 >> இந்த, மீண்டும், போன்ற நாம் பற்றி பேசி கொண்டிருக்கிறேன் என்று, தான் வகை 685 00:57:00,950 --> 00:57:04,490 இது கிட்டத்தட்ட தசை நினைவகம் போல. 686 00:57:04,490 --> 00:57:07,190 ஒரு பொருள் அதே மாதிரி செய்து வைக்க நினைவில் 687 00:57:07,190 --> 00:57:11,310 எப்போதும் உங்களுக்கு பயனுள்ளதாக செய்தி ஒருவித அச்சிடுகிறது 688 00:57:11,310 --> 00:57:17,670 அதனால் மக்கள் உங்கள் நிரலை இயக்க எப்படி தெரியும். 689 00:57:17,670 --> 00:57:21,630 பூனை, அது மிகவும் எளிது; நாங்கள் வேறு வாதங்கள் எல்லாம் செல்ல போகிறோம் 690 00:57:21,630 --> 00:57:24,300 என்று எங்கள் திட்டம் நிறைவேற்றப்பட்டன, மற்றும் நாம் அச்சிட போகிறோம் 691 00:57:24,300 --> 00:57:29,950 ஒரு நேரத்தில் திரையில் ஒரு தங்கள் உள்ளடக்கங்களை. 692 00:57:29,950 --> 00:57:35,670 திரையில் கோப்புகளை அவுட் அச்சிட பொருட்டு, நாம் மிகவும் போன்ற ஏதாவது செய்ய போகிறோம் 693 00:57:35,670 --> 00:57:38,120 நாம் வினாடி வினா இறுதியில் என்ன செய்தார். 694 00:57:38,120 --> 00:57:45,350 நிரல் அமர்த்த அந்த வினாடி வினா, இறுதியில், நாம், ஒரு கோப்பை திறக்க வேண்டும் 695 00:57:45,350 --> 00:57:48,490 பின்னர் நாம் அதனை அச்சிட வேண்டும். 696 00:57:48,490 --> 00:57:54,660 இந்த வழக்கில், நாம் ஒரு கோப்பை திறக்க போகிறோம், நாம் பதிலாக அதை படிக்க போகிறோம். 697 00:57:54,660 --> 00:58:00,630 நாம் அதற்கு பதிலாக ஒரு கோப்பு பற்றிய, அச்சிட போகிறோம், நாம் திரையில் அச்சிட போகிறோம். 698 00:58:00,630 --> 00:58:05,830 எனவே நீங்கள் அனைத்து printf முன்பு செய்த திரையில் அச்சிடுதல். 699 00:58:05,830 --> 00:58:08,290 எனவே அதுவும் ஒரு பைத்தியம் இல்லை. 700 00:58:08,290 --> 00:58:12,190 ஆனால் ஒரு கோப்பை படித்து விசித்திரமான வகையாக. 701 00:58:12,190 --> 00:58:17,300 நாம் ஒரு நேரத்தில் ஒரு சிறிது மூலம் செல்லலாம். 702 00:58:17,300 --> 00:58:20,560 நீங்கள் உங்கள் வினாடி வினா, பிரச்சனை 33, என்று கடந்த பிரச்சினை மீண்டும் சென்றால் 703 00:58:20,560 --> 00:58:27,280 நாம் இங்கே செய்ய போகிறோம் என்று முதல் வரி, கோப்பு திறந்து, நாங்கள் அங்கு என்ன செய்தது போல் இருக்கும். 704 00:58:27,280 --> 00:58:36,370 ஸ்டெல்லா எனவே, நாம் ஒரு கோப்பு திறக்கும் போது, அந்த வரி இருக்கிறதா? 705 00:58:36,370 --> 00:58:47,510 [ஸ்டெல்லா] மூலதன FILE *, கோப்பு - >> சரி. >> - Fopen சமமாக இருக்கும். >> ஆமாம். 706 00:58:47,510 --> 00:58:55,980 இந்த வழக்கில் இது? அதை கருத்தில் தான். 707 00:58:55,980 --> 00:59:06,930 >> இது கருத்து என்ன? argv [நான்] மற்றும் r? 708 00:59:06,930 --> 00:59:11,300 சரியாக >>. வலது. அதனால் ஸ்டெல்லா முற்றிலும் சரி. 709 00:59:11,300 --> 00:59:13,720 இந்த வரி போல் உள்ளது. 710 00:59:13,720 --> 00:59:19,670 நாம், ஒரு கோப்பு ஸ்ட்ரீம் மாறுபாடு ஒரு கோப்பு * அதை சேமிக்க வேண்டும், எனவே நீங்கள் அனைத்து தொப்பிகள், 711 00:59:19,670 --> 00:59:25,720 கோப்பு, *, மற்றும் இந்த மாறி பெயரை கோப்பு இருக்கும். 712 00:59:25,720 --> 00:59:32,250 நாம் எது அது அழைப்பு முடியும். நாம் விரும்பினால் என்ன, அதை first_file, அல்லது file_i அழைக்க முடியும். 713 00:59:32,250 --> 00:59:37,590 பின்னர் கோப்பு பெயர் இந்த நிரல் வரியில் உள்ள நிறைவேற்றப்பட்டது. 714 00:59:37,590 --> 00:59:44,450 அது argv சேமிக்கப்பட்டுள்ள [நான்,] மற்றும் நாம் படிக்க முறையில் இந்த கோப்பு திறக்க போகிறோம். 715 00:59:44,450 --> 00:59:48,100 நாம் கோப்பை திறந்து நீங்கள் இப்போது, என்ன நாம் எப்போதும் செய்ய நினைவில் வேண்டும் என்று விஷயம் 716 00:59:48,100 --> 00:59:52,230 நாம் ஒரு கோப்பு திறந்து எப்போது? அது மூட. 717 00:59:52,230 --> 00:59:57,220 மிஸ்ஸி எனவே, எப்படி நாம் ஒரு கோப்பு மூட? 718 00:59:57,220 --> 01:00:01,020 [மிஸ்ஸி] fclose (கோப்பு) >> fclose (கோப்பு). சரியாக. 719 01:00:01,020 --> 01:00:05,340 பெரிய. சரி. நாங்கள் இங்கே கருத்து செய்ய இந்த பார்த்து, இருந்தால் 720 01:00:05,340 --> 01:00:11,940 அது "திறந்த argv [i] மற்றும் stdout அதன் உள்ளடக்கங்களை அச்சிட.", என்கிறார் 721 01:00:11,940 --> 01:00:15,460 >> நிலையான அவுட் வித்தியாசமான பெயர். Stdout என்று மட்டும் நம் வழி 722 01:00:15,460 --> 01:00:22,880 நாம் முனைய அது அச்சிட வேண்டும்; நாங்கள் நிலையான வெளியீடு ஸ்ட்ரீம் அதை அச்சிட வேண்டும். 723 01:00:22,880 --> 01:00:26,450 நாம் உண்மையில் சரியான இங்கே இந்த விடுபட முடியும். 724 01:00:26,450 --> 01:00:36,480 நான் அதை நகலெடுத்து என்று நாம் என்ன தான் இருந்து ஒட்டுவதற்கு போகிறேன். 725 01:00:36,480 --> 01:00:41,290 இந்த கட்டத்தில், இப்போது நாம் கொஞ்சம் மூலம் கோப்பு பிட் படிக்க வேண்டும். 726 01:00:41,290 --> 01:00:46,300 நாம் படித்து கோப்புகளை வழிகளில் இரண்டு விவாதிக்கப்பட்டது. 727 01:00:46,300 --> 01:00:51,830 இது தான் இதுவரை உங்கள் அபிமான இருக்கும்? 728 01:00:51,830 --> 01:00:57,960 எந்த வழிகளில் நீங்கள் பார்த்த அல்லது கோப்புகள் படிக்க, நினைவிருக்கிறதா? 729 01:00:57,960 --> 01:01:04,870 [டேனியல்] fread? >> Fread? எனவே fread ஒன்றாகும். ஜிம்மி, நீங்கள் எந்த மற்றவர்களுக்கு தெரியுமா? 730 01:01:04,870 --> 01:01:12,150 [ஜிம்மி] இல்லை >> சரி. இல்லை. சார்லோட்? அலெக்சாண்டர்? எந்த மற்றவர்களுக்கு? சரி. 731 01:01:12,150 --> 01:01:20,740 அதனால் மற்ற ஒன்றை நாம் நிறைய பயன்படுத்த வேண்டும் என்று, ஒரு fgetc இருக்கும். 732 01:01:20,740 --> 01:01:26,410 மேலும் fscanf இல்லை; நீங்கள் இங்கே ஒரு முறை பார்க்க? 733 01:01:26,410 --> 01:01:29,170 அவர்கள் அனைத்து f தொடங்கும். ஒரு கோப்பு எதுவும். 734 01:01:29,170 --> 01:01:35,260 Fread, fgetc, fscanf உள்ளது. இந்த வாசிப்பு செயல்பாடுகள் அனைத்தும். 735 01:01:35,260 --> 01:01:49,120 நாம் fwrite வேண்டும் எழுதியதற்காக, நாம் பதிலாக fgetc என்ற fputc வேண்டும். 736 01:01:49,120 --> 01:01:58,250 நாங்கள் fprintf நாம் வினாடி வினா பார்த்த மாதிரி. 737 01:01:58,250 --> 01:02:01,680 இந்த ஒரு கோப்பை படித்து அடங்கும் என்று ஒரு பிரச்சனை, முதல் 738 01:02:01,680 --> 01:02:04,940 இந்த மூன்று செயல்பாடுகளை பயன்படுத்த போகிறோம். 739 01:02:04,940 --> 01:02:10,890 நாம் இங்கே இந்த செயல்பாடுகளை குறைத்து பயன்படுத்த போவதில்லை. 740 01:02:10,890 --> 01:02:14,880 இந்த செயல்பாடுகள் அனைத்தும் தரமான நான் / ஓ நூலகம் காணப்படுகின்றன. 741 01:02:14,880 --> 01:02:17,510 இந்த திட்டத்தின் முதல் பாருங்கள், அப்படி என்றால் 742 01:02:17,510 --> 01:02:24,110 நாம் ஏற்கனவே நிலையான I / O நூலகத்தின் தலைப்பு கோப்பு சேர்த்தேன் என்று பார்க்கலாம். 743 01:02:24,110 --> 01:02:27,120 நாம் கண்டுபிடிக்க வேண்டும் என்றால், அது நாம் பயன்படுத்த வேண்டும், 744 01:02:27,120 --> 01:02:29,690 நாம் எப்போதும் man பக்கங்களை திறந்து கொள்ளலாம். 745 01:02:29,690 --> 01:02:34,350 எனவே மனிதன் stdio தட்டச்சு 746 01:02:34,350 --> 01:02:43,180 மற்றும் சி உள்ள stdio உள்ளீடு மற்றும் வெளியீடு செயல்பாடுகளை பற்றி படிக்க 747 01:02:43,180 --> 01:02:49,870 நாம் ஏற்கனவே ஓ, ஆனால் பார்க்க முடியாது. இது fgetc சொல்லி தான், அது fputc குறிப்பிட்டார். 748 01:02:49,870 --> 01:02:57,220 எனவே நீங்கள் fgetc, சற்று கீழே தோண்டி மற்றும் பார், சொல்ல முடியாது 749 01:02:57,220 --> 01:03:00,060 அதன் மனிதன் பக்கம் பாருங்கள். 750 01:03:00,060 --> 01:03:03,430 நீங்கள் அதை மற்ற செயல்பாடுகளை மொத்தமாக சேர்ந்து செல்லும் காண முடியும்: 751 01:03:03,430 --> 01:03:12,640 fgetc, fgets, getc, getchar, பெறுகிறார், ungetc, மற்றும் பாத்திரங்கள் மற்றும் சரங்களின் அதன் உள்ளீடு. 752 01:03:12,640 --> 01:03:19,180 இந்த, நாங்கள் நிலையான உள்ளீட்டு கோப்புகளை இருந்து பாத்திரங்கள் மற்றும் சரங்களை படிக்க எப்படி இருக்கும் 753 01:03:19,180 --> 01:03:21,990 இது பயனர் இருந்து அடிப்படையில். 754 01:03:21,990 --> 01:03:24,780 இந்த உண்மையான சி அதை செய்ய எப்படி இருக்கும் 755 01:03:24,780 --> 01:03:30,850 இந்த GetString மற்றும் GetChar செயல்பாடுகளை பயன்படுத்தி 756 01:03:30,850 --> 01:03:36,840 நாம் CS50 நூலகத்திலிருந்து பயன்படுத்தப்படும் என்று. 757 01:03:36,840 --> 01:03:39,710 நாம் வழிகளில் ஒரு ஜோடி இந்த பிரச்சனை செய்ய போகிறோம் 758 01:03:39,710 --> 01:03:43,430 அதனால் நீங்கள் அதை செய்து இரண்டு வெவ்வேறு வழிகளில் காண முடியும். 759 01:03:43,430 --> 01:03:48,490 Fread டேனியல் குறிப்பிட்டுள்ளார் அந்த செயல்பாடு மற்றும் fgetc இருவரும் அதை செய்ய நல்ல வழிகள் உள்ளன. 760 01:03:48,490 --> 01:03:53,790 அது மட்டும் இல்லை, ஏனெனில் நீங்கள் பார்க்க நான்,,, fgetc ஒரு சிறிய எளிதாக நினைக்கிறேன் 761 01:03:53,790 --> 01:03:59,660 ஒரு வாதம், நாம் தன்மையை வாசிக்க முயற்சிக்கும் கோப்பு *, 762 01:03:59,660 --> 01:04:02,740 அதன் பதிலாக மதிப்பு ஒரு முழு எண்ணாக இருக்கிறது. 763 01:04:02,740 --> 01:04:05,610 இந்த உரிமை, கொஞ்சம் குழப்பமான இருக்கிறது? 764 01:04:05,610 --> 01:04:11,450 >> நாம் ஒரு பாத்திரம் வருகிறோம் ஏனெனில், ஏன் இந்த பதிலுக்கு ஒரு எரிப்பதை இல்லை? 765 01:04:11,450 --> 01:04:18,700 நீங்கள் இந்த ஒரு எரிப்பதை திரும்ப மாட்டார் ஏன் எந்த யோசனை? 766 01:04:18,700 --> 01:04:25,510 [மிஸ்ஸி பதில்கள், புரிந்து] >> சரி. எனவே மிஸ்ஸி முற்றிலும் சரி. 767 01:04:25,510 --> 01:04:31,570 அதை ASCII இருந்தால், இந்த முழு உண்மையான எரிப்பதை ஒப்பிடப்படுகிறது. 768 01:04:31,570 --> 01:04:33,520 ஒரு ASCII எழுத்துகளின் இருக்கும், மற்றும் அது சரிதான் என்று. 769 01:04:33,520 --> 01:04:36,220 என்று சரியாக நடக்கிறது என்ன. 770 01:04:36,220 --> 01:04:39,190 அது இன்னும் பிட்கள் உள்ளன வெறுமனே ஏனெனில் நாம் ஒரு முழு எண்ணாக பயன்படுத்துகிறீர்கள். 771 01:04:39,190 --> 01:04:44,750 எங்கள் எரிப்பதை மட்டும் 8 பிட்கள் உள்ளன, நமது 32 பிட் கணினிகளில் 1 பைட் என்று அது ஒரு எரிப்பதை விட பெரியது. 772 01:04:44,750 --> 01:04:48,520 மற்றும் ஒரு முழு எண்ணாக எல்லா இடத்தையும் 4 பைட்டுகள் 'மதிப்பு உள்ளது. 773 01:04:48,520 --> 01:04:50,940 அது வழி fgetc வேலை என்று திருப்பி, 774 01:04:50,940 --> 01:04:53,940 நாம் இந்த மனிதன் பக்கம் கொஞ்சம் எங்கள் தெரிந்து உள்ள உருட்டலாம் என்றால், 775 01:04:53,940 --> 01:05:05,000 அனைத்து வழி உருட்டலாம். அதை அவர்கள் EOF என்று இந்த சிறப்பு மதிப்பு பயன்படுத்தும் அவுட் சுழல்கிறது. 776 01:05:05,000 --> 01:05:09,640 இது fgetc செயல்பாட்டை திரும்ப மதிப்பு ஒரு சிறப்பு நிலையான தான் 777 01:05:09,640 --> 01:05:14,570 நீங்கள் கோப்பு இறுதியில் வெற்றி அல்லது நீங்கள் ஒரு பிழை கிடைத்தாலும். போதெல்லாம் 778 01:05:14,570 --> 01:05:18,170 அது, ஒழுங்காக EOF இந்த ஒப்பீடுகள் செய்ய என்று மாறும் 779 01:05:18,170 --> 01:05:24,060 நீங்கள் ஒரு முழு எண்ணாக நீங்கள் அந்த தகவலை அந்த கூடுதல் தொகை வேண்டும் 780 01:05:24,060 --> 01:05:28,420 ஒரு எரிப்பதை மாறி பயன்படுத்தி எதிர்க்கும். 781 01:05:28,420 --> 01:05:32,130 Fgetc திறமையுடன், ஒரு கோப்பை ஒரு கதாபாத்திரம் வருகிறது கூட 782 01:05:32,130 --> 01:05:38,450 நீங்கள் செய்ய வகை எண்ணாக தான் என்று ஏதோ திரும்பிய என்று நினைவில் வேண்டும். 783 01:05:38,450 --> 01:05:41,360 அது பயன்படுத்த மிகவும் எளிதானது, என்றார். 784 01:05:41,360 --> 01:05:44,960 அது எங்களுக்கு ஒரு கேரக்டர் கொடுக்க நடக்கிறது; நாம் செய்ய வேண்டிய அனைத்து கோப்பு கேட்டு கொண்டே இருக்கும், 785 01:05:44,960 --> 01:05:48,440 "என்னை அடுத்த தன்மையை கொடுக்க, எனக்கு அடுத்த தன்மையை கொடுக்க, எனக்கு அடுத்த பாத்திரம் கொடுங்கள்" 786 01:05:48,440 --> 01:05:51,400 நாம் கோப்பை இறுதியில் கிடைக்கும் வரை. 787 01:05:51,400 --> 01:05:54,730 என்று, நம் கோப்பு ஒரு நேரத்தில் ஒரு எழுத்தை இழுக்கும் வேண்டும் 788 01:05:54,730 --> 01:05:56,250 பின்னர் நாம் அது எது பிடிக்குமோ அதை செய்ய முடியும். 789 01:05:56,250 --> 01:06:00,160 நாம் அது சேமிக்க முடியும், நாம், ஒரு சரம் இதை சேர்க்க முடியும் நாம் அதை அச்சிட முடியாது. 790 01:06:00,160 --> 01:06:04,630 என்று எந்த செய்வது. 791 01:06:04,630 --> 01:06:09,600 >> வெளியே வந்து பெரிதாக்க மற்றும் நம் cat.c திட்டம் செல்கிறேன், 792 01:06:09,600 --> 01:06:16,170 நாம் fgetc பயன்படுத்த போகிறீர்கள் என்றால், 793 01:06:16,170 --> 01:06:21,710 எப்படி நாம் குறியீடு இந்த அடுத்த வரி அணுகலாம்? 794 01:06:21,710 --> 01:06:26,020 நாம் பயன்படுத்த போகிறோம் - fread சற்று வித்தியாசமாக ஏதாவது செய்ய வேண்டும். 795 01:06:26,020 --> 01:06:32,600 இந்த நேரத்தில், நாம் ஒரு நேரத்தில் ஒரு பாத்திரத்தை பெற fgetc பயன்படுத்த போகிறோம். 796 01:06:32,600 --> 01:06:40,910 ஒரு முழு கோப்பை செயல்படுத்த, நாம் என்ன செய்ய வேண்டும்? 797 01:06:40,910 --> 01:06:44,030 அங்கு ஒரு கோப்பில் எத்தனை எழுத்துக்கள் உள்ளன? 798 01:06:44,030 --> 01:06:47,390 நிறைய உள்ளன. அதனால் ஒருவேளை நீங்கள் ஒரு பெற வேண்டும் 799 01:06:47,390 --> 01:06:49,860 பின்னர் மற்றொரு கிடைக்கும் மற்றொரு கிடைக்கும் மற்றொரு கிடைக்கும். 800 01:06:49,860 --> 01:06:53,330 நாம் இங்கே பயன்படுத்த வேண்டும் வழிமுறை என்ன நினைக்கிறீர்கள்? 801 01:06:53,330 --> 01:06:55,470 என்ன வகை -? லூப் [அலெக்சாண்டர்] ஒரு? சரியாக >>. 802 01:06:55,470 --> 01:06:57,500 கண்ணி சில வகை. 803 01:06:57,500 --> 01:07:03,380 வட்டத்திற்கு ஒரு இந்த வழக்கில், உண்மையில் நன்றாக இருக்கிறது. 804 01:07:03,380 --> 01:07:08,620 நீங்கள் முழு கோப்பு மீது ஒரு வட்டத்திற்கு வேண்டும் போல் நீங்கள் சொன்னீர்கள் போல், அது, கேட்பதற்கே 805 01:07:08,620 --> 01:07:11,820 ஒரு நேரத்தில் ஒரு கேரக்டர் கிடைத்தால். 806 01:07:11,820 --> 01:07:13,850 இப்படி இருக்கும் என்று என்ன எந்த பரிந்துரைகளை? 807 01:07:13,850 --> 01:07:22,090 [அலெக்ஸாண்டர், புரிந்து] 808 01:07:22,090 --> 01:07:30,050 >> சரி, இப்போது நீங்கள் செய்ய முயற்சிக்கும் என்ன ஆங்கில சொல்? [அலெக்ஸாண்டர், புரிந்து] 809 01:07:30,050 --> 01:07:36,270 நாங்கள் தான் முழு கோப்பு மீது வளைய முயற்சிப்பது போல இந்த வழக்கில், கேட்பதற்கே. 810 01:07:36,270 --> 01:07:45,330 [அலெக்சாண்டர்] எனவே நான் <எண்ணாக அளவு? >> அளவு -? 811 01:07:45,330 --> 01:07:49,290 நான், கோப்பு அளவு தெரியுமா? அளவு - we'll அதை இந்த மாதிரி எழுத. 812 01:07:49,290 --> 01:07:57,470 முறையாக கோப்பை அளவு இருப்பது, நான் +. 813 01:07:57,470 --> 01:08:04,610 எனவே, நீங்கள் இந்த fgetc பயன்படுத்தி, மற்றும் என்ன வழி இந்த புதிய என்று மாறிவிடும் 814 01:08:04,610 --> 01:08:10,460 ஒரு கோப்பு அளவு பெற எளிதான வழி இருக்கிறது என்று 815 01:08:10,460 --> 01:08:16,979 நீங்கள் முன் பார்த்த அந்த கட்டுவதற்கு இந்த "sizeof" வகை. 816 01:08:16,979 --> 01:08:20,910 நாம் அந்த fgetc செயல்பாட்டை பயன்படுத்த போது, நாம் சில வகையான அறிமுகம் 817 01:08:20,910 --> 01:08:29,069 லூப் இந்த புதிய, பங்கி தொடரியல், அங்கு பதிலாக ஒரு அடிப்படை எதிர்ப்பு பயன்படுத்தி 818 01:08:29,069 --> 01:08:33,920 எழுத்து மூலம் தன்மையை செல்ல, நாம், ஒரு நேரத்தில் ஒரு பாத்திரத்தை இழுக்க போகிறோம் 819 01:08:33,920 --> 01:08:37,120 ஒரு நேரத்தில் தன்மை, மற்றும் நாம் அறிய வழி நாம் முடிவில் இருக்கிறோம் 820 01:08:37,120 --> 01:08:41,290 நாம் எழுத்துக்கள் ஒரு குறிப்பிட்ட எண்ணிக்கை கணக்கில் வில்லை போது, 821 01:08:41,290 --> 01:08:49,939 ஆனால் நாம் வெளியே இழுக்க தன்மையை கோப்பு தன்மை சிறப்பு இறுதியில் போது. 822 01:08:49,939 --> 01:08:58,689 நான் இந்த சாப்டர் அழைப்பு, மற்றும் நாம் அதை துவக்க போகிறோம் - நாம் செய்யலாம் 823 01:08:58,689 --> 01:09:08,050 கோப்பு வெளியே முதல் எழுத்தை பெற எங்கள் முதல் அழைப்பு. 824 01:09:08,050 --> 01:09:14,979 இங்கே இந்த பகுதி மிகவும், இந்த கோப்பு ஒரு பாத்திரத்தை வெளியே போகிறது 825 01:09:14,979 --> 01:09:20,840 மற்றும் மாறி சாப்டர் அதை சேமிக்க. 826 01:09:20,840 --> 01:09:25,420 நாம் கோப்பை இறுதியில் கிடைக்கும் வரை நாம் இதை வைத்து போகிறோம், 827 01:09:25,420 --> 01:09:41,170 இது நாம் அந்த சிறப்பு EOF தன்மையை சமமாக இல்லை கதாபாத்திரத்தை சோதனை செய்ய. 828 01:09:41,170 --> 01:09:48,750 அதற்கு பதிலாக சாப்டர் செய்து பின்னர் + + இது தான், மதிப்பு அதிகப்படுத்த வேண்டும் 829 01:09:48,750 --> 01:09:52,710 நாம் கோப்பு ஒரு ஒரு அவுட், ஒரு, என்று ஒரு மூலதனம், படிக்க நீங்கள் 830 01:09:52,710 --> 01:09:56,810 சாப்டர் + எங்களை கேட்ச் கொடுக்க வேண்டும், மற்றும் நாம் கேட்ச் பின்னர் ஈ தொடங்கும். 831 01:09:56,810 --> 01:09:59,310 என்று நாம் என்ன தெளிவாக இல்லை. நாம் இங்கே என்ன தேவை 832 01:09:59,310 --> 01:10:05,830 இந்த கடைசி பிட் நாம் கோப்பு இருந்து அடுத்த தன்மையை பெற வேண்டும். 833 01:10:05,830 --> 01:10:09,500 >> நாம் எப்படி கோப்பை இருந்து அடுத்த பாத்திரம் வந்துவிடும்? 834 01:10:09,500 --> 01:10:13,470 எப்படி நாம் கோப்பு முதல் பாத்திரம் கிடைக்கும்? 835 01:10:13,470 --> 01:10:17,200 [மாணவர்] fgetfile? >> Fgetc, அல்லது, மன்னிக்கவும், நீங்கள் சரியாக இருந்தது. 836 01:10:17,200 --> 01:10:20,470 நான் அங்கு அது தவறுதலாக எழுதப்பட்டது. சரி அப்படி. 837 01:10:20,470 --> 01:10:26,240 இங்கே பதிலாக சாப்டர் செய்து + + 838 01:10:26,240 --> 01:10:29,560 நாங்கள் தான் மீண்டும் fgetc (கோப்பு) அழைக்க போகிறாய் 839 01:10:29,560 --> 01:10:39,180 நமது ஒரே சாப்டர் மாறி விளைவாக சேமிக்க. 840 01:10:39,180 --> 01:10:43,730 [மாணவர் கேள்வி, புரிந்து] 841 01:10:43,730 --> 01:10:52,390 இந்த FILE * தோழர்களே சிறப்பு எங்கே >> இது. 842 01:10:52,390 --> 01:10:59,070 அவர்கள் வேலை வழி அவர்கள் - நீங்கள் முதல் திறக்கும் போது - முதலில் அந்த fopen அழைப்பை போது, 843 01:10:59,070 --> 01:11:04,260 FILE * திறம்பட கோப்பு தொடக்கத்தில் ஒரு சுட்டிக்காட்டி பணியாற்றுகிறார். 844 01:11:04,260 --> 01:11:12,830 பின்னர் நீங்கள் fgetc என்று ஒவ்வொரு முறையும், அதை கோப்பு மூலம் ஒரு பாத்திரம் நகரும். 845 01:11:12,830 --> 01:11:23,280 நீங்கள் இந்த அழைப்பு மிக போதெல்லாம், நீங்கள் ஒரு பாத்திரம் மூலம் கோப்பு சுட்டிக்காட்டி உயர்த்துவதன். 846 01:11:23,280 --> 01:11:26,210 நீங்கள் மீண்டும் fgetc போது, அதை மற்றொரு பாத்திரம் நகரும் 847 01:11:26,210 --> 01:11:28,910 மற்றொரு பாத்திரம் மற்றும் மற்றொரு பாத்திரம் மற்றும் மற்றொரு பாத்திரம். 848 01:11:28,910 --> 01:11:32,030 [மாணவர் கேள்வி, புரிந்து] >> மேலும் that's - ஆமாம். 849 01:11:32,030 --> 01:11:34,810 அதை பேட்டை கீழ் இந்த மந்திரம் வகையான தான். 850 01:11:34,810 --> 01:11:37,930 நீங்கள் மூலம் உயர்த்துவதன் வைத்து. 851 01:11:37,930 --> 01:11:46,510 இந்த கட்டத்தில், நீங்கள் உண்மையில் ஒரு பாத்திரம் வேலை முடிகிறது. 852 01:11:46,510 --> 01:11:52,150 நாம் எப்படி இப்போது, திரையில் இந்த அச்சிட வேண்டும்? 853 01:11:52,150 --> 01:11:58,340 நாம் முன்னர் பயன்படுத்திய அதே printf தான் பயன்படுத்த முடியும். 854 01:11:58,340 --> 01:12:00,330 நாம் அனைத்து செமஸ்டர் பயன்படுத்தி என்று. 855 01:12:00,330 --> 01:12:05,450 நாம், printf அழைக்க முடியும் 856 01:12:05,450 --> 01:12:21,300 மற்றும் நாம் இப்படியே தன்மையை கடத்தலாம். 857 01:12:21,300 --> 01:12:27,430 அதை செய்ய வேறு வழி, மாறாக printf பயன்படுத்தி இந்த வடிவம் சரம் செய்ய வைத்து விட 858 01:12:27,430 --> 01:12:29,490 நாம் மற்ற செயல்பாடுகளை ஒரு பயன்படுத்தலாம். 859 01:12:29,490 --> 01:12:40,090 நாம் திரையில் ஒரு கதாபாத்திரம் அச்சிடுகிறது இது fputc, பயன்படுத்தலாம் 860 01:12:40,090 --> 01:12:52,580 நாம் fputc பார் என்றால் தவிர - என்னை கொஞ்சம் அவுட் பெரிதாக்கவும் நாம். 861 01:12:52,580 --> 01:12:56,430 நாம், என்ன அழகாக அதை நாம் fgetc பயன்படுத்தி படிக்கும் தன்மையை எடுத்து பாருங்கள் 862 01:12:56,430 --> 01:13:05,100 ஆனால் நாம் அதை அச்சிட ஒரு ஸ்ட்ரீம் கொடுக்க வேண்டும். 863 01:13:05,100 --> 01:13:11,850 நாங்கள் நிலையான அவுட் நேரடியாக வைக்கிறேன் இது putchar செயல்பாடு, பயன்படுத்த முடியும். 864 01:13:11,850 --> 01:13:16,070 நாம் அச்சிடுவதற்கு பயன்படுத்தலாம் என்று பல்வேறு விருப்பங்களை ஒரு மொத்தமாக உள்ளன. 865 01:13:16,070 --> 01:13:19,580 அவர்கள் தர நான் / ஓ நூலகத்தில் உள்ளோம். 866 01:13:19,580 --> 01:13:25,150 நீங்கள் அச்சிட வேண்டும் போதெல்லாம் - அதனால் printf, முன்னிருப்பாக, ஸ்ட்ரீம் அவுட் சிறப்பு தரத்தை அச்சிட 867 01:13:25,150 --> 01:13:27,910 அந்த stdout ஆகும். 868 01:13:27,910 --> 01:13:41,300 எனவே இந்த மாய மதிப்பு, இங்கே உள்ள stdout வகையான அதை பார்க்கவும் முடியாது. 869 01:13:41,300 --> 01:13:48,410 Oops. வெளியே அரைப்புள்ளி வைத்து. 870 01:13:48,410 --> 01:13:52,790 >> இந்த இங்கே புதிய, பங்கி தகவல் நிறைய உள்ளது. 871 01:13:52,790 --> 01:13:58,600 இந்த நிறைய இந்த குறியீடு தான் என்ற அர்த்தத்தில், மிகவும் மரபு ஆகும் 872 01:13:58,600 --> 01:14:05,700 இது, வாசிக்க எளிதாக படிக்க சுத்தமான தான் நான் இந்த வழியில் எழுதப்பட்ட என்று. 873 01:14:05,700 --> 01:14:11,520 அதை செய்ய பல வழிகள், நீங்கள் பயன்படுத்தலாம் பல மாறுபட்ட செயல்பாடுகள் உள்ளன 874 01:14:11,520 --> 01:14:14,680 ஆனால் நாங்கள் வெறும் மேல் இதே வடிவத்தையும் முனைகின்றன. 875 01:14:14,680 --> 01:14:20,180 நீங்கள் மீண்டும் மீண்டும் வரும் இந்த குறியீடு பார்த்தால் ஆச்சரியப்படவேண்டாம் இல்லை. 876 01:14:20,180 --> 01:14:25,690 எல்லாம் சரி. இந்த கட்டத்தில், நாம் நாள் உடைக்க வேண்டும். 877 01:14:25,690 --> 01:14:31,300 வந்ததற்கு நன்றி. நீங்கள் ஆன்லைன் என்றால் பார்த்து நன்றி. நாம் அடுத்த வாரம் சந்திப்போம். 878 01:14:31,300 --> 01:14:33,890 [CS50.TV]