البرمجة

استكشاف قراءة وطباعة محتوى ملفات المجلد باستخدام C

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

  1. يجب عليك تضمين المكتبات اللازمة في رأس البرنامج، حيث يفترض أن تضمن لاستخدام cout وifstream، و لاستخدام strcmp.

  2. يجب استخدام #include و #include لتضمين المكتبات الخاصة بالإدخال/الإخراج وقراءة الملفات.

  3. يجب تعيين عنوان الدليل بشكل صحيح عند فتحه باستخدام opendir. عليك استخدام المسار الكامل للمجلد أو استخدام دالة getcwd للحصول على المسار الحالي.

  4. يفضل استخدام std::string بدلاً من المصفوفات لتمثيل أسماء الملفات، واستخدام std::ifstream بدلاً من ifstream.

  5. يجب التحقق من نجاح فتح الملف باستخدام myReadFile.is_open() قبل قراءة المحتوى.

  6. يجب استخدام std::cout بدلاً من cout.

إليك إصدار معدل من الشيفرة يصحح هذه الأخطاء:

cpp
#include #include #include #include #include int main(void) { DIR *d; struct dirent *dir; char currentPath[PATH_MAX]; getcwd(currentPath, sizeof(currentPath)); d = opendir(currentPath); if (d) { while ((dir = readdir(d)) != NULL) { if (strcmp(dir->d_name, ".") == 0 || strcmp(dir->d_name, "..") == 0) { continue; } std::ifstream myReadFile; myReadFile.open(dir->d_name); char output; if (myReadFile.is_open()) { while (myReadFile >> output) { std::cout << output << std::endl; } myReadFile.close(); } } closedir(d); } return 0; }

يرجى مراعاة هذه التحسينات وتجربة الشيفرة المعدلة على نظامك.

المزيد من المعلومات

بالطبع، سنقوم الآن بتوسيع المعلومات المقدمة بشكل أكبر حول كيفية الوصول إلى محتوى ملفات مجلد باستخدام لغة البرمجة C.

في الشيفرة التي قدمتها، يتم استخدام مكتبة لفتح المجلد واستعراض محتواه. يتم ذلك باستخدام الهيكل struct dirent ودالة opendir لفتح المجلد واستخدام دالة readdir للحصول على قائمة الملفات والمجلدات داخله.

تم استخدام strcmp للتحقق من أن اسم الملف ليس “.” أو “..” لتجنب دخول المجلدات الفرعية والحفاظ على استقرار البرنامج.

بمجرد الحصول على اسم الملف، يتم استخدام std::ifstream لفتح الملف وmyReadFile >> output لقراءة محتواه. يتم فحص نجاح فتح الملف باستخدام myReadFile.is_open() لضمان عملية القراءة بنجاح.

الاستفادة من std::cout لطباعة محتوى الملف على الشاشة تضمن أن يتم عرض النتائج بشكل صحيح.

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

زر الذهاب إلى الأعلى