أهلا ومرحبا بكم مرة أخرى.
في هذه المحاضرة أريد أن أتحدث حول وضع الملف ، في الأساس
بعض الوظائف التي تسمح لك لتغيير موضع الملف.
لذلك بالنسبة للعديد من التطبيقات ، ستذهب يجب أن تكون قادرًا على الوصول إلى البيانات
في ملف غير الترتيب التسلسلي.
الترتيب التسلسلي بدأ في البداية ثم الانتقال
بالبايت باتجاه النهاية.
هذا ليس مفيدًا دائمًا لأن قد ترغب في الانتقال إلى منتصف
الملف والحصول على البيانات أو في نهاية الملف وسحب البيانات.
كل هذا يتوقف على التطبيق.
أنت لا تريد دائمًا الذهاب من البداية إلى النهاية.
لذلك هناك وظائف مختلفة التي يمكنك استخدامها للوصول إلى
البيانات بتسلسل عشوائي.
هناك جانبان من وضع الملف.
واحد هو معرفة مكانك موجودة في ملف والآخر ينتقل إلى
نقطة معينة في الملف.
هذان هما حقا الشيئين لك تريد معرفة ذلك عندما تتحدث
عن الملفات وتحديد موضع ملف ملف ، ما يشير إليه في الواقع.
مرة أخرى ، أين أنت في الملف نفسها وما إذا كنت تريد الانتقال إلى
مكان آخر في الملف أم لا.
حتى تتمكن من الوصول إلى الملف في موضع عشوائي بغض النظر عما إذا
قمت بفتح الملف ، يمكنك نقل ملف شريكك.
لا تحتاج إلى فتح ملف ملف لتغيير المكان الذي تريد تغييره
، وانظر إلى مكانك.
لذا اكتشف مكانك سنتحدث عنه أولاً.
لديك وظيفتان لتجدهما خارج مكان وجودك في ملف واحد.
يسمى فتل واحد هو يسمى fgetpos ، fget position.
ل ftell ، الوظيفة الفعلية التعريف واضح ومباشر.
تعود على طول و تأخذ مؤشر الملف.
وستقبل هذه الوظيفة مؤشر ملف كوسيطة وسيعيد
العدد الصحيح الطويل القيمة التي تحدد موضع الحرف في
الملف ، لذا فهو سأخبرك بالموقف.
يمكنك استخدامه عن طريق إنشاء ملف متغير في هذه الحالة fpos ، وهو
ما سيحصل عاد ثم مرر في ذلك الملف
المؤشر واستدعاء ftel.
متغير الموضع f يثبت الآن الموضع الحالي في الملف ويمكنك
استخدامه للعودة إلى ملف الموقف في أي وقت لاحق.
لذلك سوف يعيدك الوضع.
هذه هي الطريقة التي يمكنك الحصول عليها موضع النقطة الحالية
التي تشير إليها.
القيمة هي الإزاحة بالبايت من بداية الملف.
لذا قدم مباشرة جدا ل استخدام تمرير في المؤشر الخاص
بك سوف يعود ويخبرك أين أنت موجودة في ملفك بشكل أساسي من
بداية الملف حتى كم بايت من البداية.
لذلك في هذا المثال ، نقوم بإنشاء مؤشر ملف يسمى fp وننشئ عددًا
صحيحًا يسمى الطول.
سنفتح الملف ، وسيكون هذا للقراءة فقط.
نحن بصدد القيام تأكد من أنها ليست فارغة.
إذا كان الأمر كذلك ، فنحن ذاهبون لإرجاع خطأ.
ثم لا تقلق بشأن fseek.
fseek هو في الواقع مجرد الذهاب للذهاب إلى نهاية الملف.
هذه وظيفة أخرى تساعدنا.
أنا فقط أستخدمه في تدل على الفتل.
سوف يذهب Fseek حتى النهاية من الملف
، ثم ستقول ftell fp ، وهذا ما يحدث لإخبارك أنك ستكون في نهاية
الملف.
لذلك تم إرجاع الرابط في نهاية الملف.
ولذا فإن ما سيحدث هو سيعيد الحجم الإجمالي
للملف بناءً على الطول لأنك حركت المؤشر بالفعل إلى النهاية
ثم حركتك قال أين أنا وقال إنك في النهاية ، لذا عد إلى
النهاية.
والنهاية هي عدد بايت من آخر مرة قرأت فيها.
لذلك دعونا نلقي نظرة على هذا من الداخل من IDE الجميل لدينا كتل التعليمات البرمجية.
إذن هذا مثالنا على الترميز حيث نقوم بإنشاء مؤشر الملف الخاص بنا.
لقد جعلناها لاغية ، اصنعها تأكد من أنها ليست فارغة.
نحاول فتحه.
وبعد ذلك نقوم بعمل فسيك وهو عادل سنقوم بتغيير مؤشر ملفنا.
سوف تخبرنا Ftel حيث نشير إلى.
لذلك سوف يشير إلى end وستكون أي عدد من البايتات
حتى النهاية.
عندما ندير هذا ، ماذا ستفعل لتلاحظ أنه يعرض 24 بايت.
هذا يعني أنك في نهاية لأن الملف هو ملف صغير ويحتوي الملف
فقط على 24 بايت.
عادة ، ستستخدم ftel بعد قمت ببعض الكتابة أو القراءة
أو بعد ذلك fseek حيث انتقلت إلى مكان ما.
لكن من السهل جدًا استدعاء ftel بمؤشر الملف
ثم يخبرك len بمكانك.
يمكنك أيضا استخدام fget موقف أو وظيفة fgetpos.
وهذه وظيفة ثانية تقديم معلومات عن وضع الملف
الحالي.
إنه أكثر من ذلك بقليل معقدة من فتيل.
هذا يعيد عددًا صحيحًا.
يأخذ مؤشر ملف و يأخذ أيضًا نوع f الموضع t.
لذا فإن المعلمة الأولى هي مؤشر الملف هذا ، حتى تعرف
الملف الذي تريد قراءته.
المعامل الثاني هو مؤشر إلى a النوع المحدد في standardio. ح.
النوع f من النوع t قادر على ذلك سجل كل موقف داخل ملف.
لذا فإن وظيفة fget هي الوظيفة مصممة لاستخدامها
عند ضبط موضع وظيفة تحديد المواقع.
لذلك تستخدم وضعية fset و ثم تستخدم وضع fget
مع ذلك.
لذا فإن وظيفة fget position يخزن الموقع الحالي
ومعلومات حالة الملف للملف والموضع والعودة
للصفر إذا نجحت العملية ، يتم إرجاع a قيمة عددية غير صفرية للفشل.
لذلك يمكنك إنشاء ملف متغير من نوع الموقف s.
وهنا نقول إنه هنا فقط.
ثم نسمي موقف fget.
نحدد في مؤشر الملف لدينا ، و نحدد في نوع الموضع f الخاص بنا.
علينا أن نمر في علامة العطف ، و عنوان لأنه ليس مؤشرًا.
لذلك في هذه الحالة ، التيار وضع الملف في المتغير
hello أو هنا.
لذلك عليك التصريح عن متغير من النوع f الموضع t لأن هذا ما تمرره
في الخاص بك المعلمة ، المعلمة الثانية الخاصة بك.
يمكنك التصريح عن مؤشر لملف اكتب f position t star لأنه لن
يكون هناك أي ذكريات المرتبطة بتخزين بيانات الموقع.
لنلق نظرة على مثال هذا سيجعل أكثر منطقية.
في هذه الحالة ، نقوم بإنشاء ملفنا المؤشر ، نقوم بإنشاء مركز
حيازة نوع t ، نسميه مفتوحًا ومن ثم نسميه fget position.
ونمرر في ملفنا المؤشر في موقفنا النهائي.
هذا هو المكان الذي نحن فيه تخزين الموقف.
سنحصل على ملف المكان الذي نحن فيه.
ثم عندما نقول f put s ، نكتب بعض البيانات إلى أي
مكان ننتقل إليه.
لذا مرة أخرى ، احصل على الوظيفة و يخبرك ftell بالمكان الذي تريد الكتابة إليه
أو القراءة منه.
إنه في مكان ما في المنتصف.
انها ليست في البداية ، انها ليست في النهاية.
أنت تتحرك.
عادة ما تتحرك مع السعي أو حركتك بشيء آخر ، احصل
على موقع وذاك يخبرك أين أنت.
حتى موقف fget و ftell هو سيخبرك بالضبط إلى أين تشير ، وهذا
يعني أنه يمكنك الانتقال إلى مكان آخر وستتمكن من
القراءة.
الآن تحديد موقف في ملف حتى هذه النقطة ، نحن نقرأ فقط في
المكان الذي نحن فيه.
لن نقرأ حقًا في المكان الذي نحن فيه ما
لم نقم بالقراءة والكتابة.
وذلك كمكمل ل ftell ، لديك fseek أيضًا.
وسوف يسمح لك fseek بذلك التحرك في مكان ما لموقفك.
تقوم بإرجاع عدد صحيح.
تقوم بإرجاع مؤشر ملف طويل fset وعدد صحيح أصلي.
المعلمة الأولى هي المؤشر إلى الملف الذي تقوم بإعادة وضعه.
تحدد المعلمات الثانية والثالثة إلى أين تريد أن تذهب في الملف.
المعلمة الثانية هي تعويض حيث النقطة المرجعية المحددة
بواسطة المعلمة الثالثة.
يمكن أن تكون النقطة المرجعية واحدة من ثلاث قيم قمت بتحديدها
بواسطة الأسماء المحددة مسبقًا.
ابحث عن مجموعة ، وابحث عن التيار وابحث عن النهاية.
تحدد مجموعة البحث بداية الملف.
تحدد Seek cur التيار الموضع في الملف ويسعى إلى نهاية
يحدد نهاية الملف.
لذلك بالنسبة لملف وضع النص ، يجب أن تكون الوسيطة الثانية
قيمة تُرجعها ftel.
لذلك يجب أن تلاحظ ذلك مع fseek و ftel ، يتم استخدامهما معًا.
لذا فإن الحجة الثالثة للنص يجب البحث عن ملفات الوضع.
بالنسبة للملفات النصية ، كل العمليات مع fseek مع الإشارة إلى
بداية ملف للملفات الثنائية التي لم نتعلم الكثير
عنها حقًا.
ولكن بالنسبة للملفات الثنائية ، فإن ملف وسيطة الإزاحة هي ببساطة
عدد وحدات البايت النسبي.
يمكنك ، بالتالي ، العرض القيم الموجبة أو السالبة للإزاحة
عند المرجع تم تحديد النقطة على أنها طلب منحني.
لنلق نظرة على مثال.
هنا في هذا المثال ، مرة أخرى ، نقوم بعمل fputs.
لذلك نكتب بعض البيانات لدينا file ، ثم نستخدم fseek.
سوف ينقلك Fseek.
هنا هذا يقول أنك سننتقل سبعة بايت ونستخدم مجموعة البحث
لنقول إننا نريد للتحرك في مكان ما سبعة بايت أساسًا
من البداية.
ويمكننا الانتقال من بداية الملف بسبعة
بايت والتي ستنقله.
بعد سبعة بايت ، يمكننا إذن في الواقع اكتب البيانات إليها.
وسنكون قادرين أيضًا على ذلك استخدم ftell لترى ذلك بعد
سبعة بايت حيث نحن.
يمكنك استخدام المعلومات ل استرداد من مكان وجودك.
مرة أخرى ، بيت القصيد من fseek والأدوات هي إما أنك ترى المكان الذي
تتواجد فيه لتحديده حيث تريد الكتابة أو القراءة.
لذا فإن fseek s سيذهب بالفعل إلى حرك الموضع ، أخبرك سيخبرك
بمكان وجودك.
موقف Fset هو أيضا مثل fseek.
لكن الموقف الأولي هو أ أكثر تعقيدًا بعض الشيء.
سوف يتماشى مع الوضع الأولي.
حتى الحصول على موقف fset هو أيضا تشبه إلى حد بعيد موقف fset.
مع وضعية البداية ، فإنه يحدد المعلمة الأولى كمؤشر
للملف المفتوح.
المعلمة الثانية هي مؤشر من نوع f موضع t.
الموقف الذي تم تخزينه في العنوان
من خلال احتواء موضع fget.
لذا فقد وضع fset ملفك المؤشر ثم المتغير الفعلي.
وكان المتغير هنا سابقًا التي تم تعيينها من خلال مكالمة لموقف fget.
مرة أخرى ، سوف تستخدم تتلاشى وتندمج معا.
يعود موضع fset a قيمة غير صفرية عند الخطأ أو صفر
عند نجاحها.
تم تصميم هذه الوظيفة للعمل مع القيمة التي يتم
إرجاعها بواسطة موضع fget.
لذلك يمكنك فقط استخدامه للوصول إلى ملف رقم في ملف للحصول على مكان في الملف الذي
كنت قد زرته من قبل.
يسمح لك Fseek بالذهاب إلى أي ملف الموقف فقط من خلال تحديد الإزاحة
المناسبة.
لذلك نحن هنا يبدو أننا لدينا لدينا موقف نوع t.
نفتح ملفنا و ثم نسميه موقف fget.
في وضع fget ، نحن نحدد حيث نريد تحريك المؤشر
، حيث نحن في الواقع القراءة أو الكتابة في الملف.
ثم نستخدم fputs ل أينما انتقلنا إليه.
ومن ثم فإن وضعية الانقضاض هي الذهاب إلى مرة أخرى ، قم بتعيين شيء ما على وجه التحديد
حيث نريد الكتابة إليه وبعد ذلك اكتبها من أي مكان نريد.
لذلك مع كل هذه الوظائف ، تريد أن ترى في الواقع إلى أين
تشير.
سيصبح هذا أكثر سهولة نفهم بمجرد أن نواجه التحدي.
مع القراءة والكتابة ، أنت تريد دائمًا الانتقال إلى مكان ما إلى النقطة
التي تكتب إليها.
أنت لا تريد أن تكتب دائمًا في البداية أو النهاية.
وبالتالي فإن هذه الوظائف للغاية مفيد في الانتقال إلى المكان الذي
تريد وضعه في أي مكان في الملف.
شكرًا لك