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

بط لغة c بالملفات

مغلق
بدأه eng_ibr في 13 فبراير 2005 · 16 رد · 5,464 مشاهدة · في المواضيع والدروس
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

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

عرف في البداية struct يحتوي على الآتي

struct{          //This struct is used for dispalyfile representation

         char cmd[32];
	float operand1;float operand2;float operand3;
	float operand4;float operand5;float operand6;
       }                  command;

هنا عرف مثل ما تريد من حقول داخل ال struct

اسم struct هو command حتى تقرأ من الملف لأننا نريد قيم أن نقرأها. هذا التعريف يكون فوق main

عرف في البداية متغير من نوع FILE كالآتي وبعدها إشارة *

FILE *ptr;

وقم بإنشاء أي ملف تود القراءة منه ولكن احفظ مكانه أين وضعته على الجهاز

Disfile is created in c:\\

اعتبر أنك أنشأته في السي على جهازك

C:\\disfile.txt

أسند المتغير الذي عرفته إلى الامتداد الموجود به ملف Disfile كالآتي.

ptr=fopen("c:\\disfile.txt","r+");

حرف r يشير أنني أريد أن أقرأ من هذا الملف، حرف w يشير إلى أنني أريد الكتابة إلى هذا الملف

fopen تشير إلى فتح الملف

سنكتفي هنا بالقراءة.وبعدها ضع جملة شرط لتفحص هل هذا الملف فاضي أم مليء كالآتي

if(ptr==NULL)

وداخل جملة الشرط ضع ما تريد لكي يخرج على الشاشة في حالة أن كان لا يوجد الملف

{
settextstyle(7, HORIZ_DIR, 5);      /* select the text style */
outtextxy(100,200,"NO FILE DETECTED");getch();exit(1);}//output a message
else

الجمل السابقة ستخرج رسالة مفادها أن لا يوجد ملف

وهذه الجمل الآتية في حالة القراءة من الملف، الجملة الأولى تفيد القراءة حتى انتهاء الملف

while(!feof(ptr))
 {
long curpos = ftell(ptr);
 fseek(ptr, curpos, 0);
 fscanf(ptr,"%s",command.cmd);//read the name of shape

بعد الجمل السابقة تكون قد قرأت الملف من البداية

if((strcmp(command.cmd,"circle"))==0)

يقارن السطر الأول من الملف مع الاسم، في حالة المساواة تكون النتيجة صفر

	{
	fscanf(ptr,"%f",&command.operand1);
	fscanf(ptr,"%f",&command.operand2);
	fscanf(ptr,"%f",&command.operand3);

هنا يقرأ الأسماء التي بعد اسم الدائرة

	circle(command.operand1,command.operand2,command.operand3);

يرسم الدائرة بأمر جاهز

getch();  // wait for a key

الأمر السابق يوقف العمل حتى تضغط أي زر

	}//if of circle
}//while loop

يبقى يقرأ من الملف حتى انتهاء اللوب

fclose(ptr);//close the file
closegraph();    //closes down the graphics system
}

مثال بسيط للقراءة من الملف. حاول أن تنفذه وإن شاء الله ستنجح.

وأنا مستعد لأي سؤال فيه

تم تعديل هذه المشاركة بواسطة eng_ibr في 13 فبراير 2005 في 16:47

اللهم صل وسلم وزد وبارك على سيدنا محمد وعلى آله وصحبه وسلم

تعلم كيف تقرأ من ملف باستخدام لغة السي

Routers Programming-الدرس الأول

#3

بارك الله فيك اخي (eng_ibr)

..................بسم الله الرحمن الرحيم..................

وتعاونوا على البر والتقوى ولا تعاونوا على الإثم والعدوان

.............................................................................................................................

لنبدا دورة دلفي

سلسلة تعلم برمجة Pascal , تعلم اساسيات الباسكال

التحكم بمنفذ الطابعة عن طريق الدلفي

سلسلة دروس تعلم قواعد بيانات Midas

هيا لنبدأ بالApi

أفكار سريعة, مجموعة شفرات صغيرة وفاعله لدلفي

كتب + مواقع ::: مراجع مهمة للغة دلفي, مجموعة كتب مجانية + مواقع مفيدة

مكتبه الأكواد, أكواد وبرامج دلفي

.............................................................................................................................

18_07_05_10_53_18_1121752398da3wa_18.gif

#4

بارك الله فيك كلام جميل ورائع.

يعني انت تقرا من الملف متغيراتأو متحولات لكي ترسم دائرة هل هذا صحيح؟

أما الباقي فهو واضح جزاك الله خيرا.

اللهم علمنا ما ينفعنا وأنفعنا بما علمتنا أنك أنت العليم الحكيم

سبحان الله وبحمده سبحان الله العظيم

لاحول ولاقوة الا بالله( كنز من كنوز الجنة ).

#5

السلام عليكم

شكراً لكم جميعاً على هذا المرور الكريم، وبارك الله فيكم جميعاً

أخي السهم الناري بالنسبة للملف نعم كالآتي سيكون

circle 50 50 50

ليقارن مع الاسم circle ثم يقرأ الأرقام التي تليه فيكون الرقم الأول ل x والثاني ل y والثالث لنصف القطر

وتستطيع أن تضيف وتكبر الملف ليكون كالآتي ( هذا بالنسبة لملف ال تكست txt الذي سيتخزن على \\:c

circle 100 200 50
rectangle 100 200 300 400
bar 10 10 30 30
line 300 300 479 479
ellipse 400 400 0 360 15 20
fillellipse 300 400 20 30
bar3d 40 50 60 70 50 60

والبرمجة تكون كالآتي في لغة c

FILE *ptr;
int midx, midy;INITIALIZE();
ptr=fopen("c:\\disfile.txt","r+");
if(ptr==NULL)
{settextstyle(7, HORIZ_DIR, 5);      /* select the text style */
outtextxy(100,200,"NO FILE DETECTED");getch();exit(1);}//output a message
else

while(!feof(ptr))
 {
long curpos = ftell(ptr);
 fseek(ptr, curpos, 0);
 fscanf(ptr,"%s",command.cmd);//read the name of shape

if((strcmp(command.cmd,"circle"))==0)
	{
	fscanf(ptr,"%f",&command.operand1);
	fscanf(ptr,"%f",&command.operand2);
	fscanf(ptr,"%f",&command.operand3);
	circle(command.operand1,command.operand2,command.operand3);
	getch();  // wait for a key
	}//if of circle

if((strcmp(command.cmd,"line"))==0)
	{
	fscanf(ptr,"%f",&command.operand1);
	fscanf(ptr,"%f",&command.operand2);
	fscanf(ptr,"%f",&command.operand3);
	fscanf(ptr,"%f",&command.operand4);
	line(command.operand1,command.operand2,command.operand3,command.operand4);
	getch();  // wait for a key
	}//if of line

if((strcmp(command.cmd,"bar"))==0)
	{
	fscanf(ptr,"%f",&command.operand1);
	fscanf(ptr,"%f",&command.operand2);
	fscanf(ptr,"%f",&command.operand3);
	fscanf(ptr,"%f",&command.operand4);
	bar(command.operand1,command.operand2,command.operand3,command.operand4);
	getch();  // wait for a key
	}//if of bar

if((strcmp(command.cmd,"rectangle"))==0)
	{
	fscanf(ptr,"%f",&command.operand1);
	fscanf(ptr,"%f",&command.operand2);
	fscanf(ptr,"%f",&command.operand3);
	fscanf(ptr,"%f",&command.operand4);
	rectangle(command.operand1,command.operand2,command.operand3,command.operand4);
	getch();  // wait for a key
	}//if of rectangle

if((strcmp(command.cmd,"ellipse"))==0)
	{
	fscanf(ptr,"%f",&command.operand1);
	fscanf(ptr,"%f",&command.operand2);
	fscanf(ptr,"%f",&command.operand3);
	fscanf(ptr,"%f",&command.operand4);
	fscanf(ptr,"%f",&command.operand5);
	fscanf(ptr,"%f",&command.operand6);
	ellipse(command.operand1,command.operand2,command.operand3,command.operand4,command.operand5,command.operand6);
	getch();  // wait for a key
	}//if of ellipse

if((strcmp(command.cmd,"fillellipse"))==0)
	{
	fscanf(ptr,"%f",&command.operand1);
	fscanf(ptr,"%f",&command.operand2);
	fscanf(ptr,"%f",&command.operand3);
	fscanf(ptr,"%f",&command.operand4);
	fillellipse(command.operand1,command.operand2,command.operand3,command.operand4);
	getch();  // wait for a key
	}//if of fillellipse


if((strcmp(command.cmd,"bar3d"))==0)
	{
	fscanf(ptr,"%f",&command.operand1);
	fscanf(ptr,"%f",&command.operand2);
	fscanf(ptr,"%f",&command.operand3);
	fscanf(ptr,"%f",&command.operand4);
	fscanf(ptr,"%f",&command.operand5);
	fscanf(ptr,"%f",&command.operand6);
	bar3d(command.operand1,command.operand2,command.operand3,command.operand4,command.operand5,command.operand6);
	getch();  // wait for a key
	}//if of fillellipse

 }//while loop
fclose(ptr);//close the file
closegraph();    //closes down the graphics system
}

أما بالنسبة لل struct فقد وضعت به ستة متغيرات لأن bar3d يأخذ ست قيم

وشكراً للجميع ، وأرجو أن يكون واضح

وأنا في الخدمة لعيونكم في أي سؤال

تم تعديل هذه المشاركة بواسطة eng_ibr في 15 فبراير 2005 في 00:18

اللهم صل وسلم وزد وبارك على سيدنا محمد وعلى آله وصحبه وسلم

تعلم كيف تقرأ من ملف باستخدام لغة السي

Routers Programming-الدرس الأول

#6

السلام عليكم

مشكور أخي الكريم وما قصرت

بس ممكن سؤال

عند القراءة من فايل ما فائدة هذه الجمل

long curpos = ftell(ptr);
fseek(ptr, curpos, 0);

وبارك الله فيك .

برامج في ال C#

إذا اشتكى مسلم في الهند أرقني -- وإن بكى مسلم في الصين بكاني

ومصر ريحانتي والشام نرجستي -- وفي الجزيرة تاريخي و عنواني

وفي العراق أكف المجد ترفعني -- إلى بساتين عز ذات أفنانِ

أرى بخارى بلادي وهي نائية -- وأستريح إلى ذكرى خراسانِ

#7

جميل جدا ورائع

جزاك الله خير

وان شاء الله يتم الاستفاده منه

لكم مني خالص التقدير

*********************

دروس الاكسس

قاعدة بيانات بالسي++

قاعدة بيانات اخرى بالسي++

الفريق العربي للبرمجه

*********************

كان الله في عون العبد مادام العبد في عون اخيه

#8

السلام عليكم

شكراً لمروركم الكريم وهذا هو الشرح

بالنسبة للأمر

long curpos=ftell(ptr);

ftell returns the current file pointer for stream.

If the file is binary, the offset is measured in bytes from the beginning of
the file

The value returned by ftell can be used in a subsequent call to fseek.

 Return Value:
  ‏ On success, returns the current file
    pointer position.
  ‏ On error, returns -1L and sets errno to a
    positive value.

المعنى أنه يعيد المؤشر وهو ال ptr على آخر قيمة أو كلام تم الوصول إليه

بالنسبة للأمر

fseek(ptr,curpos,0);

Repositions the file pointer of a stream

fseek sets the file pointer associated with a stream to a new position.

المعنى أنه يرجع المؤشر إلى موضع جديد يتم تحديده من آخر قيمة وهي الصفر

آمل أن أكون قد أوصلت المعلومة بصورة واضحة

وأي سؤال أنا مستعد، وأرجوكم ما تترددوا في طرح أي سؤال مهما كان صغيراً، وإذا أردتم أعيد الشرح 1000000مرة لكي تستفيدوا وإن شاء الله كل أعضاء هذا المنتدى ما يواجهوا أي مشاكل في قراءة الملفات باستخدام السي

تم تعديل هذه المشاركة بواسطة eng_ibr في 22 فبراير 2005 في 01:56

اللهم صل وسلم وزد وبارك على سيدنا محمد وعلى آله وصحبه وسلم

تعلم كيف تقرأ من ملف باستخدام لغة السي

Routers Programming-الدرس الأول

#9

بسم الله الرحمن الرحيم

ما شاء الله عليك أخي eng_ibr (إبراهيم) دائما متميز ودائما رافع راسنا ومع أنني لا أعرف c حيث أنني لم أطبق عليها حيث أخذتها في الجامعة ولم أرجع لها

لكن مع ذلك موضوعك رائع ورائع جدا

فجزاك الله كل خير

نرجو لك التوفيق ونطلب منك المزيد والمزيد

أخوك / لؤي (أبو العبد)

#10

السلام عليكم

ألف شكر لك يا أخي لؤي (أبو العبد) على هذا الكلام

والله خجلتني :wacko:

اللهم صل وسلم وزد وبارك على سيدنا محمد وعلى آله وصحبه وسلم

تعلم كيف تقرأ من ملف باستخدام لغة السي

Routers Programming-الدرس الأول

#11

السلام عليكم

مشكور اخي الكريم وبارك الله فيك ..

بس ممكن سؤال

التعامل مع الملفات في لغة سي .. هل يتيح عملية فتح فايل وتغير محتوياته كما أشاء ( اي عملية ( Update) لاي معلومة كنت قد ادخلتها سابقا في الملف كما في لغة سي ++ )

وجزاك الله خيرا

برامج في ال C#

إذا اشتكى مسلم في الهند أرقني -- وإن بكى مسلم في الصين بكاني

ومصر ريحانتي والشام نرجستي -- وفي الجزيرة تاريخي و عنواني

وفي العراق أكف المجد ترفعني -- إلى بساتين عز ذات أفنانِ

أرى بخارى بلادي وهي نائية -- وأستريح إلى ذكرى خراسانِ

#12

السلام عليكم

أخي زيد العمري أنا جداً آسف لم أنتبه إلى ردك واستفسارك

أخي الكريم إن شاء الله في خلال هذا اليومين سوف أدرج موضوع جديد وهو كيفية الكتابة إلى ملف باستخدام لغة السي ، وإن شاء الله سوف أتطرق إلى موضوع التعديل على الملفات

ولكن أخي الكريم سامحني على إطالة الرد :unsure: لأني لم أكن منتبه إلى الموضوع وأي شيء تريده في السي أنا في خدمة عيونك

اللهم صل وسلم وزد وبارك على سيدنا محمد وعلى آله وصحبه وسلم

تعلم كيف تقرأ من ملف باستخدام لغة السي

Routers Programming-الدرس الأول

#13

مشكور أخي الكريم وبارك الله فيك

وأنا في الانتظار

وفقك الله لخير العمل

برامج في ال C#

إذا اشتكى مسلم في الهند أرقني -- وإن بكى مسلم في الصين بكاني

ومصر ريحانتي والشام نرجستي -- وفي الجزيرة تاريخي و عنواني

وفي العراق أكف المجد ترفعني -- إلى بساتين عز ذات أفنانِ

أرى بخارى بلادي وهي نائية -- وأستريح إلى ذكرى خراسانِ

#14

بسم الله الرحمن الرحيم

انا عايزة اسأل سؤال بس ينفع نتعامل مع الملفات يعنى نفتح ونقفل ملف ونكبيرملف من ملف تاني ونقرا مثلا اخر عشر سطور ينفع نعمل الحاجات ده من غير التعامل مع ال ستركشر اقصد كل ده يبقى فى المين بس.(ازاي)

وجزاكم الله كل خير :D

#15

السلام عليكم

أنا آسف على التأخر في الرد، لأني كنت منشغلاً في الأيام السابقة في مشروع التخرج

شكراً على مروركم الكريم

نعم بالنسبة إلى سؤالك أخت ensana

اقتباس
انا عايزة اسأل سؤال بس ينفع نتعامل مع الملفات يعنى نفتح ونقفل ملف ونكبيرملف من ملف تاني ونقرا مثلا اخر عشر سطور ينفع نعمل الحاجات ده من غير التعامل مع ال ستركشر اقصد كل ده يبقى فى المين بس.(ازاي)
نعم بالطبع ينفع 100% ولكن في هذه الجالة ستضطرين إلى قراءة الملف كله، المعنى أنه عندك ملف كامل، فقط ستقرئين منه كل الملف دفعة واحدة، أما عن طريق الستركت فتقسمين الملف إلى أقسام وتقرئين منه كل ما تريدين وتستطيعين البحث فيه عن كلمات معينة بواسطة
if clause

وآمل أن تكون المعلومة قد وصلت وعذراً على الإطالة في الرد

بالنسبة إلى سؤالك أخي محمد الهباش

اقتباس
هلا انا في السي لمن اجي ادخل بيانات في ال construct بتتخزن هذه المعلومات في المصفوفة الي بأكون عاملها لل construct هذا متق عليه بعد عملية التخزين في المصفوفة كيف بدي اخزن المعلومات الي ادخلتها انا تتخزن في الملف النصي ؟

مع مثال كامل على السي العادية وليس السي بلس بلس .

أخي الكريم عذراً لم أفهم السؤال

ماذا تقصد بال construct، وحسب علمي المتواضع أنا أعرف أنه لا يوجد بالسي ال construct أو ما يعرف بالبناء، يوجد بالسي بلس بلس

وهل تقصد ال struct أم ال construct

اللهم صل وسلم وزد وبارك على سيدنا محمد وعلى آله وصحبه وسلم

تعلم كيف تقرأ من ملف باستخدام لغة السي

Routers Programming-الدرس الأول

#16

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

شكراً لك ... :)

Success Is A Journey Not A Destination

#17

السلام عليكم و رحمه الله و بركاته

هل تعلم يا أخر كيف اقرأ الملفات العربية؟

sign2.gif

رحم الله امرىء أهدى لى عيوبى

سبحان الله و بحمده سبحان الله العظيم

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

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