السلام عليكم ورحمة الله وبركاته
طريقة ربط السي مع الملفات تعلمتها وحدي فأردت أن تستفيدوا منها لأنها كانت مسألة صعبة عندي في البداية ولكنها مسألة سهلة للغاية، مجرد خطوات واتبعها.
عرف في البداية 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 }
مثال بسيط للقراءة من الملف. حاول أن تنفذه وإن شاء الله ستنجح.
وأنا مستعد لأي سؤال فيه


