الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

سؤال في فتح ملف و اغلاق ملف (مثال)

مغلق
بدأه massenger في 7 مايو 2005 · 2 رد · 2,388 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم,

اخواني المبرمجين, تواجهني مشكلة في عدم معرفة طريقة اقفال الملف لمفتوح, بمثال لبرنامج فتح ملف موجود سلفا, فأن الربنامج يعمل:

اقتباس
#include <windows.h>

int main()

{

ShellExecute(NULL,"open","C:\\test.txt", NULL,NULL,SW_SHOW);

  return 0;

}

لكن السؤال ماهي الدالة التي تمكنني من إقفال الملف المفتوح؟

لكم جزيل الشكر

#2

هذا ليس فتح لملف .. هذا مجرد امر الى نظام التشغيل بأن يتصرف كأن المستخدم عمل دبل كليك على الملف.

يعني هذا السطر لا يعطي برنامجك اي درجة من الوصول الى الملف.

الملفات في السي بلص بلص تمثل بـ objects من نوع fstream, ifstream, ofstream

طريقة العمل انك تنشيء object من احد هذه الـ classes, ثم تربطه بملف معين عن طريق open:

fstream fileStream;
fileStream.open("/config.txt");

ثم تستطيع بعد ذلك القراة من الملف و الكتابة اليه, تقريبا مثل الـ cout و الـ cin, حيث كل هذه الكائنات هي عبارة عن stream يعني دفق بيانات, و هناك مصدر لهذا الدفق (لا ادري اذا كانت "دفق" ترجمة جيدة لـ "stream" أم لا), و تستطيع القراءة من هذا المصدر, او الكتابة اليه.

الـ cout تستطيع فقط الكتابة اليه (و هذا الدفق يذهب الى الشاشة), الـ cin تستطيع فقط القراءة منه (القراءة من الكيبورد)

اما في حالتنا, فإن fileStream يستطيع القراءة و الكتابة, و هذا لأنه من نوع fstream.

النوعين الآخرين اللذين ذكرتهما في الأعلى هما:

ifstream للقراءة من الملف فقط.

ofstream للكتابة الى املف فقط.

لغلق الملف, تستخدم close

fileStream.close();

تستطيع القراءة و الكتابة باستخدام الأسهم >> و <<

كما تستطيع ايضا استخدام methods ميعنة, http://www.cplusplus.com/ref/iostream/fstream/

القائمة طويلة بعض الشيء, و لكن:

getline تقرأ سطرا كاملا

get تقرأ حرفا واحدا

put تكتب حرفا واحدا

write تكتب مجموعة حروف ..

مثلا:

char ch;
fileStream.get(ch);

cout << ch << endl;

المفروض ان ch سيكون اول حرف في الملف.

طبعا هناك cursor مخفي يمر على الفايل, يعني عندما تقرا حرف مثلا, فالـ cursor أو "المؤشر" يمشي خطوة واحدة ..

فالقراءة و الكتابة دائما تكون عند المؤشر.

اذا اردت المزيد من المرونة في القراءة و الكتابة بحيث لا تظطر الى متابعة مكان المؤشر و تحيكه طوال الوقت, تستطيع نسخ النص كله او جزء منه الى char[] ثم تتلاعب بالـ char[] كما تريد, ثم تقوم بحفظ هذا الـ char[] في الملف.

يوجد هنا درس جيد عن الموضوع:

http://www.cpp-home.com/FileIO_tutorial.doc

و هذا مثال مأخوذ منه:

#include <fstream.h> 


void main() //the program starts here

{

      ifstream OpenFile("cpp-home.txt"); 


       char ch;

      while(!OpenFile.eof())

      {

            OpenFile.get(ch);

            cout << ch;

      }

      OpenFile.close();

}
#3

وعليكم السلام ..

اعتقد الاخ حسن كفى و وفى .. لكن لدي اضافة صغيرة .. وهي ..با امكانك استخدام دوال الويندوز .. api فهي جيدة واكثر مرونة لانشاء المجلدات والملفات والقراءة والكتابة منها واليها ..

---

logo1.png تطبيق طمأنينة ، نسخة بيتا على أندرويد

عبدالله الشمّري - Al-Shammari

CodingAlone.com

twitter @abshammeri

abshammeri AT gmail.com

github : abshammeri

هذا الموضوع مغلق.

مواضيع مشابهة