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

العمليات الأساسية على الملفات في لغة C:

  • إنشاء ملف جديد: يتم باستخدام الدالة fopen() مع تحديد وضع الفتح المناسب مثل "w" للكتابة (سيتم إنشاء ملف جديد أو حذف محتوى ملف موجود بنفس الاسم) أو "a" للإضافة (سيتم إنشاء ملف جديد إذا لم يكن موجودًا أو إضافة البيانات إلى نهاية الملف الموجود).
  • فتح ملف موجود: يتم أيضًا باستخدام الدالة fopen() مع تحديد وضع الفتح المناسب مثل "r" للقراءة فقط.
  • القراءة من ملف: يتم استخدام الدوال fscanf() (للقراءة بتنسيق معين) أو fgets() (لقراءة سطر واحد) أو fread() (لقراءة عدد محدد من البايتات).
  • الكتابة إلى ملف: يتم استخدام الدوال fprintf() (للكتابة بتنسيق معين) أو fputs() (لكتابة سلسلة نصية) أو fwrite() (لكتابة عدد محدد من البايتات).
  • إغلاق ملف: يتم استخدام الدالة fclose() لإغلاق الملف وتحرير الموارد المرتبطة به. من المهم جدًا إغلاق الملفات بعد الانتهاء من استخدامها.

الدالة fopen():

تُستخدم الدالة fopen() لفتح ملف. تأخذ هذه الدالة وسيطين:

  1. اسم الملف: وهو سلسلة نصية تحتوي على اسم الملف (مع مساره إذا كان موجودًا في مجلد آخر).
  2. وضع الفتح: وهو سلسلة نصية تحدد طريقة فتح الملف (مثل القراءة، الكتابة، الإضافة).

تعيد الدالة fopen() مؤشرًا إلى هيكل من النوع FILE يمثل الملف المفتوح. إذا فشلت عملية فتح الملف، فإنها تعيد NULL.

أوضاع الفتح الشائعة:

  • "r": فتح الملف للقراءة فقط. يجب أن يكون الملف موجودًا.
  • "w": فتح الملف للكتابة. سيتم إنشاء ملف جديد إذا لم يكن موجودًا، أو سيتم حذف محتوى الملف الموجود.
  • "a": فتح الملف للإضافة. سيتم إنشاء ملف جديد إذا لم يكن موجودًا، أو سيتم إضافة البيانات إلى نهاية الملف الموجود.
  • "r+": فتح الملف للقراءة والكتابة. يجب أن يكون الملف موجودًا.
  • "w+": فتح الملف للقراءة والكتابة. سيتم إنشاء ملف جديد إذا لم يكن موجودًا، أو سيتم حذف محتوى الملف الموجود.
  • "a+": فتح الملف للقراءة والكتابة. سيتم إنشاء ملف جديد إذا لم يكن موجودًا، أو سيتم إضافة البيانات إلى نهاية الملف الموجود.

مثال بسيط لقراءة محتوى ملف:

C
#include <stdio.h>

int main() {
FILE *fp;
char ch;

fp = fopen("myfile.txt", "r"); // فتح الملف للقراءة

if (fp == NULL) {
printf("Error opening file.\n");
return 1;
}

while ((ch = fgetc(fp)) != EOF) { // قراءة حرف بحرف حتى نهاية الملف
printf("%c", ch);
}

fclose(fp); // إغلاق الملف

return 0;
}

في هذا المثال، يتم فتح الملف "myfile.txt" للقراءة. إذا تم فتح الملف بنجاح، يتم قراءة محتواه حرفًا بحرف وطباعته على الشاشة. أخيرًا، يتم إغلاق الملف باستخدام الدالة fclose().

ملاحظات مهمة:

  • التحقق دائمًا من قيمة المؤشر الذي تعيده fopen() للتأكد من نجاح عملية فتح الملف.
  • تذكر دائمًا إغلاق الملفات باستخدام fclose() بعد الانتهاء من استخدامها لتجنب فقدان البيانات أو مشاكل أخرى.
  • يمكن استخدام مسارات الملفات المطلقة أو النسبية عند فتح الملفات