1 00:00:00,000 --> 00:00:05,330 2 00:00:05,330 --> 00:00:07,870 >> المتحدث: حتى الآن، فمن المحتمل أن معظم البرامج الخاصة بك 3 00:00:07,870 --> 00:00:10,170 كانت سريعة الزوال قليلا. 4 00:00:10,170 --> 00:00:13,310 تشغيل برنامج مثل ماريو أو الجشع. 5 00:00:13,310 --> 00:00:17,350 وهو يفعل شيئا، فإنه يطالب ربما المستخدم لبعض المعلومات، 6 00:00:17,350 --> 00:00:20,400 طباعة بعض الإخراج إلى الشاشة، ولكن بعد ذلك عندما برنامجك أكثر، 7 00:00:20,400 --> 00:00:23,252 هناك حقا أي دليل هناك تم تشغيله من أي وقت مضى في المقام الأول. 8 00:00:23,252 --> 00:00:25,960 أعني، بالتأكيد، قد كنت قد تركت فإنه فتح في إطار المحطة الطرفية، 9 00:00:25,960 --> 00:00:29,770 ولكن إذا قمت بمسح الشاشة، هناك حقا لا يوجد دليل أنها موجودة. 10 00:00:29,770 --> 00:00:33,720 ليس لدينا وسيلة لتخزين المعلومات الثابتة والمعلومات 11 00:00:33,720 --> 00:00:36,890 موجود لدينا بعد توقف برنامج تشغيل، 12 00:00:36,890 --> 00:00:39,241 أو ليس لدينا حتى هذه اللحظة. 13 00:00:39,241 --> 00:00:41,490 على الرغم من حسن الحظ، ج يفعل توفر لنا القدرة 14 00:00:41,490 --> 00:00:44,220 القيام بذلك عن طريق تنفيذ ما يسمى 15 00:00:44,220 --> 00:00:48,330 ملف، بنية الأساس يمثل الملف الذي سيضاعف 16 00:00:48,330 --> 00:00:53,826 انقر على جهاز الكمبيوتر الخاص بك، إذا كنت تستخدم لبيئة المستخدم الرسومية. 17 00:00:53,826 --> 00:00:55,700 عموما عند العمل مع ج، ونحن في الواقع 18 00:00:55,700 --> 00:00:59,965 الذهاب للعمل مع مؤشرات إلى files-- ملف stars-- 19 00:00:59,965 --> 00:01:02,090 باستثناء قليلا عندما نتحدث عن بضعة 20 00:01:02,090 --> 00:01:04,560 من الوظائف التي العمل مع مؤشرات الملفات. 21 00:01:04,560 --> 00:01:08,990 أنت لست بحاجة إلى أن حفروا حقا عميق جدا في فهم مؤشرات 22 00:01:08,990 --> 00:01:09,730 أنفسهم. 23 00:01:09,730 --> 00:01:12,870 هناك قليلا قليلا تيني حيث سنتحدث عنها، 24 00:01:12,870 --> 00:01:18,090 لكن ملف عموما مؤشرات و مؤشرات، في حين مترابطة، 25 00:01:18,090 --> 00:01:20,290 ليست بالضبط نفس الشيء. 26 00:01:20,290 --> 00:01:22,440 >> الآن ماذا يعني عندما أقول البيانات المستمرة؟ 27 00:01:22,440 --> 00:01:23,650 ما هو البيانات المستمرة؟ 28 00:01:23,650 --> 00:01:25,232 لماذا نهتم به؟ 29 00:01:25,232 --> 00:01:27,190 نقول، على سبيل المثال، أن كنت تقوم بتشغيل برنامج 30 00:01:27,190 --> 00:01:29,850 أو كنت قد لإعادة كتابة برنامج لعبة، 31 00:01:29,850 --> 00:01:32,960 وأنت تريد أن تتبع جميع تحركات المستخدم 32 00:01:32,960 --> 00:01:36,620 ذلك أنه ربما إذا كان هناك شيء يذهب على نحو خاطئ، يمكنك مراجعة الملف بعد المباراة. 33 00:01:36,620 --> 00:01:39,970 هذا ما نعنيه عندما الحديث عن البيانات المستمرة. 34 00:01:39,970 --> 00:01:43,930 >> في سياق تشغيل الخاص بك برنامج، يتم إنشاء الملف. 35 00:01:43,930 --> 00:01:45,680 وعندما برنامجك توقف تشغيل، 36 00:01:45,680 --> 00:01:48,689 هذا الملف لا يزال موجودا على النظام الخاص بك. 37 00:01:48,689 --> 00:01:50,230 ويمكننا أن ننظر في الأمر والنظر فيه. 38 00:01:50,230 --> 00:01:53,670 وهكذا سيتم تعيين هذا البرنامج ل خلقت بعض البيانات الثابتة، 39 00:01:53,670 --> 00:01:57,390 توجد بيانات بعد البرنامج انتهى قيد التشغيل. 40 00:01:57,390 --> 00:02:02,320 >> الآن كل هذه الوظائف التي عمل مع إنشاء الملفات والتلاعب 41 00:02:02,320 --> 00:02:04,940 لهم بطرق مختلفة يعيش في io.h القياسية، 42 00:02:04,940 --> 00:02:08,210 وهو ملف رأس من المحتمل أنك قد تم جنيه 43 00:02:08,210 --> 00:02:10,910 بما في ذلك في الجزء العلوي من جميلة الكثير كافة البرامج 44 00:02:10,910 --> 00:02:14,130 لأنه يحتوي على واحد من معظم وظائف مفيدة بالنسبة لنا، 45 00:02:14,130 --> 00:02:16,130 printf، الذي يتيح أيضا يعيش في io.h. القياسية 46 00:02:16,130 --> 00:02:20,400 لذلك لا تحتاج لقصف تشمل أي ملفات إضافية ربما 47 00:02:20,400 --> 00:02:23,540 من أجل العمل مع مؤشرات الملفات. 48 00:02:23,540 --> 00:02:29,980 >> الآن كل وظيفة مؤشر ملف واحد، أو كل ملف واحد I / O، المدخلات والمخرجات 49 00:02:29,980 --> 00:02:33,310 وظيفة، يقبل واحدة من معالمها أو المدخلات 50 00:02:33,310 --> 00:02:35,822 وpointer-- ملف باستثناء لأحد، والدالة fopen، التي 51 00:02:35,822 --> 00:02:38,280 ما كنت تستخدم للحصول على الملف المؤشر في المقام الأول. 52 00:02:38,280 --> 00:02:41,010 ولكن بعد أن كنت قد فتح ملف وتحصل على مؤشرات الملف، 53 00:02:41,010 --> 00:02:43,510 يمكنك ثم تمريرها كما الحجج لمختلف الوظائف 54 00:02:43,510 --> 00:02:46,720 ونحن في طريقنا للحديث عن اليوم، فضلا عن العديد من الآخرين 55 00:02:46,720 --> 00:02:48,520 بحيث يمكنك العمل مع الملفات. 56 00:02:48,520 --> 00:02:50,980 >> لذلك هناك ست جدا تلك الأساسية المشتركة 57 00:02:50,980 --> 00:02:52,870 أننا بصدد الحديث عنه اليوم. 58 00:02:52,870 --> 00:02:57,160 الدالة fopen وصاحبه وظيفة fclose، fgetc 59 00:02:57,160 --> 00:03:02,670 ولها وظيفة رفيق fputc، وfread وظيفة المرافق له، 60 00:03:02,670 --> 00:03:03,820 fwrite. 61 00:03:03,820 --> 00:03:05,180 لذلك دعونا الحصول على الحق في ذلك. 62 00:03:05,180 --> 00:03:07,050 >> fopen-- ماذا يفعل؟ 63 00:03:07,050 --> 00:03:10,050 كذلك، فإنه يفتح ملف و يعطيك مؤشر الملف إلى ذلك، 64 00:03:10,050 --> 00:03:14,000 بحيث يمكنك ثم استخدام ذلك ملف مؤشر كحجة 65 00:03:14,000 --> 00:03:16,730 إلى أي من الملفات الأخرى I ظائف / O. 66 00:03:16,730 --> 00:03:19,100 أهم شيء لنتذكر مع الدالة fopen 67 00:03:19,100 --> 00:03:24,222 وأنه بعد أن فتح ملف أو إجراء مكالمة مثل واحد هنا، 68 00:03:24,222 --> 00:03:26,930 تحتاج إلى التحقق للتأكد من أن المؤشر أنك حصلت على العودة 69 00:03:26,930 --> 00:03:28,320 لا يساوي قيمة خالية. 70 00:03:28,320 --> 00:03:31,320 إذا لم تكن قد شاهدت الفيديو على مؤشرات، وهذا قد لا يكون له معنى. 71 00:03:31,320 --> 00:03:35,639 ولكن إذا حاولت وdereference أذكر مؤشر فارغة، 72 00:03:35,639 --> 00:03:38,180 سوف برنامجك تعاني على الأرجح تجزئة (غير مسموع). 73 00:03:38,180 --> 00:03:40,540 نحن نريد أن نتأكد من أننا حصلت على العودة مؤشر المشروعة. 74 00:03:40,540 --> 00:03:43,665 الغالبية العظمى من الوقت ونحن وقد حصلت على مؤشر الشرعي العودة 75 00:03:43,665 --> 00:03:45,280 وأنه لن يكون هناك مشكلة. 76 00:03:45,280 --> 00:03:46,760 >> كيف لنا إذن أن إجراء مكالمة إلى FOPEN؟ 77 00:03:46,760 --> 00:03:48,051 يبدو الى حد كبير مثل هذا. 78 00:03:48,051 --> 00:03:52,690 نجمة ملف ptr-- PTR كونه عام اسم لملف pointer-- الدالة fopen 79 00:03:52,690 --> 00:03:57,300 ونحن نمر في أمرين، اسم ملف وعملية ونحن نريد القيام بها. 80 00:03:57,300 --> 00:04:01,690 لذلك قد يكون لدينا مكالمة يشبه this-- PTR نجمة ملف 1 يساوي الدالة fopen 81 00:04:01,690 --> 00:04:04,040 file1.txt. 82 00:04:04,040 --> 00:04:07,020 والعملية لقد اخترت هي ص. 83 00:04:07,020 --> 00:04:08,639 >> فما رأيك ص هنا؟ 84 00:04:08,639 --> 00:04:11,180 ما هي أنواع الأشياء التي قد تكون قادرة على القيام به لملفات؟ 85 00:04:11,180 --> 00:04:13,760 86 00:04:13,760 --> 00:04:17,500 حتى r هي العملية التي نحن اختيار عندما نريد لقراءة الملف. 87 00:04:17,500 --> 00:04:20,260 لذلك فإننا في الأساس عندما نحن إجراء مكالمة من هذا القبيل 88 00:04:20,260 --> 00:04:25,440 يكون الحصول على أنفسنا مؤشر الملف بحيث يمكننا بعد ذلك يمكن قراءة المعلومات 89 00:04:25,440 --> 00:04:27,770 من file1.txt. 90 00:04:27,770 --> 00:04:34,190 >> وبالمثل، يمكن أن نفتح ملف 2.txt للكتابة وحتى نتمكن من تمرير ptr2، 91 00:04:34,190 --> 00:04:38,210 مؤشر الملف لقد خلق هنا، كحجة لأي وظيفة 92 00:04:38,210 --> 00:04:40,080 يكتب المعلومات إلى ملف. 93 00:04:40,080 --> 00:04:43,767 وعلى غرار الكتابة، هناك أيضا خيار لإلحاق، أ. 94 00:04:43,767 --> 00:04:45,600 الفرق بين الكتابة وإلحاق 95 00:04:45,600 --> 00:04:50,920 يجري ذلك عند الكتابة إلى ملف، إذا قمت بإجراء مكالمة لFOPEN للكتابة 96 00:04:50,920 --> 00:04:54,761 وهذا الملف موجود بالفعل، انها الذهاب إلى الكتابة فوق الملف بأكمله. 97 00:04:54,761 --> 00:04:56,510 انها سوف تبدأ في البداية، 98 00:04:56,510 --> 00:04:58,820 حذف جميع المعلومات هذا هو بالفعل هناك. 99 00:04:58,820 --> 00:05:02,210 >> في حين إذا كنت فتحه لإلحاق، وسوف تذهب إلى نهاية الملف 100 00:05:02,210 --> 00:05:04,340 إذا كان هناك بالفعل النص في أو المعلومات الواردة فيه، 101 00:05:04,340 --> 00:05:06,040 وانها ستبدأ ثم الكتابة من هناك. 102 00:05:06,040 --> 00:05:08,570 حتى أنك لن تخسر أي من معلومات كنت قد فعلت من قبل. 103 00:05:08,570 --> 00:05:12,110 إذا كنت ترغب في إرسال أو إلحاق نوع من يعتمد على الوضع. 104 00:05:12,110 --> 00:05:16,840 ولكن عليك ربما نعرف ما العملية الصحيحة هي عندما يحين الوقت. 105 00:05:16,840 --> 00:05:18,020 ولهذا FOPEN. 106 00:05:18,020 --> 00:05:18,930 >> ماذا عن fclose؟ 107 00:05:18,930 --> 00:05:21,600 حسنا، ببساطة جدا، fclose تقبل فقط مؤشر الملف. 108 00:05:21,600 --> 00:05:24,000 وكما قد تتوقع، فإنه يغلق هذا الملف. 109 00:05:24,000 --> 00:05:29,270 ومرة واحدة لقد أغلقت ملف، لا يمكننا أداء أي ملف أكثر I ظائف / O، 110 00:05:29,270 --> 00:05:31,420 القراءة أو الكتابة، على هذا الملف. 111 00:05:31,420 --> 00:05:36,444 علينا أن إعادة فتح ملف وقت آخر من أجل 112 00:05:36,444 --> 00:05:38,610 لمواصلة العمل مع باستخدام وظائف I / O. 113 00:05:38,610 --> 00:05:41,520 وسائل fclose حتى ننتهي العمل مع هذا الملف. 114 00:05:41,520 --> 00:05:44,690 وكل ما تحتاجه للمرور في غير اسم مؤشر الملف. 115 00:05:44,690 --> 00:05:50,010 لذلك على الزوجين قبل الشرائح، ونحن fopened ملف نصي 1 نقطة عن القراءة 116 00:05:50,010 --> 00:05:52,854 ونحن توكل ملف المؤشر إلى ptr1. 117 00:05:52,854 --> 00:05:55,020 الآن قررنا نحن فعل القراءة من هذا الملف. 118 00:05:55,020 --> 00:05:56,561 نحن لسنا بحاجة للقيام بأي أكثر معها. 119 00:05:56,561 --> 00:05:58,890 نستطيع ptr1 فقط fclose. 120 00:05:58,890 --> 00:06:01,950 وبالمثل، يمكن لنا fclose بعضها الآخر. 121 00:06:01,950 --> 00:06:02,450 حسنا. 122 00:06:02,450 --> 00:06:03,700 ذلك أن فتح وإغلاق. 123 00:06:03,700 --> 00:06:05,780 تلك هي الأساسية اثنين بدء العمليات. 124 00:06:05,780 --> 00:06:08,050 >> الآن نريد أن الواقع القيام ببعض الاشياء، 125 00:06:08,050 --> 00:06:11,940 والوظيفة الأولى التي سنقوم رؤية من شأنها أن تفعل هذا هو fgetc-- 126 00:06:11,940 --> 00:06:14,110 ملف الحصول على الحرف. 127 00:06:14,110 --> 00:06:17,350 هذا ما fgetc عموما سوف تترجم إلى. 128 00:06:17,350 --> 00:06:20,190 هدفه في الحياة هو أن قراءة الحرف التالي، 129 00:06:20,190 --> 00:06:22,079 أو إذا كان هذا هو كلماتكم النداء الأول للfgetc 130 00:06:22,079 --> 00:06:23,870 لملف معين، الحرف الأول. 131 00:06:23,870 --> 00:06:26,210 ولكن بعد ذلك بعد ذلك، يمكنك الحصول على واحدة المقبل، 132 00:06:26,210 --> 00:06:31,500 الحرف التالي للغاية من هذا الملف، ويخزنها في متغير حرف. 133 00:06:31,500 --> 00:06:34,490 كما فعلناه هنا، شار الفصل يساوي fgetc، 134 00:06:34,490 --> 00:06:36,389 تمرير باسم مؤشر الملف. 135 00:06:36,389 --> 00:06:38,180 مرة أخرى، انها جدا المهم هنا أن نتذكر 136 00:06:38,180 --> 00:06:41,430 أنه من أجل أن يكون هذه العملية تنجح، 137 00:06:41,430 --> 00:06:45,690 مؤشر الملف نفسه يجب أن كنت تم فتح للقراءة. 138 00:06:45,690 --> 00:06:50,589 لا يمكننا قراءة حرف من ملف المؤشر الذي فتحنا للكتابة. 139 00:06:50,589 --> 00:06:52,630 حتى أن واحدة من القيود المفروضة على الدالة fopen، أليس كذلك؟ 140 00:06:52,630 --> 00:06:55,470 علينا أن تقيد أنفسنا لأداء فقط 141 00:06:55,470 --> 00:06:57,710 عملية واحدة مع مؤشر ملف واحد. 142 00:06:57,710 --> 00:07:00,220 إذا أردنا أن القراءة و الكتابة من نفس الملف، 143 00:07:00,220 --> 00:07:03,840 سيكون لدينا مفتوحة منفصلين مؤشرات الملف إلى نفس الملف-- 144 00:07:03,840 --> 00:07:05,670 واحدة للقراءة، واحد للكتابة. 145 00:07:05,670 --> 00:07:08,400 >> ذلك مرة أخرى، والسبب الوحيد أحمل حتى الآن هو أن 146 00:07:08,400 --> 00:07:11,920 لأنه إذا نحن في طريقنا لإجراء مكالمة لfgetc، التي انا يجب مؤشر الملف 147 00:07:11,920 --> 00:07:14,172 تم فتح للقراءة. 148 00:07:14,172 --> 00:07:15,880 ثم ببساطة جدا، كل ما عليك القيام به 149 00:07:15,880 --> 00:07:17,546 هو تمرير باسم مؤشر الملف. 150 00:07:17,546 --> 00:07:21,060 ذلك الفصل شار يساوي ptr1 fgetc. 151 00:07:21,060 --> 00:07:23,200 >> وهذا ما سوف يحصل لنا وcharacter-- المقبل 152 00:07:23,200 --> 00:07:25,575 أو مرة أخرى، إذا كان هذا هو أول الوقت حققنا هذه الدعوة، 153 00:07:25,575 --> 00:07:29,750 وcharacter-- أولا من كل ما وأشار الملف إلى قبل ptr1. 154 00:07:29,750 --> 00:07:32,210 أذكر أن ذلك كان ملف 1 نقطة النص. 155 00:07:32,210 --> 00:07:36,490 ستحصل على الحرف الأول من ذلك وسنقوم بتخزينها في الفصل متغير. 156 00:07:36,490 --> 00:07:37,941 جميلة واضحة. 157 00:07:37,941 --> 00:07:40,190 ولذا فإننا قد بحثت فقط في ثلاث وظائف وبالفعل نحن 158 00:07:40,190 --> 00:07:43,070 تستطيع ان تفعل شيئا أنيق جدا. 159 00:07:43,070 --> 00:07:46,320 >> لذلك إذا أخذنا هذه القدرة للحصول على شخصية 160 00:07:46,320 --> 00:07:48,943 ونحن حلقة it-- لذلك نحن الاستمرار في الحصول على الأحرف 161 00:07:48,943 --> 00:07:51,390 من ملف مرارا و مرارا وover-- نحن الآن 162 00:07:51,390 --> 00:07:54,500 يمكن قراءة كل واحد طابع الملف. 163 00:07:54,500 --> 00:07:58,670 وإذا كان لنا أن طباعة كل حرف على الفور بعد القراءة، 164 00:07:58,670 --> 00:08:01,960 قرأناه الآن من ملف و طبعت محتوياته على الشاشة. 165 00:08:01,960 --> 00:08:05,610 لقد متصلا على نحو فعال هذا الملف على الشاشة. 166 00:08:05,610 --> 00:08:09,670 وهذا ما ل القيادة لينكس القط لا. 167 00:08:09,670 --> 00:08:13,250 >> إذا قمت بكتابة القط في اسم الملف، سوف طباعة محتويات 168 00:08:13,250 --> 00:08:15,160 الملف في نافذة المحطة الطرفية. 169 00:08:15,160 --> 00:08:19,010 وحتى هذه الحلقة قليلا هنا، ثلاثة أسطر فقط من التعليمات البرمجية، 170 00:08:19,010 --> 00:08:23,270 ولكنها مكررة على نحو فعال القط الأوامر لينكس. 171 00:08:23,270 --> 00:08:25,210 حتى يمكن بناء الجملة هذا تبدو غريبة بعض الشيء، 172 00:08:25,210 --> 00:08:26,670 ولكن هنا ما يحدث هنا. 173 00:08:26,670 --> 00:08:31,460 حين الفصل يساوي fgetc، PTR ليس يساوي EOF-- انها الفم كله، 174 00:08:31,460 --> 00:08:34,669 ولكن دعونا كسرها نزولا فقط لذلك فمن الواضح في بناء الجملة. 175 00:08:34,669 --> 00:08:37,169 لقد عزز ذلك من أجل الفضاء، 176 00:08:37,169 --> 00:08:39,049 على الرغم من انها قليلا صعبة التركيب. 177 00:08:39,049 --> 00:08:41,194 >> حتى هذا الجزء في حق الأخضر الآن، ما هو يفعل؟ 178 00:08:41,194 --> 00:08:42,860 حسنا، هذا مجرد دعوة fgetc لدينا، أليس كذلك؟ 179 00:08:42,860 --> 00:08:44,530 لقد رأينا ذلك من قبل. 180 00:08:44,530 --> 00:08:49,500 انها واحدة الحصول على حرف من الملف. 181 00:08:49,500 --> 00:08:53,220 ثم نقارن ذلك شخصية ضد EOF. 182 00:08:53,220 --> 00:08:57,470 EOF هو قيمة خاصة هذا المعرفة في io.h القياسية، التي 183 00:08:57,470 --> 00:08:59,390 هو حرف نهاية الملف. 184 00:08:59,390 --> 00:09:03,450 وذلك أساسا ما الذي سيحدث وهذه الحلقة سوف تقرأ حرف، 185 00:09:03,450 --> 00:09:07,445 مقارنته الفولكلوري، و حرف نهاية الملف. 186 00:09:07,445 --> 00:09:10,070 إذا كانت لا تطابق، لذلك ليس لدينا وصلت إلى نهاية الملف، 187 00:09:10,070 --> 00:09:11,490 سنقوم بطباعة هذا الطابع بها. 188 00:09:11,490 --> 00:09:13,740 ثم سنذهب إلى بداية الحلقة مرة أخرى. 189 00:09:13,740 --> 00:09:18,310 وسوف نحصل على حرف، وتحقق ضد EOF، وطباعته، وهلم جرا 190 00:09:18,310 --> 00:09:21,094 وهلم جرا وهلم جرا، حلقات عبر بهذه الطريقة 191 00:09:21,094 --> 00:09:22,760 حتى أننا قد وصلنا إلى نهاية الملف. 192 00:09:22,760 --> 00:09:24,593 ومن ثم من قبل تلك النقطة، سيكون لدينا المطبوعة 193 00:09:24,593 --> 00:09:26,210 من محتويات الملف. 194 00:09:26,210 --> 00:09:29,450 ذلك مرة أخرى، شاهدنا فقط الدالة fopen، fclose، وfgetc 195 00:09:29,450 --> 00:09:34,950 وبالفعل يمكننا مكررة أمر لينكس المحطة. 196 00:09:34,950 --> 00:09:38,850 >> وكما قلت في البداية، كان لدينا fgetc وfputc، 197 00:09:38,850 --> 00:09:41,860 وكان fputc الرفيق وظيفة من fgetc. 198 00:09:41,860 --> 00:09:44,880 وهكذا، كما قد يتصور، ذلك هو ما يعادل الكتابة. 199 00:09:44,880 --> 00:09:49,440 لأنها تتيح لنا لكتابة حرف واحد إلى ملف. 200 00:09:49,440 --> 00:09:53,290 >> مرة أخرى، التحذير الحالي، فقط مثل ما كان مع fgetc، الملف 201 00:09:53,290 --> 00:09:56,660 اننا الكتابة لانا يجب تكن فتح باب الكتابة أو إلحاق. 202 00:09:56,660 --> 00:10:00,820 إذا حاولنا واستخدام fputc على ملف أننا قد فتحت للقراءة، 203 00:10:00,820 --> 00:10:02,760 ونحن في طريقنا للمعاناة قليلا من الخطأ. 204 00:10:02,760 --> 00:10:04,440 لكن الدعوة بسيطة جدا. 205 00:10:04,440 --> 00:10:08,000 العاصمة fputc A ptr2، كل وهذا ما تنوي القيام به هو انها 206 00:10:08,000 --> 00:10:12,040 أريد أن أكتب هذه الرسالة إلى A في ملف 2 نقطة 207 00:10:12,040 --> 00:10:14,760 النص، الذي كان اسم الملف الذي فتحنا وتعيين 208 00:10:14,760 --> 00:10:17,280 المؤشر إلى ptr2. 209 00:10:17,280 --> 00:10:20,430 لذلك نحن ذاهبون لكتابة العاصمة A إلى ملف 2 نقطة النص. 210 00:10:20,430 --> 00:10:24,592 وسنقوم إرسال تعجب أشر إلى ملف 3 نقطة 211 00:10:24,592 --> 00:10:27,330 النص الذي أشار إليه ptr3. 212 00:10:27,330 --> 00:10:29,730 ذلك مرة أخرى، واضحة جدا هنا. 213 00:10:29,730 --> 00:10:32,727 >> ولكن الآن يمكننا أن نفعل شيئا آخر. 214 00:10:32,727 --> 00:10:34,560 لدينا هذا المثال كنا مجرد الذهاب على 215 00:10:34,560 --> 00:10:38,950 عن كونها قادرة على تكرار القط القيادة لينكس، تلك التي تطبع 216 00:10:38,950 --> 00:10:40,500 إلى الشاشة. 217 00:10:40,500 --> 00:10:43,510 حسنا، الآن أن لدينا القدرة لقراءة الأحرف من الملفات 218 00:10:43,510 --> 00:10:46,590 وكتابة الأحرف إلى الملفات لماذا لا يتم فقط استبدال ذلك 219 00:10:46,590 --> 00:10:50,720 الدعوة إلى printf مع دعوة fputc. 220 00:10:50,720 --> 00:10:54,090 >> والآن لدينا ازدواجية حزب المحافظين، أمر أساسي جدا لينكس 221 00:10:54,090 --> 00:10:59,100 أن تحدثنا عن الطريق طويل قبل في لينكس أوامر الفيديو. 222 00:10:59,100 --> 00:11:01,070 قمنا بفعالية تكرار هذا الحق هنا. 223 00:11:01,070 --> 00:11:04,790 نحن قراءة حرف ثم نحن كتابة هذا الحرف إلى ملف آخر. 224 00:11:04,790 --> 00:11:07,660 القراءة من ملف واحد، والكتابة إلى آخر، وعلى مدى أكثر 225 00:11:07,660 --> 00:11:11,350 وتكرارا حتى ضربنا EOF. 226 00:11:11,350 --> 00:11:14,250 لقد وصلنا إلى نهاية ملف نحاول نسخ منها. 227 00:11:14,250 --> 00:11:18,500 وبذلك سنكون قد كتابة جميع من الشخصيات نحتاج إلى ملف 228 00:11:18,500 --> 00:11:19,500 اننا الكتابة ل. 229 00:11:19,500 --> 00:11:24,270 لذلك هذا هو حزب المحافظين، الأمر نسخة لينكس. 230 00:11:24,270 --> 00:11:26,550 >> في بداية هذا الفيديو، كان التحذير 231 00:11:26,550 --> 00:11:29,840 أننا سوف نتحدث قليلا عن المؤشرات. 232 00:11:29,840 --> 00:11:32,480 هنا هو على وجه التحديد حيث نحن بصدد الحديث عن مؤشرات 233 00:11:32,480 --> 00:11:34,800 بالإضافة إلى تقديم مؤشرات. 234 00:11:34,800 --> 00:11:37,870 حتى هذه المهمة تبدو مخيف. 235 00:11:37,870 --> 00:11:39,120 انها حصلت على العديد من المعلمات. 236 00:11:39,120 --> 00:11:40,430 هناك الكثير مما يجري هنا. 237 00:11:40,430 --> 00:11:42,760 هناك الكثير من مختلف الألوان والنصوص. 238 00:11:42,760 --> 00:11:47,100 ولكن في الحقيقة، انها مجرد إصدار عام fgetc 239 00:11:47,100 --> 00:11:50,110 تسمح لنا للحصول على أي كمية المعلومات. 240 00:11:50,110 --> 00:11:53,560 يمكن أن تكون غير فعالة قليلا إذا نحن الحصول على حرف واحد في وقت واحد، 241 00:11:53,560 --> 00:11:55,770 بالتكرار عبر ملف حرف واحد في وقت واحد. 242 00:11:55,770 --> 00:12:00,230 لن يكون أجمل للحصول على 100 في وقت واحد أو 500 في وقت واحد؟ 243 00:12:00,230 --> 00:12:03,250 >> حسنا، fread وظيفة المرافق له fwrite، والتي سوف نتحدث عن 244 00:12:03,250 --> 00:12:05,490 في الثانية، تسمح لنا لفعل ذلك. 245 00:12:05,490 --> 00:12:08,480 يمكننا أن نقرأ مبلغ التعسفي المعلومات من ملف 246 00:12:08,480 --> 00:12:10,290 ونحن تخزينه في مكان ما بشكل مؤقت. 247 00:12:10,290 --> 00:12:12,980 بدلا من أن تكون قادرة على مجرد أنها تناسب في متغير واحد، 248 00:12:12,980 --> 00:12:15,790 أننا قد نحتاج إلى تخزينها في صفيف. 249 00:12:15,790 --> 00:12:19,980 وهكذا، نحن نمر في أربعة الحجج لfread-- مؤشر 250 00:12:19,980 --> 00:12:23,940 إلى الموقع حيث نحن الذهاب لتخزين المعلومات، 251 00:12:23,940 --> 00:12:29,180 كيف كبيرة كل وحدة المعلومات سوف يكون، وكيف العديد من وحدات المعلومات 252 00:12:29,180 --> 00:12:35,192 نريد للحصول على، ومن الملف الذي نريد للحصول عليها. 253 00:12:35,192 --> 00:12:37,150 ربما أفضل مثال مع مثال هنا. 254 00:12:37,150 --> 00:12:41,640 لذلك دعونا نقول أن نعلن مجموعة من 10 الأعداد الصحيحة. 255 00:12:41,640 --> 00:12:45,080 لقد أعلنت للتو على كومة تعسفا كثافة العمليات آر 10. 256 00:12:45,080 --> 00:12:46,970 ذلك أن واضحة جدا. 257 00:12:46,970 --> 00:12:51,970 الآن ما نقوم به على الرغم من هو frecall وإننا نقرأ حجم كثافة العمليات 258 00:12:51,970 --> 00:12:54,180 مرات 10 بايت من المعلومات. 259 00:12:54,180 --> 00:12:59,040 حجم كثافة الوجود four-- هذا حجم عدد صحيح في ج. 260 00:12:59,040 --> 00:13:02,790 >> فما نقوم به هو أننا القراءة 40 بايت بقيمة المعلومات 261 00:13:02,790 --> 00:13:05,850 من الملف المشار إليه بواسطة PTR. 262 00:13:05,850 --> 00:13:08,600 ونحن تخزين تلك 40 بايت في مكان ما 263 00:13:08,600 --> 00:13:12,080 حيث وضعنا جانبا 40 بايت بقيمة الذاكرة. 264 00:13:12,080 --> 00:13:15,970 لحسن الحظ، لقد فعلت ذلك من قبل إعلان آر، أن مجموعة هناك. 265 00:13:15,970 --> 00:13:19,770 هذا هو قادر على عقد 10 وحدة أربعة بايت. 266 00:13:19,770 --> 00:13:22,860 حتى في المجموع، يمكن أن تعقد 40 بايت بقيمة المعلومات. 267 00:13:22,860 --> 00:13:26,540 ونحن نقرأ الآن 40 بايت المعلومات من الملف، 268 00:13:26,540 --> 00:13:30,330 ونحن تخزينه في آر. 269 00:13:30,330 --> 00:13:35,470 >> أذكر من الفيديو على المؤشرات التي اسم صفيف، مثل آر، 270 00:13:35,470 --> 00:13:38,370 هو في الحقيقة مجرد مؤشر لأول عنصرها. 271 00:13:38,370 --> 00:13:43,680 لذلك عندما نمر في آر هناك، ونحن هي، في الواقع، ويمر في المؤشر. 272 00:13:43,680 --> 00:13:46,120 >> وبالمثل يمكننا القيام به this-- نقوم به ليس بالضرورة 273 00:13:46,120 --> 00:13:51,200 تحتاج إلى حفظ عازلة لدينا على المكدس. 274 00:13:51,200 --> 00:13:54,990 يمكننا أيضا تخصيص حيوي منطقة عازلة مثل هذا، وذلك باستخدام malloc. 275 00:13:54,990 --> 00:13:57,340 تذكر عندما كنا حيوي تخصيص الذاكرة، 276 00:13:57,340 --> 00:14:00,550 نحن حفظه على كومة، وليس المكدس. 277 00:14:00,550 --> 00:14:02,110 لكنه ما زال عازلة. 278 00:14:02,110 --> 00:14:06,810 >> لا يزال، في هذه الحالة، عقد 640 بايت من المعلومات 279 00:14:06,810 --> 00:14:09,230 لأن ضعف يستغرق ثمانية بايت. 280 00:14:09,230 --> 00:14:11,570 ونطلبه 80 منهم. 281 00:14:11,570 --> 00:14:13,770 نحن نريد أن يكون الفضاء عقد 80 الزوجي. 282 00:14:13,770 --> 00:14:17,210 حتى 80 مرة 8 هي المعلومات 640 بايت. 283 00:14:17,210 --> 00:14:21,880 وهذا النداء إلى fread هي جمع 640 بايت من المعلومات 284 00:14:21,880 --> 00:14:27,770 من أشار الملف من قبل PTR وتخزينه الآن في arr2. 285 00:14:27,770 --> 00:14:32,770 >> الآن يمكننا أيضا علاج fread تماما مثل الدعوة إلى fgetc. 286 00:14:32,770 --> 00:14:37,140 في هذه الحالة، نحن مجرد محاولة ل الحصول على حرف واحد من الملف. 287 00:14:37,140 --> 00:14:40,070 ونحن لا نحتاج إلى مجموعة لعقد الطابع. 288 00:14:40,070 --> 00:14:43,170 يمكننا فقط تخزينه في متغير حرف. 289 00:14:43,170 --> 00:14:46,390 >> الصيد، على الرغم من أن عندما يكون لدينا مجرد متغير، 290 00:14:46,390 --> 00:14:50,290 نحن بحاجة إلى تمرير في عنوان هذا المتغير 291 00:14:50,290 --> 00:14:52,550 لنتذكر أن الحجة الأولى لfread 292 00:14:52,550 --> 00:14:59,210 هو مؤشر إلى الموقع والذاكرة حيث نريد لتخزين المعلومات. 293 00:14:59,210 --> 00:15:01,550 مرة أخرى، اسم ل مجموعة هي المؤشر. 294 00:15:01,550 --> 00:15:04,200 لذلك نحن لسنا في حاجة للقيام مجموعة علامة العطف. 295 00:15:04,200 --> 00:15:07,270 ولكن ج، والطابع ج هنا، ليس صفيف. 296 00:15:07,270 --> 00:15:08,390 انها مجرد متغير. 297 00:15:08,390 --> 00:15:11,840 ولذا فإننا بحاجة إلى تمرير ج العطف للإشارة 298 00:15:11,840 --> 00:15:15,350 أن هذا هو العنوان الذي نريد لتخزين هذه بايت واحد من المعلومات، 299 00:15:15,350 --> 00:15:20,479 هذا حرف واحد أن نحن جمع من PTR. 300 00:15:20,479 --> 00:15:22,270 Fwrite-- سأذهب من خلال المزيد من هذا قليلا 301 00:15:22,270 --> 00:15:25,440 quickly-- هي جميلة كثيرا أي ما يعادل الدقيق للfread 302 00:15:25,440 --> 00:15:27,720 إلا انها للكتابة بدلا من القراءة، فقط 303 00:15:27,720 --> 00:15:31,610 مثل other-- لقد كان مفتوحا وعلى مقربة، والحصول على حرف، 304 00:15:31,610 --> 00:15:32,530 كتابة حرف. 305 00:15:32,530 --> 00:15:35,040 الآن انها تحصل التعسفي كمية المعلومات، 306 00:15:35,040 --> 00:15:37,170 كمية التعسفي الأيمن من المعلومات. 307 00:15:37,170 --> 00:15:39,790 تماما مثل ذلك من قبل، ما في وسعنا لدينا مجموعة من 10 الأعداد الصحيحة 308 00:15:39,790 --> 00:15:43,210 حيث لدينا بالفعل المعلومات المخزنة، ربما. 309 00:15:43,210 --> 00:15:46,580 >> ربما كان بعض الأسطر من التعليمات البرمجية كان يجب أن تدخل بين هذين 310 00:15:46,580 --> 00:15:49,990 حيث أنا ملء آر مع شيء مفيد. 311 00:15:49,990 --> 00:15:51,880 I ملء مع 10 الأعداد الصحيحة مختلفة. 312 00:15:51,880 --> 00:15:54,920 وبدلا من ذلك، ما أنا به هو كتابة من آر 313 00:15:54,920 --> 00:15:58,600 وجمع المعلومات من آر. 314 00:15:58,600 --> 00:16:02,390 وأنا أخذ هذه المعلومات ووضعه في ملف. 315 00:16:02,390 --> 00:16:05,410 >> وذلك بدلا من كونها من الملف إلى المخزن المؤقت، 316 00:16:05,410 --> 00:16:08,790 ونحن في طريقنا الآن من المخزن المؤقت للملف. 317 00:16:08,790 --> 00:16:10,580 حتى انها مجرد العكس. 318 00:16:10,580 --> 00:16:16,680 ذلك مرة أخرى، تماما مثل قبل، يمكننا لدينا أيضا قسما كومة من الذاكرة 319 00:16:16,680 --> 00:16:19,600 بعد أن قمنا حيوي خصصت وقراءة من ذلك 320 00:16:19,600 --> 00:16:21,570 وإرسال ذلك إلى الملف. 321 00:16:21,570 --> 00:16:24,900 >> وايضا لدينا متغير واحد قادرة على اجراء بايت واحد 322 00:16:24,900 --> 00:16:27,200 من المعلومات، مثل حرف. 323 00:16:27,200 --> 00:16:29,830 ولكن مرة أخرى، ونحن بحاجة لتمرير في عنوان هذا المتغير 324 00:16:29,830 --> 00:16:31,840 عندما نريد أن القراءة منه. 325 00:16:31,840 --> 00:16:35,280 حتى نتمكن من إرسال المعلومات نجد في هذا العنوان 326 00:16:35,280 --> 00:16:39,050 لمؤشر الملف، PTR. 327 00:16:39,050 --> 00:16:41,630 >> هناك الكثير من الآخر ملف كبير أنا وظائف / O 328 00:16:41,630 --> 00:16:44,650 أن تفعل أشياء مختلفة إلى جانب تلك التي تحدثنا عنها اليوم. 329 00:16:44,650 --> 00:16:46,450 زوجان من تلك قد تجدها مفيدة 330 00:16:46,450 --> 00:16:50,840 هي fgets وfputs، وهي ما يعادل 331 00:16:50,840 --> 00:16:56,190 من fgetc وfputc لكن لقراءة سلسلة واحدة من ملف. 332 00:16:56,190 --> 00:16:59,020 بدلا من حرف واحد، فإنه سيتم قراءة السلسلة بأكملها. 333 00:16:59,020 --> 00:17:02,940 fprintf، والذي يسمح أساسا لك استخدام printf الكتابة إلى ملف. 334 00:17:02,940 --> 00:17:05,619 حتى مثلك يمكن أن تفعل استبدال متغير باستخدام 335 00:17:05,619 --> 00:17:09,900 ط النائبة في المئة و د في المئة، وهلم جرا، مع printf 336 00:17:09,900 --> 00:17:14,690 يمكنك كذلك اتخاذ سلسلة printf والطباعة شيء 337 00:17:14,690 --> 00:17:16,800 من هذا القبيل إلى ملف. 338 00:17:16,800 --> 00:17:20,720 >> fseek-- إذا كان لديك جهاز دي في دي هو القياس وعادة ما تستخدم here-- 339 00:17:20,720 --> 00:17:23,109 هو نوع من مثل استخدام الخاص بك الترجيع وسريعة إلى الأمام 340 00:17:23,109 --> 00:17:25,819 أزرار للتنقل الفيلم. 341 00:17:25,819 --> 00:17:28,369 وبالمثل، يمكنك التحرك في جميع أنحاء الملف. 342 00:17:28,369 --> 00:17:30,250 واحدة من الأشياء داخل أن بنية الملف 343 00:17:30,250 --> 00:17:34,270 ج أن يخلق لك هو مؤشر من أين أنت في الملف. 344 00:17:34,270 --> 00:17:36,420 أنت في غاية ابتداء من الساعة صفر بايت،؟ 345 00:17:36,420 --> 00:17:39,290 هل أنت في البايت 100، بايت 1000، وهلم جرا؟ 346 00:17:39,290 --> 00:17:44,340 يمكنك استخدام fseek للتحرك بشكل تعسفي هذا المؤشر إلى الأمام أو الخلف. 347 00:17:44,340 --> 00:17:46,744 >> وftell، مرة أخرى على غرار لاعب دي في دي، 348 00:17:46,744 --> 00:17:49,660 هو مثل قليلا من ساعة ليقول لكم كم الدقائق والثواني لك 349 00:17:49,660 --> 00:17:52,480 هم في فيلم معين. 350 00:17:52,480 --> 00:17:56,990 وبالمثل، ftell يخبرك العديد من وحدات البايت كنت في الملف. 351 00:17:56,990 --> 00:18:00,210 feof هو نسخة مختلفة للكشف عما إذا كنت قد 352 00:18:00,210 --> 00:18:01,700 وصلت إلى نهاية الملف. 353 00:18:01,700 --> 00:18:03,600 وferror هي وظيفة التي يمكنك استخدامها 354 00:18:03,600 --> 00:18:06,959 لاكتشاف ما إذا كان شيء ما ذهبت عمل خاطئ مع ملف. 355 00:18:06,959 --> 00:18:08,750 مرة أخرى، وهذا هو فقط خدش السطح. 356 00:18:08,750 --> 00:18:12,730 لا يزال هناك الكثير أكثر ملف I / O وظائف في io.h. القياسية 357 00:18:12,730 --> 00:18:16,620 ولكن هذا ربما تحصل بدأت العمل مع مؤشرات الملفات. 358 00:18:16,620 --> 00:18:17,640 أنا دوغ ويد. 359 00:18:17,640 --> 00:18:19,750 هذا هو cs50. 360 00:18:19,750 --> 00:18:21,669