2 00:00:00,000 --> 00:00:02,470 >> سرور 1: دعونا كتابة البرنامج الذي يطالب المستخدم عن أسماء و 3 00:00:02,470 --> 00:00:03,990 بيوت ثلاثة طلاب. 4 00:00:03,990 --> 00:00:07,300 ولكن بدلا من مجرد طباعة بعملهم أسماء والمنازل إلى الشاشة، دعونا 5 00:00:07,300 --> 00:00:09,660 بدلا من ذلك حفظ هذه المعلومات إلى القرص. 6 00:00:09,660 --> 00:00:14,530 وبعبارة أخرى، دعونا خلق، ويقول، CSV الملف، على قيم مفصولة بفواصل، 7 00:00:14,530 --> 00:00:17,720 الذي هو في الواقع مجرد ملف نصي برامج مثل إكسل أو أرقام 8 00:00:17,720 --> 00:00:21,690 يمكن فتح، وعلى نحو فعال حفظ تلك أسماء المنازل وذلك بشكل دائم أن 9 00:00:21,690 --> 00:00:23,220 يمكننا مراجعتها في وقت لاحق. 10 00:00:23,220 --> 00:00:25,960 >> للقيام بذلك، دعونا أولا نلقي نظرة على بعض رمز المتداول أن لدي 11 00:00:25,960 --> 00:00:27,650 بدأت مع بالفعل. 12 00:00:27,650 --> 00:00:32,380 لاحظ أن من بين أول الرؤوس حتى أعلى الآن lib.h القياسية التي 13 00:00:32,380 --> 00:00:36,710 يحدث لديك بعض وظائف ذات الصلة إلى ملف I / O، ملف الإدخال والإخراج. 14 00:00:36,710 --> 00:00:39,560 تلاحظ أن لقد أعلن أيضا ثابت دعا الطلاب - 15 00:00:39,560 --> 00:00:42,380 في كل مباراة دولية - التي تقدر قيمتها الثابت ترميز إلى ثلاثة. 16 00:00:42,380 --> 00:00:45,820 لاحظ الآن أن داخل بلدي الرئيسية البرنامج، وأنا أعلن مجموعة من 17 00:00:45,820 --> 00:00:50,270 حجم ثلاثة استخدام هذا ثابت يسمى طلاب كل من الأعضاء الذين هو من 18 00:00:50,270 --> 00:00:51,650 اكتب الطلاب. 19 00:00:51,650 --> 00:00:56,150 >> أذكر الآن أن الطالب سنقوم بتعريف وجود اسم ومنزل كل من 20 00:00:56,150 --> 00:01:00,410 والتي هي سلاسل كما في هذا يرشد الإعلان، نقطة ح. 21 00:01:00,410 --> 00:01:04,680 الآن مرة أخرى في structs1.c، لاحظ أنني وقد لحلقة هنا أن يحدث ل 22 00:01:04,680 --> 00:01:06,750 تكرار من صفر إلى ثلاثة. 23 00:01:06,750 --> 00:01:10,020 انها سوف تدفع لي عن الطالب اسم وبيت الطالب 24 00:01:10,020 --> 00:01:12,310 مرة أخرى ومرة ​​أخرى ومرة ​​أخرى. 25 00:01:12,310 --> 00:01:15,620 >> ثم في الجزء السفلي من هذا البرنامج، تلاحظ أن لدي آخر للحلقة 26 00:01:15,620 --> 00:01:19,970 ما يجري لتحرير الطالب إيث ل اسم وبيت الطالب إيث في ل 27 00:01:19,970 --> 00:01:21,570 شيدت بالمثل حلقة. 28 00:01:21,570 --> 00:01:24,480 للتأكد من أننا يمكن الجمع بين تلك الحلقات في واحدة فقط، ولكن أردت أن 29 00:01:24,480 --> 00:01:28,180 لدينا بعض متمايزين من التعليمات البرمجية من أجل المناقشة هنا. 30 00:01:28,180 --> 00:01:31,920 >> الآن في ما بين تلك الحلقات ل، دعونا فعلا آخر، وهذا واحد 31 00:01:31,920 --> 00:01:35,210 هدف في الحياة هو فعلا من إنقاذ جميع من هذه الأسماء والمنازل التي هي 32 00:01:35,210 --> 00:01:39,810 حاليا في RAM إلى القرص في شكل من قيم مفصولة بفواصل. 33 00:01:39,810 --> 00:01:42,080 للقيام بذلك، ونحن في طريقنا للاستخدام ثلاث وظائف جديدة - 34 00:01:42,080 --> 00:01:47,450 F مفتوحة، F printf، وF قريبة، والتي فتح ملف، طباعة إلى ملف، و 35 00:01:47,450 --> 00:01:48,440 إغلاق ملف. 36 00:01:48,440 --> 00:01:49,690 يمكننا استخدامها على النحو التالي. 37 00:01:49,690 --> 00:01:52,110 38 00:01:52,110 --> 00:01:58,240 >> FILE، في كل مباراة دولية، وهو نوعا من الفضول في C، ويحصل على FOPEN FILE 39 00:01:58,240 --> 00:02:03,020 نهاية الاقتباس الاقتباس والآن اسما لل ملف، مثلا، students.CSV، ولكن ما يمكن أن أقوله 40 00:02:03,020 --> 00:02:08,150 يطلق عليه معظم أي شيء، فاصلة والآن أنا الذهاب لتحديد واحد داخل ث 41 00:02:08,150 --> 00:02:09,390 من علامات اقتباس مزدوجة. 42 00:02:09,390 --> 00:02:13,290 W، كما كنت قد خمنت بالفعل، يعني أن الدالة fopen يجب فتح هذا الملف 43 00:02:13,290 --> 00:02:17,360 دعا Students.CSV لكتابة ذلك أننا يمكن أن ينقذ فعلا بعض 44 00:02:17,360 --> 00:02:19,370 محتويات إليها. 45 00:02:19,370 --> 00:02:23,080 >> دعونا الاختيار المجاورة إذا كان الملف لا تساوي فارغة. 46 00:02:23,080 --> 00:02:25,860 لأنه إذا كان كذلك، لديه شيء ربما ذهب خطأ في هذه الحالة نحن 47 00:02:25,860 --> 00:02:28,340 ينبغي ألا تستمر في محاولة لطباعة أي شيء لها. 48 00:02:28,340 --> 00:02:33,400 ولكن إذا لم تكن فارغة، ثم داخل الأقواس المتعرجة انا ذاهب الى تكرار 49 00:02:33,400 --> 00:02:38,030 من ط يساوي 0 على ما يصل إلى الطلاب، وانا ذاهب الى 50 00:02:38,030 --> 00:02:40,180 ط زيادة على كل تكرار. 51 00:02:40,180 --> 00:02:45,750 وداخل هذه الحلقة، وانا ذاهب ل fprintf وذلك لطباعة إلى ملف - 52 00:02:45,750 --> 00:02:47,940 على وجه التحديد واحد فتحت بالفعل - 53 00:02:47,940 --> 00:02:54,650 سلسلة يشبه هذا٪ s و٪ ق ن مائل اقتباس قريبة. 54 00:02:54,650 --> 00:02:58,790 >> والآن أريد أن سد العجز في كل من تلك العناصر النائبة القيم الفعلية 55 00:02:58,790 --> 00:03:03,390 من اسم الطالب ومنزل باستخدام مشغل نقطة. 56 00:03:03,390 --> 00:03:10,030 قوس الطلاب i.name والطلاب PAREN مقربة قوس i.house 57 00:03:10,030 --> 00:03:11,230 شبه القولون. 58 00:03:11,230 --> 00:03:16,180 الآن دون هذا للحلقة، وأنا ببساطة الذهاب الى استدعاء fclose من ملف من أجل 59 00:03:16,180 --> 00:03:18,520 لإغلاق ملف في نهاية المطاف. 60 00:03:18,520 --> 00:03:21,360 >> الآن عند تشغيل هذا البرنامج، لا ينبغي لي نرى في الواقع أي شيء على 61 00:03:21,360 --> 00:03:25,010 الشاشة، ولكن أرجو أن يكون بعد تشغيل هذا البرنامج ملف يسمى 62 00:03:25,010 --> 00:03:29,130 Students.CSV في نفس الدليل الذي أركض الأمر في أنه ينبغي 63 00:03:29,130 --> 00:03:32,480 تحتوي على مفصولة بفواصل قائمة من القيم. 64 00:03:32,480 --> 00:03:34,790 دعونا نلقي نظرة. 65 00:03:34,790 --> 00:03:41,690 >> جعل البنيات 1. / طالب structs1 ل اسم، دعنا نقول ديفيد، 66 00:03:41,690 --> 00:03:43,140 وانه سوف يعيش في ماذر. 67 00:03:43,140 --> 00:03:46,890 اسم الطالب، دعنا نقول، لورين، وقالت انها سوف تعيش في يفيريت. 68 00:03:46,890 --> 00:03:50,800 اسم الطالب، دعنا نقول، روب، وانه سوف يعيش في كيركلاند. 69 00:03:50,800 --> 00:03:54,050 الآن، مرة أخرى، كما هو متوقع، يظهر شيء قد حدث، ولكن اسمحوا لي 70 00:03:54,050 --> 00:03:58,790 المضي قدما في موجه الأوامر واكتب ز تحرير students.CSV على أمل أن 71 00:03:58,790 --> 00:04:00,850 هذا الملف موجود في الواقع. 72 00:04:00,850 --> 00:04:07,010 >> Gedit students.CSV ENTER، وبالفعل، لاحظ أن ملف يحتوي بحتة 73 00:04:07,010 --> 00:04:11,320 النص، ولكن النص مفصولة بفواصل لكل حقل موجود في الواقع. 74 00:04:11,320 --> 00:04:14,530 وإذا كنا نستخدمها، وليس CS50 الأجهزة، ولكن ماك أكثر دراية أو 75 00:04:14,530 --> 00:04:18,080 PC، اتضح أن نتمكن من الواقع فتح هذا الملف CSV مع أكثر 76 00:04:18,080 --> 00:04:20,400 برنامج مألوفة مثل إكسل أو أرقام. 77 00:04:20,400 --> 00:04:22,906