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 కాబట్టి guys, స్వాగతము. 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 మరియు ఇక్కడ, మనం మీరు అడగటం జరిగింది శీఘ్ర మెమరీ TRACE ఉంది. 19 00:01:13,590 --> 00:01:17,000 వారు స్టాక్ ఉన్నాయి వంటి వేరియబుల్స్ యొక్క విలువలు పూరించడానికి 20 00:01:17,000 --> 00:01:20,250 కోడ్ ఈ swap చర్య ద్వారా వెళుతూ. 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 దీని ద్వారా ఇక్కడే మా swap ఫంక్షన్ నుండి రాబడి. 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 ఆపిల్ TV సాదృశ్యాన్ని, మరియు అక్కడ మేము వెళ్ళి. సరే. 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 యొక్క చిరునామా పాస్ swap కు ఒక అండ్ బి. 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 కాబట్టి ఆ అందించబడింది పొందుతారు విలువలు ఒక మరియు మా swap ఫంక్షన్ లో టాప్ బి. 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 మేము swap కొనసాగండి పేరు ఇప్పుడు, ఈ విషయం. 53 00:04:11,610 --> 00:04:14,520 కాబట్టి, మళ్ళీ ల్యాప్టాప్ తిరిగి వేగంగా కదలటం 54 00:04:14,520 --> 00:04:21,079 మేము swap పనిచేస్తుంది మార్గం 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 కాబట్టి మేము, మేము మా ఐప్యాడ్ న చూడుము, అక్కడికి వెళ్లేందుకు 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 ఆపరేటర్లు ఒక unary ఆపరేటర్లు ఉంది. 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 కాబట్టి రాబోయే లైన్ తో swap పూర్తిచేయవచ్చు. 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 మేము పని guys ఒకటి చాలా సాధారణ నానుడి ఉంది: 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 , చాలా సహాయకారిగా ఉంటాయి, చిత్రాలు చాలా Drawing ఇలాంటి మెమరీ చిత్రములు మా గీయడం 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 మీరు ముందు ఆంపర్సండ్ చిహ్నం ఉపయోగించేటప్పుడు ఏమిటి అని? 127 00:10:38,820 --> 00:10:43,140 >> ఆంపర్సండ్ చిహ్నం ముందు చిరునామా-యొక్క ఆపరేటర్. 128 00:10:43,140 --> 00:10:45,880 కాబట్టి యొక్క అప్ తిరిగి స్క్రోల్ అనుమతిస్తుంది. 129 00:10:45,880 --> 00:10:49,310 అయ్యో. నేను నేను నిజంగా స్క్రోల్ లేదు జూమ్ మోడ్ లో ఉన్నాను. 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 ఆంపర్సండ్ చిహ్నం కేవలం "చిరునామా వేరియబుల్ 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 కాబట్టి మీరు చేయవచ్చు - అది అలాగే మరియు పాస్ & పీ లో ఈ తరలిస్తారు. 140 00:11:44,740 --> 00:11:50,730 , ఈ కుర్రాళ్ళు చిరునామా పొందుతారు కాని వారు కూడా, మీరు swap ఫంక్షన్ వాటిని పాస్ 141 00:11:50,730 --> 00:11:55,690 ఈ రకం సమాచారం ఇక్కడే ఈ Int *, కంపైలర్ చెబుతుంది 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-bit కంప్యూటరులో, తీసుకుంటుంది ఎందుకంటే, స్థలం 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, ఫైలు I / O. 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 ఈ సమస్య యొక్క మొదటి భాగం ను ఏమిటి వివరిస్తూ ఉంది. 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 మీరు, సంభాషణ 'సేవ్' వెళ్లి మరియు మీరు Excel తెరిచి ఉంటుంది 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 కాబట్టి మేము అప్పుడు మలన్, Hardison, ఆపై బౌడెన్, 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 కిరాయి రద్దు మరియు ఇది ఒక వాదన లో s అనే సిబ్బంది నిర్మాణం జరుగుతుంది. 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 [స్టెల్లా] నాకు ఖచ్చితంగా తెలియదు. >> జిమ్మీ అడగండి సంకోచించకండి. 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 నా తెరపై అమర్చడం - కానీ ఒక NEWLINE పాత్ర తరువాత మాత్రమే. 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 కూల్. 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 వ్యతిరేకంగా? ఆ సరైనదేనా? అవును. 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 మరియు మీరు ఈ టైప్ అడగండి - లేదా మీరు ఈ మూడు విషయాలు టైప్ కోసం వేచి? 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 అక్కడ లో అతికించి, మరియు నేను ఎంటర్ కొట్టాడు, ఈ 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 వ్యక్తివి పరిష్కరించేందుకు మార్గం, ఇది అన్జిప్ ఉంది 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 అది అన్జిప్ మేము, నాకు ఫోల్డర్ సృష్టించడం 340 00:28:36,980 --> 00:28:40,410 అన్ని కంటెంట్లను పెంచి, అక్కడ వాటిని ఉంచండి. 341 00:28:40,410 --> 00:28:47,410 కాబట్టి ఇప్పుడు నేను CD ఆదేశాన్ని ఉపయోగించి నా విభాగం 5 డైరెక్టరీలో వెళ్ళవచ్చు. 342 00:28:47,410 --> 00:28:58,310 స్పష్టమైన ఉపయోగించి తెరపై క్లియర్ చేయండి. కాబట్టి స్క్రీన్ క్లియర్. 343 00:28:58,310 --> 00:29:02,280 ఇప్పుడు నేను పరిష్కరించేందుకు ఒక nice క్లీన్ టెర్మినల్ పొందారు. 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 అమలు చేస్తే, నేను ఒక seg లోపం పొందండి. 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 కానీ ఈ seg తప్పు తప్పు గురించి చెడ్డ విషయాలు ఒకటి 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 టైప్ చేసి, ఆపై నేను అమలు చేయడానికి కావలసిన executable దానిని మార్గం ఇస్తాయి. 369 00:30:56,190 --> 00:31:01,960 ఇక్కడ నేను GDB ./buggy1 టైప్ చేస్తున్నానని. 370 00:31:01,960 --> 00:31:06,600 ఎంటర్ నొక్కండి. నాకు ఈ కాపీరైట్ సమాచారం ఇస్తుంది 371 00:31:06,600 --> 00:31:13,000 మరియు డౌన్ ఇక్కడ మీరు ", / home / చదవడం చిహ్నాలు అని ఈ లైన్ చూస్తారు 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 లేదా అలాంటిదే, ఏ అంటే మీరు సరిగ్గా executable సంకలనం కాని ఉంది. 378 00:31:41,460 --> 00:31:49,980 మేము GDB తో ఉపయోగం కోసం కార్యక్రమాలు కంపైల్ చేసినప్పుడు, మేము, ప్రత్యేక-G జెండా ఉపయోగించాలి 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 కానీ మీరు గణగణమని ద్వని చేయు తో మానవీయంగా కంపైల్ చేస్తుంటే, అప్పుడు మీరు వెళ్ళి ఆ-G జెండా ఉన్నాయి ఉంటుంది. 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 ని చేస్తే, సాద్? 388 00:32:30,980 --> 00:32:39,390 [సాద్] నేను SIGSEGV, విభజన లోపంగా, ఆపై ఈ చెయ్యబడని సముచితం వచ్చింది. 389 00:32:39,390 --> 00:32:43,650 >> అవును. 390 00:32:43,650 --> 00:32:47,990 మేము ఇప్పుడు చూడటానికి వలె, మరియు సాద్ తెలిపారు వంటి, 391 00:32:47,990 --> 00:32:53,430 మేము పరుగుల లేదా r టైప్ ఎంటర్ నొక్కండి, మేము ఇప్పటికీ అదే seg లోపం పొందండి. 392 00:32:53,430 --> 00:32:55,830 కాబట్టి GDB ఉపయోగించి మా సమస్యను పరిష్కరించడానికి లేదు. 393 00:32:55,830 --> 00:32:59,120 కానీ మాకు కొన్ని చెయ్యబడని సముచితం కాని ఇస్తుంది, మరియు అది అవుతుంది ఈ చెయ్యబడని సముచితం 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 ఉంది. ఈ. S ఫైలు లో ఉన్నట్లు కనిపిస్తుంది, బహుశా దీన్ని యొక్క అసెంబ్లీ కోడ్ కాబట్టి. 406 00:34:21,460 --> 00:34:25,949 >> కానీ, నేను, మేము ఒక seg తప్పు సంపాదించిన చేసిన ఎందుకంటే మరింత ముఖ్యమైన విషయం, ఇది ఊహించడం 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 మీరు ఒక seg తప్పు చూసినప్పుడు మీరు ఈ క్రేజీ ఏదో, చూసినప్పుడు, 413 00:34:55,500 --> 00:34:59,800 మీరు కంటే ఎక్కువ కేవలం ప్రధాన ఉపయోగించి ఒక ప్రోగ్రామ్ను ముఖ్యంగా 414 00:34:59,800 --> 00:35:03,570 ఒక వెనుకకు ఉపయోగిస్తారు. 415 00:35:03,570 --> 00:35:13,080 నేను పూర్తి వెనుకకు పదం వ్యతిరేకంగా, BT వ్రాయడం ద్వారా వెనుకకు నిర్వచించడం. 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 మరియు మేము swap ప్రధాన వాడుకుంటున్నారని వేరియబుల్స్ పైన వాడుకుంటున్నారని వేరియబుల్స్ వచ్చింది. 425 00:35:59,700 --> 00:36:08,440 ఇక్కడ మా క్రాష్ మా ప్రధాన చర్య ద్వారా అని కూడా పిలుస్తారు మా strcmp ఫంక్షన్ లో జరిగింది, 426 00:36:08,440 --> 00:36:14,370 మరియు వెనుకకు మాకు విషయాలు విఫలమైంది దీనిలో విధులు మాత్రమే అందిస్తున్న, 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 మరియు మీరు ఒక seg లోపం పొందారు మరియు ప్రతిదీ బద్దలు అక్కడ మీ 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 మీరు l తో నిర్వచించడం చేయవచ్చు. 441 00:37:13,650 --> 00:37:18,910 మేము l హిట్ చేస్తే, ఇక్కడ మేము ఏమి వస్తుందా? 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 మీ ప్రోగ్రామ్, మీరు ఒక క్రాష్ పొందండి, మీరు, వెనుకకు అనుసరించిన పొందండి 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 లేదా కనీసం మీరు నిజంగా డీబగ్ చేసే ఒక లేని ఒక స్టాక్ ఫ్రేమ్ లో ఉన్నాము. 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 కానీ మేము ఒకే జాబితా హిట్, మరియు జాబితా మాకు ఈ nice ప్రింటవుట్ ఇస్తుంది 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 మీరు మొదటి సారి కార్యక్రమం, డేనియల్, పరిగెడుతున్నప్పుడు మరియు మేము, seg తప్పు వచ్చింది 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 Well, ఏ తగిన స్ట్రింగ్ విలువ ఉంది. 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 ఈ హుం దండి p ఆదేశాన్ని ఉపయోగించి. 505 00:41:43,230 --> 00:41:48,520 నేను p టైప్ మరియు చేస్తే అప్పుడు నేను, ఒక వేరియబుల్ లేదా ఒక వేరియబుల్ పేరు విలువ టైప్ 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 ఎల్లప్పుడూ executable యొక్క పేరు. 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 లేదా hex లో 50 ప్రాతినిధ్యం గురించి pset 0 చివరిలో ఆ చిన్న ప్రశ్న? 516 00:42:34,680 --> 00:42:39,410 మేము CS లో హెక్స్ అంకెలు రాయడం విధంగా, కేవలం మనలోని గందరగోళ కు 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 కాబట్టి ఈ మేము disambiguate ఎంత ఉంది. 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 మరియు ఈ ప్రామాణిక అవుట్ ముద్రిస్తుంది ఇది విచారమైన ముఖం "మీరు D పొందండి", అన్నారు. 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 No more seg లోపం, మేము, అది గత చేసిన 564 00:46:43,050 --> 00:46:48,190 ఆ నిజానికి మేము పొందుతున్న ఆ seg లోపం బగ్ వంటి అలా కనిపిస్తోంది. 565 00:46:48,190 --> 00:46:51,540 దురదృష్టవశాత్తు, మేము ఒక D. చేస్తున్నారు మాకు చెబుతుంది 566 00:46:51,540 --> 00:46:54,090 >> మేము తిరిగి వెళ్లి కోడ్ చూడండి మరియు అక్కడ ఏమి చూడగలరు 567 00:46:54,090 --> 00:46:57,980 గురించి గుర్తించడానికి - అది మేము ఒక D. వచ్చింది అని మాకు చెప్పడం ఎందుకు 568 00:46:57,980 --> 00:47:03,690 ఈ printf మీరు ఒక D. వచ్చింది అని చెప్పడం యొక్క చూసేలా, ఇక్కడ జరిగినది 569 00:47:03,690 --> 00:47:08,540 మేము జాబితా టైప్ ఉంటే మీరు టైప్ జాబితాను ఉంచుకోండి వంటి, ఇది మీ ప్రోగ్రామ్ ద్వారా డౌన్ iterating ఉంచుతుంది 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 మాకు stuff అన్ని ఈ విధమైన ఇస్తుంది చూడండి. 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 రాళ్ళు టైప్ చేస్తే, అది "మీరు ఒక A. పొందుటకు" అవుట్ ముద్రిస్తుంది 586 00:48:13,980 --> 00:48:16,530 లేకపోతే అది "మీరు ఒక D. పొందండి" అవుట్ ముద్రిస్తుంది 587 00:48:16,530 --> 00:48:23,770 అయ్యో పట్టణం. అన్ని కుడి. అవును? 588 00:48:23,770 --> 00:48:26,730 >> [డేనియల్] నేను కోట్లు లేకుండా CS50 రాళ్ళు చేయడం ప్రయత్నించినప్పుడు, 589 00:48:26,730 --> 00:48:29,290 ఇది "మీరు ఒక D. పొందండి" అని 590 00:48:29,290 --> 00:48:32,560 నేను పని చెయ్యడానికి ల అవసరం; ఎందుకు అంటే? 591 00:48:32,560 --> 00:48:38,490 >> అవును. ఇది అవుతుంది ఆ సమయంలో - ఈ మరొక సరదాగా చిన్న tidbit ఉంది - 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 అది ఇప్పటికీ మేము ఒక D. అని అన్నారు 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 మేము కోట్స్ లో ఉంచండి మరియు మళ్లీ అమలు చేస్తే ఇప్పుడు, మేము ఒక A. పొందండి 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 I ప్రోగ్రామ్, 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 ఏ అందంగా nice ఉంది. 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 ,, వెనుకకు అనుసరించిన పొందడానికి ప్రమాదంలో ఉంది పని ఏమి ఇందుకు 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 మీరు Macs ఉంటే టెర్మినల్ అప్ తెరిస్తే మరియు మీరు చాలా మీ Mac లో చేయవచ్చు. 668 00:55:16,860 --> 00:55:25,630 మరియు మేము - పిల్లి, యొక్క, cp.c అని పిలవబడు, ఎంటర్ నొక్కండి. 669 00:55:25,630 --> 00:55:29,640 ఈ తరుణంలోనే, మేము కొద్దిగా పైకి స్క్రోల్ మరియు మేము లైన్ కోల్పోయారు చూడండి ఉంటే 670 00:55:29,640 --> 00:55:40,440 లేదా మేము పిల్లి ఆదేశం కోల్పోయారు, వాచ్యంగా మా తెరకు cp.c విషయాలు ముద్రించిన. 671 00:55:40,440 --> 00:55:44,140 మేము మళ్ళీ దీన్ని అమలు చేయవచ్చు మరియు మీరు కలిసి బహుళ ఫైళ్లను ఉంచవచ్చు. 672 00:55:44,140 --> 00:55:49,880 , కాబట్టి మీరు పిల్లి cp.c చేయవచ్చు, మరియు మేము కూడా cat.c ఫైలు concatenate చేయవచ్చు 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 మేము ఈ nice బాయిలర్ ప్లేట్ చేర్చాను, మేము అన్ని ఆ టైప్ సమయం ఖర్చు లేదు కాబట్టి. 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 జస్ట్ stuff అదే విధమైన పనిని గుర్తు 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 మేము ఒక సమయంలో ఒక చిన్న bit ద్వారా వెళ్తారో. 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 [i] మరియు 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 నిల్వచేయబడిన [i,] మరియు అప్పుడు మేము చదవడానికి రీతిలో ఈ ఫైల్ను తెరవడం చూడాలని. 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 ఉంది. ఈ reading విధులను ఉన్నాయి. 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 ఈ చర్యలు అన్ని ప్రామాణిక I / O లైబ్రరీ లో ఉన్నాయి. 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 మరియు C. లో stdio ఇన్పుట్ మరియు అవుట్పుట్ చర్యలకు గురించి అన్ని చదవండి 747 01:02:43,180 --> 01:02:49,870 మరియు మేము ఇప్పటికే OH, చూడండి చూడగలరు. ఇది 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 మరియు ఈ మేము నిజమైన C. లో ఎలా ఉంది 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-bit కంప్యూటర్లలో బైట్ 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 మీరు ఒక Int లో మీరు కలిగిన సమాచార అదనపు మొత్తం కావాలి 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 మీరు మీకు రకం Int యొక్క ఏదో ఒకటి తిరిగి ఆ గుర్తుంచుకోవాలనుకుంటున్న. 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 ఏ రకం యొక్క -? లూప్ [అలెగ్జాండర్] A? ఖచ్చితంగా >>. 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 నేను ఈ CH కాల్, మరియు మేము అది ప్రారంభించడం వెళుతున్న - కాబట్టి మేము ద్వారా చేయవచ్చు 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 మరియు వేరియబుల్ CH గా నిల్వ. 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 బదులుగా CH చేయడం మరియు తర్వాత + +, ఇది కేవలం, విలువ పెంచడం చేస్తుంది 829 01:09:48,750 --> 01:09:52,710 మేము ఫైల్ ఒక ఒక అవ్ట్, A, చెబుతున్న రాజధాని చదవండి అయితే 830 01:09:52,710 --> 01:09:56,810 CH + + మాకు బి ఇస్తుంది, మరియు అప్పుడు మేము సి ఆపై d పొంది. 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 ఇక్కడ బదులుగా CH చేయడం యొక్క + +, 838 01:10:26,240 --> 01:10:29,560 మేము మళ్లీ fgetc (ఫైలు) కాల్ చూడాలని 839 01:10:29,560 --> 01:10:39,180 మరియు మా అదే CH వేరియబుల్ ఫలితంగా నిల్వ. 840 01:10:39,180 --> 01:10:43,730 [స్టూడెంట్ ప్రశ్న, అపారదర్శక] 841 01:10:43,730 --> 01:10:52,390 ఈ ఫైల్ * guys ప్రత్యేక ఎక్కడ >> ఈ. 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 వారు ప్రామాణిక I / O లైబ్రరీలో ఉన్నాము. 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 అయ్యో. బయట సెమికోలన్ ఉంచండి. 870 01:13:48,410 --> 01:13:52,790 >> ఈ ఇక్కడ కొత్త, అల్లరిగా సమాచారం చాలా ఉంది. 871 01:13:52,790 --> 01:13:58,600 ఈ చాలా ఈ కోడ్ అనేది చాలా idiomatic ఉంది 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]