سؤال

أنا مشغول مع البرمجة فئة أن يخلق مؤشر من نص-ملف ASCII/الثنائية.مشكلتي هي أنني لا أعرف كيف أبدأ.أنا بالفعل بعض المحاولات ولكن لا شيء حقا عملت بشكل جيد بالنسبة لي.أنا لا تحتاج إلى العثور على عنوان الملف عن طريق MFT.فقط تحميل الملف وإيجاد الأشياء بشكل أسرع بكثير من البحث عن المفتاح في مؤشر الملف في نص الملف إلى العنوان يظهر.

مؤشر الملف يجب أن تكون مبنية على النحو التالي:

KEY        ADDRESS  
  1        0xABCDEF    
  2        0xFEDCBA    
  .           .  
  .           .  

لدينا نص الملف مع المثال التالي القيمة:

1, 8752 FW,
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++, 
******************************************************************************, 
------------------------------------------------------------------------------;

أتمنى أن هذا ما يفسر سؤالي أفضل قليلا.وذلك بفضل!

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

المحلول

ويبدو لي أن كل صفك تحتاج إلى القيام به هو تخزين مجموعة من المؤشرات أو ملف بدء إزاحة إلى المواقع الرئيسية في الملف.

وانها حقا يتوقف على ما تمثله المواقع الرئيسية الخاصة بك.

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

وعلى سبيل المثال، قد تكون المواقع الرئيسية الخاصة بك حيث يبدأ كل كتلة البيانات الجديدة مكتوبة في ملف من. مثلا 1000 بايت كتلة الأولى، موقع مفتاح 0؛ الثانية كتلة 2500 بايت، والموقع الرئيسي 1000. كتلة الثالث 550 بايت. موقع مفتاح 3500. سوف كتلة المقبل سيكون 4050 على افتراض أن كل 0 هو البايت الأول.

وتخزين القيم الرئيسية في طول صفيف متغير وبعد ذلك يمكنك بسهولة استرداد نقطة انطلاق لكتلة البيانات.

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

نصائح أخرى

التعليمات البرمجية المتكررة ليس كثيرا من فكرة كما هو وظيفة كنت ترغب في الحصول في نهاية المطاف.

ندرك أن "الفهرسة" يعني مجرد "تذكر" حيث الأشياء الموجودة.يمكنك إنجاز هذا باستخدام أي بنية البيانات يحلو لك...ب-شجرة, أحمر/أسود شجرة ، BST أو أكثر تقدما هياكل مثل لاحقة الأشجار/لاحقة المصفوفات.

أنصحك أن ننظر إلى مثل هياكل البيانات.

تحرير:

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

مرة كنت قد فعلت هذا ، نوع المفتاح الصفيف.الآن لديك القدرة على القيام الثنائية البحث عن مفاتيح تجد القيمة المناسبة على مفتاح معين.

يمكنك بناء جدول التجزئة بطريقة مماثلة.يمكنك بناء BST أو هيكل مماثل مثل التي ذكرتها سابقا.

ما زلت لا أفهم حقا مسألة (العمل على سؤالك يسأل مهاره) ، ولكن بقدر ما أستطيع أن أقول الخوارزمية سوف يكون:

  1. تفحص الملف خطيا ، القيمة الأولى إلى أول فاصلة (',') مفتاح على الأرجح.جميع مفاتيح أخرى تحدث أينما ';' يحدث, في ',' (قد تحتاج إلى تخطي linebreaks هنا).إذا كان الواجب فقط استخدام scanf() أو شيء من قراءة الرئيسية.
  2. طباعة مفتاح بايت الموضع الذي وجدته في ملف index

AFAIUI هذه الخوارزمية, أنا حقا لا أرى ما المشكلة هنا ؟

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