الدرس 26: القراءة من الملفات والمشروع الختامي
في الدرس السابق كتبنا إلى الملفات — والآن نتعلّم قراءتها مجددًا. fopen("data.txt", "r") يفتح الملف للقراءة، وfgets(line, sizeof line, f) يقرأ سطرًا سطرًا داخل حلقة while ويُعيد NULL عند نهاية الملف، وfscanf يُفكّك الأسطر إلى قيم: while (fscanf(f, "%19s %d", name, &grade) == 2). ثم — المشروع الختامي
الكتابة إلى ملف تشبه إملاء رسالة؛ والقراءة تشبه فتح الظرف والمرور سطرًا سطرًا حتى تنفد الصفحات (NULL). والمشروع الختامي؟ مثل عشاء ختام دورة طبخ — كل تقنية تعلّمتها تظهر في طبق واحد.
- وضع القراءة "r"
- fopen("data.txt", "r") يفتح ملفًا موجودًا للقراءة. إذا لم يكن الملف موجودًا — يُعيد NULL.
- fgets
- تقرأ سطرًا واحدًا إلى مصفوفة char: fgets(line, sizeof line, f). وعند نهاية الملف تُعيد NULL.
- fscanf
- مثل scanf لكن من ملف: تُفكّك النص إلى قيم وتُعيد عدد القيم التي قُرِئت بنجاح.
- نهاية الملف (EOF)
- النقطة التي تلي آخر محرف. عندها تُعيد fgets القيمة NULL، وتتوقّف fscanf عن إعادة العدد الكامل.
- المشروع الختامي
- برنامج واحد يجمع الدورة كلها: struct، ومصفوفة ديناميكية، وحفظ إلى ملف، وتحميل، وfree وfclose.