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

كيف يمكنني ان اجعل برنامجي يحفظ اي اضافة اقوم بها فيه ؟

بدأه tantie L في 9 يناير 2014 · 13 رد · 663 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم و رحمة الله و بركاته اساتذتي اخواني و اخواتي الكرام

انا الان مقبلة على دراسة les arbres و كتابة برامج بهذه البنية...فخطر ببالي ان احاول كتابة برنامج قاموس مبدئيا لتعلم هذه البنية...و انا اعلم ان القاموس يمكن ان نظيف اليه كلمات اخرى ان لم تكن موجودة به فيا ترى و هذا هو سؤالي:

انا عندما اقوم بوضع الكلمات الاساسية و التي اعرفها اي ذاكرة القاموس و اقوم بانشاء دالة الاضافة فهل ستحفظ الكلمة التي اظفتها هل سيحفظها القاموس حتى عندما اغلق البرنامج و حتى الحاسوب و اعيد تشغيله و تشغيل برنامجي و اطلب الكلمة التي اظفتها فهل ستظهر لي؟ و ان امكن ذلك فكيف افعل ذلك ؟ 

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

لكم فائق الاحترام و التقدير

تم تعديل هذه المشاركة بواسطة tantie L في 9 يناير 2014 في 20:41

ابتسم للدنيا تبتسم لك و افعل الخير و انساه و لا تنسى أي أمر سيء قمت به حتى لا تكرره


لا تنسونا من صالح دعائكم أعانكم الله و ثبتكم على سواء السبيل


:)  :lol:  ^_^ 

#2

أظن  أن الجواب واضح  .. الملفّات , جميع البرامج تستخدم ملفات خارجية للقيام بعمليات دائمة , فالبرنامج يتم تحميله إلى الـRAM وعند انتهائه لا يبقى محتواه صالحاً للاستخدام ,

أما الملفات فتحفظ في الـ HardDisk وتبقى .

يمكنك حفظ المدخلات في ملف .. والرجوع إليها في أي وقت آخر .

 

بالتوفيق

2
#3

اهلا بك اخي الكريم مصطفى

هل هذا يعني انه لا يمكنني فعل ذلك الا بالملفات فانا للان لم ادرسها و لا اعرف الا اسمها و انها تحفظ لنا التغييرات في البرنامج 

ابتسم للدنيا تبتسم لك و افعل الخير و انساه و لا تنسى أي أمر سيء قمت به حتى لا تكرره


لا تنسونا من صالح دعائكم أعانكم الله و ثبتكم على سواء السبيل


:)  :lol:  ^_^ 

#4

أنت تعرفين استخدام printf أليس كذلك ؟

للكتابة في ملف نستخدم fprintf ونضع اول وسيط مؤشر للملف والباقي تماماً مثل printf

كذلك  scanf يقابلها fscanf للقراءة من الملفات

http://www.cprogramming.com/tutorial/cfileio.html

 

بالتوفيق

#5

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

Ordinateur\disque local (D:)\LEScours\td algo

ان اردت فتحه استعمل fopen للقراءة منه fread و هكذا :huh: 

فكيف يحدث هذا ؟ ام انني اخطأت الفهم

شكرا لك 

1

ابتسم للدنيا تبتسم لك و افعل الخير و انساه و لا تنسى أي أمر سيء قمت به حتى لا تكرره


لا تنسونا من صالح دعائكم أعانكم الله و ثبتكم على سواء السبيل


:)  :lol:  ^_^ 

#6

إذا قمنا بعمل fopen  بوضعية كتابة ولم يكن الملف موجوداً تثوم الدالة بإنشائه

العبارة التالية بجانب الopen mode

اقتباس
(file need not exist)

 تعني أن الملف لا يجب أن يكون موجوداً حتى نستعمل الدالة , وأنها تنشئ الملف في حال عدم وجوده

 

بالتوفيق

#7

اخي الكريم جربت ان استخدم fopen هكذا 

#include<stdio.h>
main()
{
    FILE *fp;
    fp=fopen("D:\\INFORMATIQUE","r");
}

و لم استخدم اي مكتبة الا stdio.h و لم يظهر لي خطأ فهل هذا يعني ان دوال الملفات موجودة بشكل عادي كما هي الدوال الاخرى اي printf و fprintf ب stdio.h و fgetc و fputc موجودتان في string.h 

و ايضا عندما طبقت البرنامج لم يحدث شيء فقط شاشة التنفيذ و قد ظهرت عليها العبارة التي تدل على انتهاء البرنامج فما المفترض ان يحدث في هذا البرنامج؟ ظننت انه سيفتح الملف  :wacko:

تم تعديل هذه المشاركة بواسطة tantie L في 9 يناير 2014 في 22:14

ابتسم للدنيا تبتسم لك و افعل الخير و انساه و لا تنسى أي أمر سيء قمت به حتى لا تكرره


لا تنسونا من صالح دعائكم أعانكم الله و ثبتكم على سواء السبيل


:)  :lol:  ^_^ 

#8

كتبنا الرد في نفس الوقت تقريباً لذلك أرجو أن تقرئي الرد السابق ..

فتح الملف لا يعني أن يظهر على الشاشة كما نفتح االنوتباد مثلاً

بل يعني تجهيزه لعمليات القراءة أو الكتابة وما إلى ذلك ..

فمثلاً يمكنك فتح ملف exe وهذا لا يعني تشغيله بل نقل محتواه بطريقة ما  إلى مكان ما يمكن الوصول إليه عن طريق ما يُدعى بمقبض الملف .. وهو ما تقومين بتعريفه في أول الكود FILE* أي مؤشر إلى ملف (مقبض الملف )

 

وجميع دوال التعامل مع الملفات التي ذكرتيها موجودة في  stdio.h واستعمالها غاية في السهولة

 

بالتوفيق

#9
مصطفى 36a2 كتب:

كتبنا الرد في نفس الوقت تقريباً لذلك أرجو أن تقرئي الرد السابق ..

اجل و قد قرأته و زاد التوضيح عندما شرحت

 

مصطفى 36a2 كتب:

فتح الملف لا يعني أن يظهر على الشاشة كما نفتح االنوتباد مثلاً

بل يعني تجهيزه لعمليات القراءة أو الكتابة وما إلى ذلك ..

فمثلاً يمكنك فتح ملف exe وهذا لا يعني تشغيله بل نقل محتواه بطريقة ما  إلى مكان ما يمكن الوصول إليه عن طريق ما يُدعى بمقبض الملف .. وهو ما تقومين بتعريفه في أول الكود FILE* أي مؤشر إلى ملف (مقبض الملف )

 

اذن فهو لا يفتحه بطريقة مرئية للمستعمل و انما له هو فقط حتى يستخدم محتوياته

و ايضا عندما يقوم برنامجي مثلا بانشاء الملف الذي كتبت له مساره فهل ساجده عندما اذهب الى الموقع متتبعة ذلك المسار؟

 

مصطفى 36a2 كتب:

 

وجميع دوال التعامل مع الملفات التي ذكرتيها موجودة في  stdio.h واستعمالها غاية في السهولة

 

كلها موجودة في stdio.h  :o  يعني حتى fputc و fgetc اليستا خاصتين بالسلاسل الحرفية  :huh:

شكرا لك و وفقك الله

1

ابتسم للدنيا تبتسم لك و افعل الخير و انساه و لا تنسى أي أمر سيء قمت به حتى لا تكرره


لا تنسونا من صالح دعائكم أعانكم الله و ثبتكم على سواء السبيل


:)  :lol:  ^_^ 

#10
اقتباس

و ايضا عندما يقوم برنامجي مثلا بانشاء الملف الذي كتبت له مساره فهل ساجده عندما اذهب الى الموقع متتبعة ذلك المسار؟

لو جربت الكود لكان أسرع من انتظار الرد , نعم ستجدينه منشأً في المكان الذي حددته , وإان لم يتم الأمر فستعيد دالة fopen قيمة NULL وهذا (غالباً) بسبب عدم وجود صلاحيات للبرنامج بالتغيير في القرص المعني

 

اقتباس

كلها موجودة في stdio.h  :o  يعني حتى fputc و fgetc اليستا خاصتين بالسلاسل الحرفية  :huh:

أولاً , هي خاصة بالمحارف وليس السلاسل المحرفية (مثل putchar , getchar)

ثانياً , أين المشكلة أليست gets و puts خاصة بالسلاسل المحرفية ؟

 

بالتوفيق

#11
مصطفى 36a2 كتب:

لو جربت الكود لكان أسرع من انتظار الرد 

 

بلى لقد جربته قبل ان اسألك لكن عندما ذهبت الى المكان المحدد لم اجده لذلك سالتك اخي الكريم

 

 

مصطفى 36a2 كتب:

 وإان لم يتم الأمر فستعيد دالة fopen قيمة NULL وهذا (غالباً) بسبب عدم وجود صلاحيات للبرنامج بالتغيير في القرص المعني

 

 

و هذا هو السبب اذن فقد انشأت الملف في القرص D: اذت فان البرنامج لا يملك الصلاحيات للتغيير فيه

ساحاول في مسار اخر و ارى

 

مصطفى 36a2 كتب:

ثانياً , أين المشكلة أليست gets و puts خاصة بالسلاسل المحرفية ؟

 

لقد ظننت بان تلكما الدالتين موجودتان في string.h لكن جربت الدالتين مع كلتا المكتبتين string.h و stdio.h فلم يوجد اي خطأ  :lol:  شكرا على المعلومة الجديدة

اخي الكريم مصطفى لقد جربت كتابة كود صغير كاول خطوة لي مع الملفات ^_^  هاهو ذا 

#include<stdio.h>
main()
{
    FILE *fp;
    fp=fopen("D:\\LEScours\\test.txt","w");
    fprintf(fp,"Testing...\n");
    char t[40]="my first programme with the files ^_^\n";
    fwrite(t,sizeof(t[0]),sizeof(t),fp);
    fgetc(fp);
    fputc(72,fp);
    fputc(83,fp);
}

و النتائج حقا كانت ايجابية  :lol:  فقد تم انشاء document text و فيه تلكم العبارات

لقد كان خطئي في اول مرة عندما اردت انشاء ملف جديد هو عدم استعمال اثنين من \ في المسار و لم اضع w مكان r

fp=fopen("D:\\LEScours\\test.txt","w");

ساحاول التعلم اكثر عن الملفات و احاول ان اكتب برنامج القاموس الذي يحفظ التغييرات باستعمالها 

وفقك الله و زادك علما 

بارك الله فيك اخي الكريم

تم تعديل هذه المشاركة بواسطة tantie L في 10 يناير 2014 في 10:42

1

ابتسم للدنيا تبتسم لك و افعل الخير و انساه و لا تنسى أي أمر سيء قمت به حتى لا تكرره


لا تنسونا من صالح دعائكم أعانكم الله و ثبتكم على سواء السبيل


:)  :lol:  ^_^ 

#12
اقتباس

لقد ظننت بان تلكما الدالتين موجودتان في string.h لكن جربت الدالتين مع كلتا المكتبتين string.h و stdio.h فلم يوجد اي خطأ  :lol:  شكرا على المعلومة الجديدة

أظن أنك تستخدمين GCC

فهذا المترجم يملك جميع دوال لغة C القياسية داخله Built in

يمكنك كتابة كل برامجك بدون إدراج مكتبة واحدة طاملا أن الكود قياسي

 

بالتوفيق

#13

عذرا اخي الكريم مصطفى هل يمكنك ان تشرح لي اكثر؟

فانا لم استوعب قصدك...صحيح استعمل gcc لكن كيف لي ان اكتب كود بدون ادراج مكتبة غير stdio.h

ابتسم للدنيا تبتسم لك و افعل الخير و انساه و لا تنسى أي أمر سيء قمت به حتى لا تكرره


لا تنسونا من صالح دعائكم أعانكم الله و ثبتكم على سواء السبيل


:)  :lol:  ^_^ 

#14

يقوم gcc تلقائياً يعمل include لجميع مكاتب اللغة القياسية

إن كان عند الأخوة المزيد فأرجو منهم الإفادة

أنا سألت هنا

 

والله ولي التوفيق

1

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

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…