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

طلب مساعده في لغة السي

بدأه .: فاطمة :. في 22 مايو 2009 · 8 رد · 1,024 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

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

كيف حالكم اخوتي الاعزاء

عندي صعوبة في فهم

text file

binary files

linked lists

node

في لغة السي

أتمنى اذا في شخص عنده شرح مايبخل علي

محتاجته ضروري ليوم الاحد

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

#2

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

أمرك أختي:

رايحة اكتب لك تعاريف موجزة و لكنها تفي بالمفهوم و مناسبة...اتفضلي:

Text File:

هو عبارة عن ملف لا يحتوي إلا على حروف Characters متل الحروف الموجودة بأطقم الحروف التي نستعملها للكتابة بأجهزتنا. أطقم الحروف هذه متل ASCII و ANSI و UNICODE (مش للحصر طبعاً).

و ايضاً لا يحتوي على رسومات أو ألوان او خطوط أو اي زخارف او حروف لها تأثيرات خاصة قد تُستعمل لعمل تأثيرات معينة متل الحرف المسؤول عن إصدار اصوات. هذا يعني أن الملف نصّي تماماً لا يمكن تفسيره بطرق أوامر. و ابسط مسال لهذا النوع من الملفات هو الموجودة عندنا بالمفكرة Notepad بنظام وندوز. و بيكون الإمتداد الخاص للملف على نحو .txt

ملاحظة:

الملفات التي قد تحتوي على رسومات و زخارف و ألوان ووو تُسمى Rich Text Files.

تماماً متل الملفات بواسطة برنامج word.

Binary Files:

هذا النوع من الملفات هو ببساطة ضد النوع السابق Text File و ايضاً ليس متل النوع Rich Text Files. قد يحتوي هذا النوع على حروف مطبوعة من أطقم الحروف السابقة الذكر. ولكن في نفس الوقت قد يحتوي على حروف لها تأثيرات خاصة و ربما ايضاً يحتوي على نصوص برمجية يقوم الكمبيوتر بتفسير هذه الحروف و الكلمات كبرنامج. و ايضاً يمكن طباعة محتوياته النصية كرموز على الشاشة بواسطة بعض الأوامر الخاصة او البرامج الخاصة.

بخصوص Linked List و node تتعلق بهياكل البيانات

اتفضلي الرابط التالي :

شرح وافي لهذا النوع

موفقة يارب

تم تعديل هذه المشاركة بواسطة رغـد في 22 مايو 2009 في 19:37

[وسط]

♥ Countess ♥

57899411.gif

♥

[/وسط]

#3

عزيزتي رغد

أشكرك على مساعدتي

ولكن حبيت يكون شرح ال files نفس ال Linked List و node

أبي اعرف اشلون اكتب برنامج كامل

والاوامر اللي استخدمها كل امر شنو يسوي ؟؟

مثلا اذا كتبت

count=fscanf(cfPtr,"%d %s %d",&studID,name,&points );

شنو بيكون محتوى count??

while((ch=getc(inPtr))!=EOF)

getc شنو وظيفها ؟؟

putchar(ch);

putc(ch,outPtr);

والأمرين شنو وظيفتهم ؟؟

اشلون استخدم fread , fwrite, fseek

دكتورنا مايشرح عدل مجرد اسلايدات

أتمنى تفيدوني

وألف شكر لج اختي الغالية

#4

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

أول شىء هناك الكثير من الدوال التى تستخدم فى التعامل مع الملفات مثل fgetc , fgets , fprintf , fscanf

وغيرها ....

قبل أن نقوم بشرح الدوال يجب أن نعرف كيف نتعامل مع المؤشر من النوع *FILE ؟

عندما نقول

FILE* fptr ;

فالمؤشر fptr هو المسئول عن القراءه من الملف والكتابه على الملف , بعد تعريف المؤشر fptr يجب ان نستخدم الداله fopen وهى تستخدم فى فتح ملف اما للقراءه او الكتابه او كلاهما

فلو قلنا

fptr =fopen(" test.txt","w");

w هنا تعنى ان الملف مفتوح للكتابه فقط ولو استبدلناها ب

r فهو مفتوح للقراءه

w+ أو r+ للقراءه والكتابه معا

r أو r+ يجب ان يكون الملف موجود مسبقا , أما w او w+ فيتم انشاء الملف من البدايه ولو كان الملف موجودا فإنه يتم حزفه وانشاء ملف فارغ جديد

a يقوم بالكتابه على الملف ولكن من نهايته , ويمكنك استنتاج وظيفة a+

ويمكنك معرفة المزيد فى الرابط

http://www.cplusplus.com/reference/clibrary/cstdio/fopen

لو أضفنا حرف b للحروف السابقه فهدا يعنى اننا سنتعامل مع الملفات الثنائيه binary

الداله fprintf

تستخدم للكتابه على الملفات بطريقه تشبه الداله printf التى تستخدم للإخراج على الشاشه وتركيب الداله fprintf يشبه الداله printf ولكن يضاف اليها بارامتر وهو اسم مؤشر الكتابه

مثال :


int main()
{
int a=5,b=6;
FILE* fptr=fopen("test.txt","a+");
if(!fptr) printf("error !!!");
else
{
fprintf(fptr,"%d %d\n",a,b);
}
return 0;
}
#include <stdio.h>

الداله fscanf لقراءة الملفات بطريقة المتغيرات مثل scanf ولكن ايضا يضاف اليها اسم مؤشر القراءه

مثال


int main()
{
int a,b;
FILE* fptr=fopen("test.txt","r");
if(!fptr) printf("error !!!");
else
{
fscanf(fptr,"%d %d",&a,&b);
}
printf("%d %d\n",a,b);
return 0;
}
#include <stdio.h>

لو أحببتى الإطلاع أكثر فى الرابط

http://www.cplusplus.com/reference/clibrary/cstdio/

وللحديث بقيه ان شاء الله تعالى

فى أمان الله

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

#5

شكرا لك اخي على الشرح

وان شاء الله اطلع على الروابط

الله يعطيك العافية

#6

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

نكمل حديثنا ان شاء الله

نتكلم عن الدوال

1- fgetc

وظيفتها قراءة حرف واحد من الملف , أى أن المؤشر يقرأ حرف واحد ثم ينتقل الى الحرف اللى بعده و هلم جرا

حتى المسافه الخاليه تقرأ كحرف

ويجب اسناد قيمتها الى متغير حرفى

مثال :


int main()
{
char c;
FILE* fptr=fopen("test.txt","r");
if(!fptr) printf("error !!!");
else
{
c=fgetc(fptr);printf("%c\n",c);
c=fgetc(fptr);printf("%c\n",c);
c=fgetc(fptr);printf("%c\n",c);
}

return 0;
}
#include <stdio.h>

2- الداله fpuc وهى لكتابة حرف فى الملف تباعا تباعا

مثال


int main()
{

FILE* fptr=fopen("test.txt","w+");
if(!fptr) printf("error !!!");
else
{
fputc('x',fptr);fputc('y',fptr);
}

return 0;
}
#include <stdio.h>

3- fputs

تستخدم لكتابة مصفوفه حرفيه كامله على الملف

ومن خلالها يمكن فهم الداله fgets

مثال:


int main()
{
char s[30];
FILE* fptr=fopen("test.txt","w+");
if(!fptr) printf("error !!!");
else
{
fputs("hello c++",fptr);
fgets(s,30,fptr);
}

return 0;
}
#include <stdio.h>

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

#7

مشكور اخوي على الشرح والموقع

وايد فادني

بس ممكن تشرح لي ال fseek

fread

fwrite

مافهمتهم عدل من الموقع

والف شكر لك

#8

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

الكود الآتى يحتوى على استخدام تلك الدوال


struct names
{
int num;
char name[20];
};
int main()
{
names t;
char yn;
int n;
FILE* fptr=fopen("myfile.dat","ab+");
if(fptr==NULL) printf("can't open file \n");
else
{
// loop for input data
while (1)
{
printf("Enter num : ");
scanf("%d",&t.num);
printf("Enter name : ");
scanf("%s",t.name);
fwrite(&t,sizeof(names),1,fptr);
printf("do you want to add more y/n : ");
scanf("%s",&yn);
if(yn=='n') break;
}
rewind(fptr);
// how to use fseek
printf("enter number : ");
scanf("%d",&n);
fseek(fptr,(n-1)*sizeof(names),SEEK_SET);
// how to use fread
fread(&t,1,sizeof(names),fptr);
printf("the element in %d order is %d %s \n",n,t.num,t.name);
}
return 0;
}
#include <stdio.h>

الداله fwrite

تستخدم لكتابه كتله من البيانات على الملف

ولها أربعه بارامترات الأول هو مؤشر يشير الى تلك الكتله

وطبعا مررنا عنوان الستركت t الى الداله

البارامتر الثانى

حجم تلك الكتله المراد كتابتها

الثالث عدد تلك الكتل طبعا فى مثالنا هى 1 وتكون أكبر من واحد فى حالة استخدامنا للمصفوفات

الرابع هو مؤشر الكتابه على الملف

بالنسبه الى fseek

البارامتر الأول طبعا معروف هو مؤشر القراءه

الثانى هو حجم البيانات التى يجب ان يمر بها المؤشر حتى يقف

يعنى لو كانت n=2 فمعناه تحريك مؤشر القراءه لكتله واحده والوقوف عند بداية الكتله الثانيه لقراءتها

الثالث هو مكان بداية الحركه وهو اما

SEEK_SET من البدايه

SEEK_CUR من المكان الحالى للمؤشر

SEEK_END من النهايه

وأعتقد ان الداله fread يمكن فهمها بنفس النمط

تحياتى بالتوفيق

سلام

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

#9

مشكووور اخوي على الشرح

وايد افدتني

الله يعطيك العافية

يسلموووو

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