سؤال

أنا مبرمج مبتدئ في لغة C وأعمل حاليًا على مشروع لتنفيذ خوارزمية اكتشاف كائنات فيولا جونز باستخدام لغة C.أود أن أعرف كيف سأتمكن من تخزين البيانات في مصفوفة ثنائية الأبعاد في ملف يمكن نقله بسهولة والوصول إليه بواسطة ملفات برامج مختلفة (على سبيل المثال.main.c وheader_file.h وما إلى ذلك)

شكرا لكم مقدما.

هل كانت مفيدة؟

المحلول

لا توجد تفاصيل كافية للتأكد مما تبحث عنه، ولكن البنية الأساسية لما تريد القيام به ستبدو كما يلي:

open file.csv for writing
for(iterate through one dimension of the array using i)
{
for(iterate through the other dimension of the array using j)
   { 
   fprintf(yourfilehandle,"%d,",yourvalue[i][j]);
   }
fprintf(yourfilehandle,"\n");
}
close your file

وكما اقترح الآخرون، فإن هذا سيتركك مع .CSV وهو خيار جيد جدًا، لأنه من السهل قراءته وتحليله، ويمكنك فتح الملف في برنامج Notepad أو Excel وعرضه دون أي مشاكل.

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

لاحظ أن هذا يترك فاصلة غريبة في نهاية السطر.إذا كان هذا يزعجك، فمن السهل تنفيذ الشروط المسبقة واللاحقة للحصول على الفواصل في المكان الذي تريده فقط.تَلمِيح:يتضمن طباعة الفاصلة قبل الإدخال داخل حلقة for الثانية، وتقليل عدد الإدخالات التي تكررها للحلقة الداخلية، وطباعة الحالة الأولى والأخيرة من كل صف خاص، مباشرة قبل وبعد حلقة for الداخلية، على التوالى.من الصعب شرح ذلك، على الأرجح.

هنا مرجع لملفات C-style I/O، و هنا هو البرنامج التعليمي.

نصائح أخرى

دون معرفة أي شيء عن نوع البيانات التي تخزنها، أود أن أقول لتخزين هذا كصفوفة.ستحتاج إلى اختيار محدد لفصل عناصرك (علامة التبويب أو المساحة هي الخيارات الشائعة، و AKA "TSV" و "CSV"، على التوالي)، ثم قم بتمييز نهاية الصف (خط جديد هو اختيار جيد هنا).

حتى قد يبدو ملفك المحفوظ شيئا مثل:

giveacodicetagpre.

يمكنك أيضا تحديد تنسيقك على أنه يحتوي على بعض البيانات الوصفية في السطر الأول - قد يكون عدد الصفوف والأعمدة مفيدا إذا كنت ترغب في تخصيص الذاكرة مسبقا، مع معلومات أخرى مثل ترميز الأحرف.ابدأ بسيطة وإضافة حسب الضرورة!

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top