• Giga@hdv-tech.com
  • خدمة 24 ساعة عبر الإنترنت:
    • 7189078 ج
    • sns03
    • 6660e33e
    • يوتيوب 拷贝
    • الانستغرام

    ج ـ قراءة وكتابة الوثيقة

    الوقت ما بعد: 11 أغسطس - 2023

    يصف كيفية قيام مبرمج C بإنشاء ملف نصي أو ملف ثنائي وفتحه وإغلاقه.

    ملف ، يعني سلسلة من البايت ، سواء كان ملفًا نصيًا أو ملفًا ثنائيًا ، لغة C ، لا يوفر فقط الوصول إلى وظائف المستوى الأعلى ، ولكنه يوفر أيضًا استدعاء (OS) الأساسي لمعالجة الملفات على جهاز التخزين .سيشرح هذا الفصل الدعوات المهمة في إدارة المستندات.

    فتح ملف

    عادةً باستخدام الدالة fopen () لإنشاء ملف جديد أو فتح ملف موجود ، تقوم هذه الاستدعاء بتهيئة كائن من النوع FILE يحتوي على جميع المعلومات الضرورية للتحكم في التدفق.هذا هو النموذج الأولي لاستدعاء الوظيفة هذا:

    FILE * fopen (const char * filename ، const char * mode) ؛

    هنا اسم الملف عبارة عن سلسلة لتسمية ملف ، يمكن أن تكون قيمة وضع الوصول إحدى القيم التالية:

    نمط

    وصف

    r

    افتح ملفًا نصيًا موجودًا يسمح بقراءته.

    w

    افتح ملفًا نصيًا يسمح بالكتابة إلى الملف.إذا كان الملف غير موجود ، يتم إنشاء ملف جديد.هنا يقوم برنامجك بكتابة المحتوى من بداية الملف.إذا كان الملف موجودًا ، فسيتم اقتطاعه إلى الصفر وإعادة كتابته.

    a

    افتح ملفًا نصيًا واكتب إلى الملف في وضع الإلحاق.إذا كان الملف غير موجود ، يتم إنشاء ملف جديد.هنا ، يقوم برنامجك بإلحاق المحتوى بالملفات الموجودة لديك بالفعل.

    r+

    افتح ملفًا نصيًا يسمح لك بقراءة الملف وكتابته.

    w+

    افتح ملفًا نصيًا يسمح لك بقراءة الملف وكتابته.إذا كان الملف موجودًا بالفعل ، فسيتم اقتطاع الملف إلى الصفر ، وإذا لم يكن الملف موجودًا ، فسيتم إنشاء ملف جديد.

    a+

    افتح ملفًا نصيًا يسمح لك بقراءة الملف وكتابته.إذا كان الملف غير موجود ، يتم إنشاء ملف جديد.تبدأ القراءة في بداية الملف ، وتكون الكتابة في وضع الإلحاق فقط.

    إذا تمت معالجة ملف ثنائي ، فاستخدم وضع الوصول التالي لاستبدال ما سبق:

    "rb" ، "wb" ، "ab" ، "rb +" ، "r + b" ، "wb +" ، "w + b" ، "ab +" ، "a + b"

    ملف مغلق

    لإغلاق الملف ، يرجى استخدام الوظيفة fclose ().النموذج الأولي للوظيفة كما يلي:

    int fclose (FILE * fp) ؛

    • إذا تم إغلاق الملف بنجاح ، فإن الدالة fclose () ترجع صفرًا ، وفي حالة إرجاع الخطأ EOF.هذه الوظيفة ، في الواقع ، تزيل البيانات من المخزن المؤقت ، وتغلق الملف ، وتحرر كل الذاكرة المستخدمة لهذا الملف.EOF هو ثابت محدد في ملف الرأس stdio.h

    توفر مكتبة C القياسية وظائف متنوعة لقراءة الملفات وكتابتها بالأحرف أو كسلسلة ذات طول ثابت.

    اكتب إلى الملف

    فيما يلي أبسط الوظائف لكتابة الأحرف إلى الدفق:

    int fputc (int c، FILE * fp) ؛

    تكتب الدالة fputc () قيمة حرف المعلمة c في تدفق الإخراج الذي تشير إليه fp.في حالة نجاح عمليات الكتابة ، يتم إرجاع الحرف المكتوب و EOF في حالة حدوث خطأ.يمكنك استخدام الوظيفة التالية لكتابة سلسلة تنتهي بصفر في الدفق:

    int fputs (const char * s، FILE * fp) ؛

    تكتب الدالة fputs () السلسلة s إلى تيار الإخراج حيث يشير fp إلى.إذا نجحت عمليات الكتابة ، فإنها تُرجع قيمة غير سالبة و EOF في حالة حدوث خطأ.يمكنك أيضًا استخدام وظيفة int fprintf (FILE * fp، const char * format، ...) يكتب سلسلة في الملف.جرب المثال التالي:

    ملاحظة: تأكد من أن لديك دليل tmp متاحًا ، وإذا لم يكن موجودًا ، فستحتاج إلى إنشائه على جهاز الكمبيوتر الخاص بك أولاً.

    عادةً ما يكون / tmp دليلًا مؤقتًا على نظام Linux.إذا كنت تعمل على نظام Windows ، فأنت بحاجة إلى تعديله إلى دليل موجود في البيئة المحلية ، مثل: C: \ tmp ، D: \ tmp ، إلخ.

    مثال حي

    #يشملint main () {FILE * fp = NULL ؛fp = fopen ("/tmp/test.txt" ، "w +") ؛fprintf (fp، "هذا اختبار لـ fprintf ... \ n") ؛fputs ("هذا اختبار fputs ... \ n" ، fp) ؛fclose (fp) ؛}

    عندما يتم ترجمة التعليمات البرمجية أعلاه وتنفيذها ، فإنها تنشئ ملفًا جديدًا test.txt في دليل / tmp.ويكتب على سطرين باستخدام وظيفتين مختلفتين.دعنا نقرأ هذا الملف بعد ذلك.

    اقرأ الملف

    ما يلي هو أبسط وظيفة لقراءة حرف واحد من ملف:

    int fgetc (FILE * fp) ؛

    تقرأ الدالة fgetc () حرفًا من ملف الإدخال الذي يشير fp إليه.القيمة المعادة هي حرف القراءة و EOF في حالة حدوث خطأ.تتيح لك الوظيفة التالية قراءة سلسلة من الدفق:

    char * fgets (char * buf، int n، FILE * fp) ؛

    تقوم الوظيفة fgets () بقراءة أحرف n-1 من دفق الإدخال الموجه بواسطة fp.يقوم بنسخ سلسلة القراءة إلى المخزن المؤقت وإلحاق حرف فارغ في النهاية لإنهاء السلسلة.

    إذا واجهت هذه الوظيفة حرف سطر مقطوع '\ n' أو EOF في نهاية الملف قبل قراءة الحرف الأخير ، فعندئذٍ تُعاد فقط إلى الأحرف المقروءة ، بما في ذلك فواصل الأسطر.يمكنك أيضًا استخدام دالة int fscanf (FILE * fp، const char * format، ...) لقراءة السلسلة من الملف ، لكنها تتوقف عن القراءة عند مواجهة أول مسافة وفاصل سطر.

    مثال حي

    #يشملint main () {FILE * fp = NULL ؛شار بوف [255] ؛fp = fopen ("/tmp/test.txt" ، "r") ؛fscanf (fp ، "٪ s" ، برتقالي) ؛printf ("1:٪ s \ n" ، برتقالي) ؛fgets (برتقالي ، 255 ، (FILE *) fp) ؛printf ("2:٪ s \ n" ، برتقالي) ؛fgets (برتقالي ، 255 ، (FILE *) fp) ؛printf ("3:٪ s \ n" ، برتقالي) ؛fclose (fp) ؛}

    عندما يتم تجميع التعليمات البرمجية أعلاه وتنفيذها ، فإنها تقرأ الملفات التي تم إنشاؤها في القسم السابق ، مما ينتج عنه النتائج التالية:

    1: هذا 2: اختبار fprintf ...

    3: هذا هو اختبار fputs ...

    أولاً ، أسلوب fscanf () يقرأ هذا فقط لأنه يواجه مسافة في الخلف.ثانيًا ، قم باستدعاء functon fgets () لقراءة الجزء المتبقي حتى نهاية السطر.أخيرًا ، استدعِ fgets () لقراءة الصف الثاني تمامًا.

    وظيفة الإدخال / الإخراج الثنائية

    يتم استخدام الوظيفتين التاليتين للإدخال والإخراج الثنائي:

    size_t fread (باطل * ptr ، size_t size_of_elements ، size_t number_of_elements ، FILE * a_file) ؛size_t fwrite (const void * ptr ، size_t size_of_elements ، size_t number_of_elements ، FILE * a_file) ؛

    تتم قراءة كلتا الوظيفتين وكتابتهما لكتل ​​التخزين - عادةً المصفوفات أو الهياكل.

    أعلاه حول قراءة وكتابة ملف C ينتمي إلى HDV Phoelectron Technology Ltd. ، عملية تقنية برمجية.والشركة لمعدات الشبكات (مثل: ACONU/ تواصلONU/ ذكيONU/ الفيبرONU، إلخ) فريق برمجيات قويًا ، لكل عميل تخصيص المتطلبات الحصرية الذين يحتاجون إليها ، كما دع منتجاتنا أكثر ذكاءً وتقدمًا.



    الويب 聊天