أهلا ومرحبا بكم مرة أخرى.
في هذه المحاضرة أريد نتحدث عن الكتابة إلى ملف.
سنركز عند الكتابة إلى ملف نصي.
ما سوف نتعلم عنه هو كيف يمكنك كتابة الأحرف ، وكيف يمكنك كتابة
السلاسل وكيف يمكنك كتابة إخراج منسق.
الطرق الثلاث أيضا ذلك كنا قادرين على القراءة.
إذن هناك ثلاث وظائف عليك حقًا أن تكون على
دراية من أجل القيام بهذه الأشياء.
أبسط عملية كتابة هي المنصوص عليها في وظيفة fputc.
لذلك مثلما كان هناك fgetc لقراءة الشخصيات ،
هناك fputc لكتابة الأحرف.
هذا سوف يكتب واحد حرف إلى ملف نصي ، fputc.
ليست فعالة مثل الكتابة خيوط ، ولكنها ضرورية في بعض الأحيان.
يأخذ عددًا صحيحًا كما هو المعلمة الأولى ومؤشر الملف
كمعامل ثاني وإرجاع عدد صحيح.
تقوم الوظيفة بكتابة ملف الحرف المحدد بواسطة
الوسيطة الأولى للملف التي حددتها الوسيطة الثانية.
لذلك يمثل مؤشر الملف ما يفعله دائمًا: الملف الذي تريد
الكتابة إليه.
ثم الشخصية التي أنت تريد في الواقع أن تكتب إلى
هي المعلمة الأولى الخاصة بك.
الشخصية التي تم إرجاعها هي ما كتب إذا نجح.
تذكر ، إذا تم إرجاع eof ، هذا يعني أنه كان فاشلاً.
إذا أعاد أي شيء آخر غير eof ، فهذا يعني أنه كان نجاحًا.
في الممارسة العملية ، الشخصيات لا يكتب عادة في ملف
فعلي واحدًا تلو الآخر.
إنه غير فعال للغاية.
وظيفة putc هي ما يعادل fputc.
غالبًا ما ترى هذا مستخدمًا أيضًا.
يتطلب نفس الحجج ونوع الإرجاع هو نفسه.
الفرق بينهما هو أنه قد يتم تنفيذ putc في المكتبة
القياسية كماكرو.
في حين أن fputc هي وظيفة كذلك.
ليس الكثير من الاختلافات ، ولكن لم نتعلم عن وحدات الماكرو.
لذلك سنلتزم بـ fputc لكتابة الأحرف الفردية.
وعلى سبيل المثال ، إنه واضحة ومباشرة جدا.
أول شيء عليك القيام به كالمعتاد هل يجب عليك فتح الملف.
قبل ذلك نعلن المتغيرات ، نعلن أن مؤشر ملف ، يجب أن يتم تهيئته
على أنه فارغ.
ثم العدد الصحيح الذي سنكتب.
عندما نفتح ملفنا ، ستفعل ذلك لاحظ أننا نقوم بعمل w أو w plus.
W تعني أننا ذاهبون إلى اكتب فقط ، لا يمكنك القراءة.
W plus تعني أنه يمكنك الكتابة والقراءة.
في هذه الحالة ، يمكننا الكتابة والقراءة.
هنا لدينا حلقة for.
نحن نمر بكل أحرف تبدأ من 33 إلى 100.
عندما تكون هذه أعداد صحيحة ، ماذا هذا يعني أن يتم تمثيل
الحرف في جدول ASCII.
لذلك إذا كنت تكتب حرفًا على سبيل المثال 59 ، عليك البحث عنه في جدول
ASCII لمعرفة ما يمثله ، لكنها ستكون شخصية حقيقية.
ها نحن نكتب فقط قيم ASCII من 33 إلى 100 ، ونحن
نقول fputc char fp.
ويمكنك استخدام التحويل وظائف إذا كنت تريد إنشاء
قيم وأعداد صحيحة ASCII ، يمكنك فقط استخدام atoi.
لذلك إذا كنت ترغب في كتابة الحرف c ، يمكنك أن تقول fputc atoi ثم
تضع c في علامتي اقتباس منفردتين.
سيكون ذلك جيدًا أيضًا لأنها ستحول ASCII
إلى عدد صحيح وتكتبه.
لكن الحجة الأولى هي عدد صحيح ، لذلك عليك كتابة عدد صحيح.
الحجة الثانية هي ملفنا المؤشر ، ومباشر جدا هناك.
ثم آخر شيء علينا فعله هل يجب علينا إغلاق هذا الملف.
ربما نريد أيضا اضبط مؤشر fp على قيمة خالية.
لكن مرة أخرى ، يتطلب الأمر عددًا صحيحًا.
لذا كن حذرا هناك.
يتم تمثيلها دائمًا في جدول ASCII.
لكن يمكنك تحويل الفعلي أحرف اثنين من الأعداد الصحيحة باستخدام atoi.
ماذا عن كتابة سلسلة إلى ملف نصي ،
يكون أكثر إفادة وكفاءة.
هذا هو المكان الذي تستخدمه وظيفة fputs.
هذا سيسمح لك الكتابة إلى أي ملف أو تيار.
إنه مشابه للأحجار ، ذلك تأخذ سلسلة شحن ثابتة تريد كتابتها
باسم المعلمة الأولى للمؤشر.
ويستغرق الأمر a ، كالثاني المعلمة ، مؤشر الملف ، الملف الذي
تريد الكتابة إليه.
ثم تقوم بإرجاع عدد صحيح.
لذا فإن الحجة الأولى هي لدينا قم بتأشير سلسلة الأحرف التي
تريد كتابتها.
الحجة الثانية هي الملف المؤشر نفسه ، وستكتب الوظيفة
أحرفًا من سلسلة حتى تصل إلى النهاية الفارغة.
لا يكتب الفارغ حرف فاصل للملف ، لذلك عليك
كتابته بشكل صريح.
هذا يمكن أن يعقد الأمور بسبب عندما تقرأ البيانات مرة
أخرى ، يمكن أن تكون متغيرة الطول و لن تنتهي عند الفاصل الفارغ.
لذلك عليك - توقع أن تكتب
أ سطر من النص يحتوي على حرف سطر جديد
في نهايته.
لذا تأكد من أنك مألوف مع الفاصل الصفري
وإما كتابته صراحة باستخدام fputc ، حرف واحد أو كتابته وسيضيف حرف السطر الجديد
بشكل أساسي في النهاية بعد كتابتها.
لذا فهي تتوقع ذلك الجديد حرف السطر ليكون هناك.
عليك أن تحدد ذلك صراحة.
هذا صريح جدا من حيث الكود.
أنت فقط تقول fopen.
Fputs ، يكتب سلسلة في ملف سطر جديد باستخدام مؤشر الملف.
ثم يكتب هنا fputs آخر سلسلة أخرى ثم تقوم بإغلاقها.
في هذه الحالة ، كتبنا اثنين سلاسل ، سطرين من التعليمات البرمجية في الواقع
أو سطرين في الملف ونحن فتح الملف باستخدام w plus المخصص للقراءة
والكتابة.
أمثلة الكتابة واضحة ومباشرة جدا.
ما عليك سوى استدعاء وظيفتين ، fopen ثم fputs ثم fclose.
الآن لكتابة الإخراج المنسق ، سنستخدم fprintf.
مرة أخرى ، ستلاحظ ذلك باستخدام المسح الضوئي للقراءة والإدخال
والطباعة ، ما عليك سوى إضافة ذلك fprefix قبل الوظيفة وأنت
تكتب إخراجًا منسقًا.
لذلك لكتابة الإخراج المنسق باستخدام fprintf ، فإنها تُرجع عددًا صحيحًا.
يأخذ دفق ملف مثل المعلمة الأولى ثم يتم
اتباع محددات التنسيق بواسطة الفاصلات مع عدد متغير من الوسيطات
لكل تنسيق محدد تمامًا مثل printf حقًا.
الوسيطة الأولى للدالة هو المؤشر إلى كائن الملف.
ثم الحجة الثانية هي هذا العدد المتغير من الحجج.
إنها سلسلة c تحتوي على واحد أو أكثر من العناصر التالية
، حرف مسافة بيضاء ، مسافة غير بيضاء شخصية ومحددات التنسيق.
ومرة أخرى ، إنه شديد على غرار printf.
لكنك في الواقع تكتب إلى ملف.
حتى تتمكن من الكتابة بتنسيق الإخراج إلى ملف.
إذا نجحت ، فسوف تعود عدد الأحرف المكتوبة.
خلاف ذلك ، سوف إرجاع رقم سالب
إذا لم ينجح.
يبدو شيء من هذا القبيل.
تقوم بتضمين رأس IO القياسي.
تقوم بإنشاء مؤشر الملف الخاص بك.
ثم تستخدم مؤشر الملف الخاص بك لفتح بعض الملفات النصية ، استخدمها مع w
plus للقراءة والكتابة وبعد ذلك فقط تقول fprintf.
في هذه الحالة ، نقول fprintf.
نحن نحدد الملف المؤشر ثم نحدد أربعة سلاسل
مفصولة بامتداد الفضاء ثم نسبة د.
ونحن نكتب مرحبا رقمي هو 555.
لذلك سيكون الملف في الواقع تنسيق البيانات عند كتابتها.
لنلق نظرة على هذا في كتل التعليمات البرمجية ونرى كيف يبدو.
لذلك ليس هناك الكثير من التعليمات البرمجية هنا.
لدينا فقط بضعة أسطر من التعليمات البرمجية.
في السطر الرابع ، نحن إنشاء مؤشر الملف الخاص بنا.
ومرة أخرى ، سنرغب في ذلك تهيئة هذا إلى لاغية.
بعد ذلك ، في السطر السادس ، نسمي fopen.
ونقول فتح ملف. TXT ، لذلك ملف. يجب أن يكون ملف robots.txt موجودًا
وفي مكان تشغيل الملف المصدر c أو إذا كنت تقوم بتنفيذ البرنامج يدويًا
أينما كان الملف القابل للتنفيذ.
نحن بصدد الانفتاح للقراءة والكتابة.
بعد أن فتحناها ، نريد التأكد من أن مؤشر
الملف ليس فارغًا.
لذلك نريد أن نقول ليس fp.
إذا لم يكن فارغًا ، فنحن يمكن أن تبدأ في كتابة البيانات.
وفي هذه الحالة ، في السطر 9 ، نحن سنقوم بكتابة البيانات المنسقة.
إذن ما سنكتبه هو سنكتب خيطًا واحدًا ، خيطين وثلاثة
خيطين ، وأربعة سلسلة ثم عدد صحيح.
وبعد ذلك تكون المعلمات التالية فقط سلاسل مفصولة
بفواصل وكذلك عدد صحيح في النهاية.
أنا فقط يجب أن أصلح هذه مزدوجة يقتبس لأنه لا يعمل بشكل صحيح ، لذا فإن 555
موجود في النهاية هناك.
وسوف يغلق بعد ذلك الملف وإعادته.
لذلك دعونا نمضي قدمًا ونحاول البناء هذا وتشغيله ولن نرى أي ناتج
حقيقي للتشغيل.
علينا أن ننظر في الشكل الذي يبدو عليه الملف.
لذلك عندما نقوم بتجميع هذا الملف ، تريد التأكد من
أن عبارة if لا تساوي قيمة خالية.
لذلك عندما نجري هذا ، مرة أخرى ، لن ترى أي ناتج
، سيتم تشغيله فقط.
وبعد ذلك عندما تنظر إلى الملف داخل الدليل ، سترى أنه
يحتوي على الإدخال في ملف سطر ، مرحبًا ، اسمي fpp أو في 555.
هكذا يمكنك ذلك كتابة إخراج منسق.
إنه أمر بسيط ومباشر.
هل يمكن أن تضيف جديدة خطوط إذا أردت.
سيضيف سطرًا جديدًا في النهاية ، ولكن يمكنك وضع شرطة مائلة عكسية n هنا.
إنه يعمل تمامًا مثل printf.
مرة أخرى ، علينا تشغيله ، نحن لا ترى أي مخرجات مثيرة للاهتمام
حتى تنظر إلى الملف.
وفي هذه الحالة ، سترى خط تغذية.
حتى كتابة الإخراج إلى ملف بسيط جدًا.
تريد كتابة الأحرف ، أنت تفعل
fputc ، تريد كتابة سلاسل fputs ، إخراج منسق fprintf.
سيكون لدينا بعض التحديات تساعدك في التعرف على
هذا الأمر بشكل أكبر ، ولكن من السهل جدًا القيام بذلك كتابة الإخراج إلى ملف نصي.
شكرًا لك.