سرور 1: دعونا كتابة البرنامج الذي يطالب المستخدم عن أسماء و بيوت ثلاثة طلاب. ولكن بدلا من مجرد طباعة بعملهم أسماء والمنازل إلى الشاشة، دعونا بدلا من ذلك حفظ هذه المعلومات إلى القرص. وبعبارة أخرى، دعونا خلق، ويقول، CSV الملف، على قيم مفصولة بفواصل، الذي هو في الواقع مجرد ملف نصي برامج مثل إكسل أو أرقام يمكن فتح، وعلى نحو فعال حفظ تلك أسماء المنازل وذلك بشكل دائم أن يمكننا مراجعتها في وقت لاحق. للقيام بذلك، دعونا أولا نلقي نظرة على بعض رمز المتداول أن لدي بدأت مع بالفعل. لاحظ أن من بين أول الرؤوس حتى أعلى الآن lib.h القياسية التي يحدث لديك بعض وظائف ذات الصلة إلى ملف I / O، ملف الإدخال والإخراج. تلاحظ أن لقد أعلن أيضا ثابت دعا الطلاب - في كل مباراة دولية - التي تقدر قيمتها الثابت ترميز إلى ثلاثة. لاحظ الآن أن داخل بلدي الرئيسية البرنامج، وأنا أعلن مجموعة من حجم ثلاثة استخدام هذا ثابت يسمى طلاب كل من الأعضاء الذين هو من اكتب الطلاب. أذكر الآن أن الطالب سنقوم بتعريف وجود اسم ومنزل كل من والتي هي سلاسل كما في هذا يرشد الإعلان، نقطة ح. الآن مرة أخرى في structs1.c، لاحظ أنني وقد لحلقة هنا أن يحدث ل تكرار من صفر إلى ثلاثة. انها سوف تدفع لي عن الطالب اسم وبيت الطالب مرة أخرى ومرة ​​أخرى ومرة ​​أخرى. ثم في الجزء السفلي من هذا البرنامج، تلاحظ أن لدي آخر للحلقة ما يجري لتحرير الطالب إيث ل اسم وبيت الطالب إيث في ل شيدت بالمثل حلقة. للتأكد من أننا يمكن الجمع بين تلك الحلقات في واحدة فقط، ولكن أردت أن لدينا بعض متمايزين من التعليمات البرمجية من أجل المناقشة هنا. الآن في ما بين تلك الحلقات ل، دعونا فعلا آخر، وهذا واحد هدف في الحياة هو فعلا من إنقاذ جميع من هذه الأسماء والمنازل التي هي حاليا في RAM إلى القرص في شكل من قيم مفصولة بفواصل. للقيام بذلك، ونحن في طريقنا للاستخدام ثلاث وظائف جديدة - F مفتوحة، F printf، وF قريبة، والتي فتح ملف، طباعة إلى ملف، و إغلاق ملف. يمكننا استخدامها على النحو التالي. FILE، في كل مباراة دولية، وهو نوعا من الفضول في C، ويحصل على FOPEN FILE نهاية الاقتباس الاقتباس والآن اسما لل ملف، مثلا، students.CSV، ولكن ما يمكن أن أقوله يطلق عليه معظم أي شيء، فاصلة والآن أنا الذهاب لتحديد واحد داخل ث من علامات اقتباس مزدوجة. W، كما كنت قد خمنت بالفعل، يعني أن الدالة fopen يجب فتح هذا الملف دعا Students.CSV لكتابة ذلك أننا يمكن أن ينقذ فعلا بعض محتويات إليها. دعونا الاختيار المجاورة إذا كان الملف لا تساوي فارغة. لأنه إذا كان كذلك، لديه شيء ربما ذهب خطأ في هذه الحالة نحن ينبغي ألا تستمر في محاولة لطباعة أي شيء لها. ولكن إذا لم تكن فارغة، ثم داخل الأقواس المتعرجة انا ذاهب الى تكرار من ط يساوي 0 على ما يصل إلى الطلاب، وانا ذاهب الى ط زيادة على كل تكرار. وداخل هذه الحلقة، وانا ذاهب ل fprintf وذلك لطباعة إلى ملف - على وجه التحديد واحد فتحت بالفعل - سلسلة يشبه هذا٪ s و٪ ق ن مائل اقتباس قريبة. والآن أريد أن سد العجز في كل من تلك العناصر النائبة القيم الفعلية من اسم الطالب ومنزل باستخدام مشغل نقطة. قوس الطلاب i.name والطلاب PAREN مقربة قوس i.house شبه القولون. الآن دون هذا للحلقة، وأنا ببساطة الذهاب الى استدعاء fclose من ملف من أجل لإغلاق ملف في نهاية المطاف. الآن عند تشغيل هذا البرنامج، لا ينبغي لي نرى في الواقع أي شيء على الشاشة، ولكن أرجو أن يكون بعد تشغيل هذا البرنامج ملف يسمى Students.CSV في نفس الدليل الذي أركض الأمر في أنه ينبغي تحتوي على مفصولة بفواصل قائمة من القيم. دعونا نلقي نظرة. جعل البنيات 1. / طالب structs1 ل اسم، دعنا نقول ديفيد، وانه سوف يعيش في ماذر. اسم الطالب، دعنا نقول، لورين، وقالت انها سوف تعيش في يفيريت. اسم الطالب، دعنا نقول، روب، وانه سوف يعيش في كيركلاند. الآن، مرة أخرى، كما هو متوقع، يظهر شيء قد حدث، ولكن اسمحوا لي المضي قدما في موجه الأوامر واكتب ز تحرير students.CSV على أمل أن هذا الملف موجود في الواقع. Gedit students.CSV ENTER، وبالفعل، لاحظ أن ملف يحتوي بحتة النص، ولكن النص مفصولة بفواصل لكل حقل موجود في الواقع. وإذا كنا نستخدمها، وليس CS50 الأجهزة، ولكن ماك أكثر دراية أو PC، اتضح أن نتمكن من الواقع فتح هذا الملف CSV مع أكثر برنامج مألوفة مثل إكسل أو أرقام.