بسم الله الرحمن الرحيم
هذه سلسلة من الدروس عن files سأضعها بين فترة وفترة . وأسأل الله أن ينفع بها.
الملفات
Files
الدرس الأول :
طبعا في هذا الفصل سنتعامل مع الملفات بشكل كلي وسنستعمل في ذالك مكتبة <fstream> .
إذا سألت أي مبرمج بالغ عاقل عن عمل هذا الكود
using namespace std;
int main()
{
cout<<"helo"<<endl;
}
#include <iostream>
فسيجيبك وبكل تأكيد أن هذا البرنامج سيطبع على الشاشة كلمة helo)) . ولكن ماذا لو أردت أن اطبع كلمة (helo) على ملف بدلا من الشاشة .
في هذه الحالة عليك أن تتعرف على مكتبة (fstream) وبالتحديد على كلاس اسمه (ofstream) .
لا أطيل عليك انضر لهذا المثال البسيط :
using namespace std;
int main()
{
ofstream MyFile;
MyFile.open("HeloText.txt");
MyFile<<"Helo"<<endl;
MyFile.close();
}
#include <fstream>
- الأن ما الكيفية التي يتم بها الكتابة على الملف ؟.
مثلها مثل ال(cout) بالضبط :
MyFile<<"Helo"<<endl;
الكتابة على الملف لايختلف عن الcout إلا في اسم الكائن .
ولكن قبل الكتابة على الملف علينا أن نقوم بخطوات لإنشاء الملف وإعطاءه اسما وربطه مع البرنامج
وهذه الخطوات هي :
1- تضمين مكتبة ال fstream
using namespace std
#include <fstream>
2- في ال main قمنا بإنشاء كائن (object) من ofstream طبعا حرف (O) يرمز إلى out put أي مخرج .
ofstream MyFile;
3- ثم قمنا بعد ذالك بإستدعاء دالة ال(open) وهذه الدالة طبعا ضمن كلاس ofstream
MyFile.open("HeloText.txt");وهذه الدالة تستقبل بارمتر من نوع (char *) طبعا في البارمتر قمنا بإعطاء اسم لملفنا وكذالك حددنا نوعه وتستطيع أن تكتب أي نوع تريد .
هذه الدلة وضيفتها انشاء ملف أنت تقوم بإعطائها اسم الملف وكذالك تقوم الدالة بربط البرنامج مع الملف .
ثم أخيرا نبدأ بالكتابة على الملف .
ولكن علينا بعد أن ننتهي من الكتابة على الملف علينا أن نقطع الرابطة التي بين البرنامج والملف .
وذالك بإستعمال دالة close()
MyFile.close();
طبعا هذه الخطوات الأساسية ولكن هناك خطوات أخرى تعمل لتحسين البرنامج مثل التأكد من انشاء أو فتح الملف وغيرها من الدوال .
سنكتب برنامج صغيرا الأن شبيها ببرنامج المفكرة . حيث يأخذ من المستخدم كتاباته ويخزنها في ملف من نوع (txt) .
طبعا سنأخذ من المستخدم البيانات عبرة دالة cin ومن ثم سنخزن البيانات إلى الملف.
وسنستعمل دالة fail() وذالك لتحقق من إمكانية فتح أو انشاء الملف .
#include <iostream>
#include <cstdlib>
using namespace std;
int main()
{
string data;
ofstream MyFile;
MyFile.open("nodpad.txt");
if(MyFile.fail())
{
cout<<"ERROR"<<endl;
exit(1);
}
cout<<"write What in your mind : "<<endl;
do
{
cin>>data;
MyFile<<data<<" ";
}while(data!="exit");
MyFile.close();
}
#include <fstream>
سأبدأ بالشرح من هنا :
{
cout<<"ERROR"<<endl;
exit(1);
}
if(MyFile.fail())
هنا استخدمنا دالة fail() التي تحدثت عنه سابقا حيث تقوم هذه الدالة بالتحقق من أن انشاء الملف قد تم بلا مشاكل ثم سترجع false أما في حالة أن الملف لم ينشئ (لعدم وجود مساحة في الذاكرة مثلا ) فسوف يرجع true .
طبعا إذا ارجعت الدالة true فسوف يتحقق الشرط وسيضهر رسالة ERROR وسيخرج من البرنامج .
أما إذا ارجعت false فسوف يكمل البرنامج وسيصل إلى هنا :
do
{
cin>>data;
MyFile<<data<<" ";
}while(data!="exit");
cout<<"write What in your mind : "<<endl;
أتوقع أن هذه الفقرة واضحة ولاتحتاج إلى شرح حيث سيأخذ بيانات من المستخدم وسيكتبها في الملف .
تمرين : حاول أن تنشئ برنامج يأخذ من المستخدم معلومات عن جنسيته , عمره , الجنس, الحالة الإجتماعية
ثم يقوم البرنامج بحفظ هذه البيانات في ملف .
الدرس الثاني سيكون عن :
- كيفية قراءة البيانات من ملف .
- كيفية البحث في الملف والتعديل عليه
- برنامج لتسجيل اسماء الموظفين وبياناتهم ورواتبهم .

