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

سؤال حول المصفوفات و الملفات

بدأه *cpu* في 27 أبريل 2008 · 11 رد · 1,127 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

كيف اجعل المصفوفة تخزن ملفات يعني كل اندكس يخزن ملف..

مثلا عندي ملف للطلاب يخزن في اندكس1..

و ملف للمعلمين يخزن في اندكس 2..

ارجو توضيح الطريقة..لأني حاولت ولم اتوصل للفكرة

أجزل الله لكم الثواب

#2

مضفوفة تخزن ملفات !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

هل تقصد ملف يخزن مصفوفة ؟

من أقوال الأئمة

الإمام علي بن أبي طالب -رضي الله عنه-: "الناس ثلاثة : فعالم رباني ، ومتعلم على سبيل النجاة ، وهمج رِعاع غوغاء أتباع كل ناعق ، يميلون مع كل ريح ، لم يستضيئوا بنور العلم ، ولم يلجئوا إلى ركن وثيق".

الإمام مالك -رحمه الله- : " لن يصلح آخر هذه الأمة إلا بما أصلح به أولها ".

الإمام الأوزاعي -رحمه الله- : " عليك بآثار من سلف وإن رفضك الناس وإياك وآراء الرجال وإن زخرفوه لك بالقول ".

الإمام الفضيل بن عياض -رحمه الله- : " عليك بطرق الهدى و لا يضرك قلة السالكين و إياك و طرق الضلالة ولا يغرك كثرة الهالكين ".

علامة الزمان الإمام الألباني -رحمه الله- : " إن الخلاص إلى أيدي هؤلاء الشباب يتمثل في أمرين لا ثالث لهما ؛ التصفية والتربية ".

وكل خير في اتباع من سلف وكل شر في ابتداع من خلف

#3

لا أدري إذا كانت هذه طريقة عملية للتعامل مع عدد من الملفات، لكن يمكنك ببساطة عمل مصفوفة سلاسا نصية (مصفوفة كل عضو فيها عبارة عن كلمة)، بكلمات أخرى مصفوفة ثنائية البعد...

char files[10][12]

الآن تخزن إسم الملف في كل خلية وعندما تريد التعامل مع الملف "الرابع مثلا" تكتب بدل إسم الملف في دالتك التي تتعامل مع الملف تكتب

files[3]

---- بكلمات أخرى، انت لا تخزّن سلسلة من الكائن "ملف" بل للتوفير تخزّن سلسلة بأسماء الملفات فقط

تم تعديل هذه المشاركة بواسطة إسماعيل ابراهيم في 28 أبريل 2008 في 10:47

#4
إسماعيل ابراهيم كتب:
لا أدري إذا كانت هذه طريقة عملية للتعامل مع عدد من الملفات، لكن يمكنك ببساطة عمل مصفوفة سلاسا نصية (مصفوفة كل عضو فيها عبارة عن كلمة)، بكلمات أخرى مصفوفة ثنائية البعد...

char files[10][12]

الآن تخزن إسم الملف في كل خلية وعندما تريد التعامل مع الملف "الرابع مثلا" تكتب بدل إسم الملف في دالتك التي تتعامل مع الملف تكتب

files[3]

---- بكلمات أخرى، انت لا تخزّن سلسلة من الكائن "ملف" بل للتوفير تخزّن سلسلة بأسماء الملفات فقط

جزاكم الله خيرا..

نعم اقصد ان اخزن اسماء الملفات..لكن ياحبذا لو توضح الطريقة اكثر ..فتح الله عليك

#5

عزيزي اسماعيل ابراهيم .. حينما نود استخدام 2D Array .. فيجب أن يكون تعيين القيم داخلها بنفس الطريقة التي تم تعريفها ..

فالعنوان الذي تفضلتم به وهو

files[3]c

يعتبر غير موجود على ما أعتقد :) .

فيجب أن يكون العنوان بنفس الطريقة فمثلاً لوكان العنوان المراد التخزين فيه هو 1 -1

تكون الصيغة

files[1][1]c

طبعا تجاهل حروف c فهي فقط لضبط السطر :) .

من المفيد جداً النظر للمصفوفات ثنائية البعد على أنها جداول :)

أتمنى التوضيح من صاحب الموضوع ماهو المقصود بالملفات ..

#6

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

#include<stdio.h>
char *files[3];
void main()
{
files[0]="Hello Dear";
files[1]="hi hi hi hi";
files[2]="12345678944";
printf("%s",files[0]);
printf("%s",files[1]);
printf("%s",files[2]);

}

هي مصفوفة من المؤشرات... والخطأ (الذي أراه انا غير منطقي) هو في تحديد الأبعاد الثنائية للمصفوفة...

الخطأ :

files[][]

الصحيح

*files[]
#7

أخي الكريم .. الكود الأول يختلف عن الثاني :) . أرجو التأمل .

ولا خطأ منطقي في تحديد أبعاد مصفوفة ثنائية في مثالي .. وتسطيع التجربة أخي الفاضل :)

#8

أخي سي بي يو ماذا تقصد بالملفات .. فهل هذه البيانات مخزنة في Structure أو في Class أو أين ؟ حتى نعرف كيف ننشيء المصفوفة

موفق :)

#9
اقتباس
ولا خطأ منطقي في تحديد أبعاد مصفوفة ثنائية في مثال
:)

أخي وفقك الله لم اقصد مثالك...

بالنسبة لي استعمل المؤشرات دائما.. وأرى أن المصفوفة ما هي إلا مؤشر...

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

انظر الرسم

post-2447-1209411062_thumb.jpg

تم تعديل هذه المشاركة بواسطة إسماعيل ابراهيم في 28 أبريل 2008 في 22:32

#11

اهلين اخي Baby Coder

اعتقد ان الاستاذ اسماعيل ابراهيم يتكلم عن تعريف مصفوفة من الكلمات

مثلا :

 char* x[2][10];
  *x[0]="Ali";
  *x[1]="Nasser";

يستطيع ان يستدعي اي كلمة بهذه الطريقة

*x[1]

تحياتي

تم تعديل هذه المشاركة بواسطة time1 في 29 أبريل 2008 في 08:15

llback.jpg

اشهد ان لا إله إلا الله وان محمدا ً رسول الله

#12

نعم أخي...شمري هذا قصدي

---------

ان استخدام سلسلة نصية بدل كائن ملف افضل لتوفير الذاكرة(في حالة اسم الملف أقل من 80 (حجم كائن الملف) ).. وإمكانية ارسال النص بالاختيار الى دالة فتح الملف والتعامل معه حسب اسمه... بدل الكائن نفسه... وهذه طريقة لا تعني ان الطريقة الأخرى خطأ.

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