أهلا ومرحبا بكم مرة أخرى.
في هذه المحاضرة أود للحديث
عن كيفية قراءة نص من ملف.
في الوقت الحالي ، نحن ذاهبون إلى التركيز على قراءة الملفات النصية.
لذلك إذا أردنا قراءة الشخصية من ملف نصي ،
سنستخدم وظيفتين.
أول واحد سيكون fgetc.
هذا سوف يقرأ حرف من النص الملف الذي تم فتحه للقراءة.
تذكر ، علينا دائما أن نفتح فوق الملف قبل أن نتمكن من إجراء
أي عمليات ملف عليه ما لم يكن إنها إعادة تسمية أو حذف
ومن ثم لا يمكن فتح الملف.
ولكن إذا كنت تريد أن تفعل القراءة والكتابة أو الإلحاق
، علينا فتح هذا الملف.
نحن نعلم أنه يمكننا الانفتاح ملفات ذات أوضاع مختلفة.
في هذه الحالة للقراءة ، سيكون لدينا لفتح r أو r plus ، ومن ثم
يمكننا البدء في استدعاء fgetc.
تأخذ وظيفة fgetc مؤشر الملف باعتباره الوسيطة
الوحيدة ، وسيعود قراءة الحرف كنوع int.
هنا مثال ، نقوم بإنشاء mchar اكتب int ، ونقول fgetc pfile.
سوف تقرأ شخصية في متغير mchar مع pfile
كمؤشر ملف.
أعتقد أن pfile كان بالفعل فتح العودة إلى ملف المؤشر.
mchar من النوع لأن eof الذي هو حرفنا الخاص في نهاية
الملف ، يتم إرجاعه إذا تم الوصول إلى نهاية الملف.
لذلك يمكننا دائمًا التحقق من ذلك عدد صحيح لمعرفة ما إذا كان eof.
وإذا كان الأمر كذلك ، فنحن لا نريد لقراءة المزيد
، لا نريد الاتصال بـ fgetc بعد الآن.
وظيفة fgetc ، وهي ما يعادل fgetc متاح أيضًا.
لذا فإن getc هي نفسها تقريبًا fgetc ، أنت فقط تريد استخدام fgetc.
أعتقد أن لديها بعض المزيد من الحماية فيه.
مع getc ، فإنه يتطلب حجة من النوع file star ويعيد ويعيد
الحرف الأحمر كنوع int.
إنها مطابقة تقريبًا لـ fgetc.
الاختلاف الوحيد بينهما هو أن getc قد يتم تنفيذه كماكرو
، ونحن لا نفعل ذلك تعرف ما هو الماكرو الآن.
لذلك سنلتزم باستخدام fgetc كوظيفتنا لقراءة
الأحرف.
يمكنك قراءة محتويات الملف.
مرة أخرى ، عند الضرورة ، يمكنك استخدام وظيفة الترجيع هذه التي تضع الملف
المحدد بواسطة الملف المؤشر إلى بداية الملف.
لذلك يمكنك استخدام الترجيع إذا تريد أن تقرأ مرة أخرى.
فقط قل إرجاع ثم ملف مؤشر الملف ، أساسي جدًا.
إذن هذا مثال.
عليك أن تشمل رأس io القياسي كلما
قمنا بأي عمليات ملف.
في وظيفتنا الرئيسية ، نحن سنقوم بإنشاء مؤشر الملف الخاص بنا.
إذا كنت تريد تهيئة هذا إلى لاغٍ وسنقوم بإنشاء عدد صحيح.
أول شيء سنفعله هو أننا سنقوم بفتح
الملف باستخدام f open call ، وسوف نحدد اسم الملف وسوف نحدد
أنه للقراءة.
سيعود ذلك بمؤشر الملف الخاص بنا.
حتى الآن لدينا مؤشر fp مشيرا إلى ملف صالح.
إذا كان غير قادر على فتح الملف. رسالة قصيرة هذا ليس في المسار
الصحيح أو أيًا كان ، سيعود فارغًا.
لذلك تريد التحقق من وجود قيمة خالية ، تأكد من أن fp ليس فارغًا.
إذا كان فارغًا ، فاخرج من البرنامج.
خلاف ذلك ، عندما كنت عادة قراءة الأحرف ، سيكون
لديك داخل حلقة.
لذلك نقول هنا بينما c يساوي fgetc fp ، هذه قراءة حرف من ملفنا
، تمرير مؤشر الملف إلى fgetc ، والذي يقوم بإرجاع
عدد صحيح.
تذكر ، يمكننا القفز من الحلقة إذا كان هذا العدد الصحيح الذي تم إرجاعه هو نهاية
الملف لأننا لا نريد لقراءة ما بعد نهاية الملف.
خلاف ذلك ، يمكننا فقط الطباعة شخصيتنا باستخدام النسبة المئوية ج و ج.
آخر شيء نريد القيام به هو نحن نريد إغلاق الملف ، ثم نريد تعيين
مؤشر الملف الخاص بنا إلى null ، ويمكننا العودة.
دعنا نحاول الاستفادة من هذا ، وخلق هذا داخل كتل التعليمات البرمجية.
هذا هو برنامجنا داخل كتل التعليمات البرمجية.
تقول ، هذا البرنامج لن يفعل العمل ما لم يكن لدينا ملف على القرص حيث
يتم تشغيل البرنامج.
لذلك أولاً إذا قمنا ببناء هذا ، يجب أن يبني بشكل جيد ، يجب أن ينشئ
ملفًا تنفيذيًا في مكان ما على القرص الصلب الخاص بك.
لقد كنت أضع كل مشاريعي داخل دليل قروض dot الخاص بي.
لذلك إذا ذهبت إلى التنزيلات الخاصة بي الدليل وأنا
أذهب إلى اسم المشروع ، وهذا مجرد اختبار مشروع حتى أينما كنت تخزن مشاريعك الخاصة
بي في الاختبار.
إذا ذهبت للاختبار ، فسترى هذا داخل دليل bin ، داخل التصحيح هو
الملف القابل للتنفيذ.
هنا حيث تقوم بإنشاء ملف ملف إذا كان لديك قريب.
Path لذلك يمكنني هنا فقط إنشاء ملف ملف جديد ويمكننا الحصول عليه كملف
نصي حتى أتمكن من إنشائه كنص المستند ، ويجب أن يكون اسمه ملف.
ثم سأضع بعض المعلومات فيه.
سأقوم فقط بوضع بعض البيانات مثل مرحبًا ، هذا هو خط تغذية Jason.
حسنًا ، لا ، وهكذا دواليك ، وسأحفظه.
يجب أن يكون هذا الملف موجودًا بتنسيق اطلب من هذا البرنامج أن يعمل.
لذلك قمت بإنشاء الملف.
الآن عندما أديرها ، آمل سيقرأ ما أضفته
للتو وطباعته.
تقول خطأ وفتح الملف لا يوجد ملف دليل مثل هذا الملف
، وهذا على الأرجح لأنني احصل عليه في مجلد التصحيح.
وهذا لا يعمل في التصحيح.
لذلك دعونا نحاول تشغيله في debug و أعتقد أنه من المحتمل أن يعمل الآن.
يمكننا أن نقول التصحيح ، ابدأ.
سيبحث هذا عن الملف القابل للتنفيذ في دليل التصحيح نأمل.
نريد التأكد من تشغيله.
لا يزال غير موجود ، لذلك عليك أن تفعل تأكد من أنك تعرف مكان الملف القابل للتنفيذ.
دعنا نحاول في مكان آخر أو أفضل حتى الآن يمكنني فقط تشغيل الملف القابل للتنفيذ
داخل التصحيح الدليل ويجب أن تجده هناك.
لذلك إذا نقرت مرتين هنا ، انها في الواقع لا تتوقف.
يقفز.
إذن ما يمكنك فعله لذلك هو بدلاً
من العودة ، يمكنك قول توقف النظام مؤقتًا ولن يخرج البرنامج حتى تقوم بتشغيله.
لذلك دعونا نجربها الآن.
حتى الآن توقف مؤقتًا ، لم يفعل تنفيذ البرنامج.
وما رأيته كان ، مرحبا هذا جايسون.
كان قادرًا على العثور على الملف ، طبعت بشكل
جيد ، وطبعتها ثم توقف.
خلاف ذلك ، عند تنفيذ يقوم البرنامج بطباعة البيانات بسرعة
كبيرة ويخرج من ملف البرنامج الذي انتهيت منه.
هذه هي الطريقة التي يمكنك من خلالها اختبارها.
يجب تخزينه حيث الملف القابل للتنفيذ يتم تخزينه من حيث يتم تشغيله.
يجب أن يتم تشغيله من مكان ما آخر في دليل المشروع الخاص بك.
لست متأكدا من أين يتم تشغيله.
يمكننا محاولة نقل الملف إلى حيث شفرة المصدر.
ربما يتم تشغيله من هنا.
لذا سنضعها هنا هنا.
والآن سنحاول تشغيله من المعرف وربما يعمل.
نحن لا نبني.
قمنا بتشغيله ، وتمكن من العثور عليه.
لذلك يبدو أن لدينا لوضع الملف داخل مكان وجود شفرة
المصدر.
طالما وضعنا هذا الملف ملف. نص داخل ملف المشروع
، ستتمكن من رؤيته.
هكذا مثال سريع كيف يمكنك افتح ملفًا واقرأ الأحرف الفردية ،
وليس الأكثر فاعلية طريقة للقراءة من ملف لأنك عادة ما
تريد قراءة السلاسل.
لكن هذا سيفتحها.
ترى المكالمة المفتوحة و لاحظت حلقة while.
هذا مهم.
دعنا نعود ونتحدث عن كيف يمكننا قراءة سلاسل من
ملف أكثر كفاءة.
هذه قراءة شخصية واحدة.
ماذا عن قراءة سلسلة؟
يمكنك استخدام وظيفة fgets للقراءة من أي ملف أو تيار.
هذا سوف يقرأ سلسلة.
يستغرق سلسلة أحرف له المعلمة الأولى.
عدد الأحرف التي تريدها قراءة ثم مؤشر الملف الفعلي.
لذا فإن هذه الوظيفة ستذهب إلى قراءة سلسلة في منطقة
الذاكرة أشار بها str.
لذلك عليك فعلاً تمرير في المخزن المؤقت
حيث سيتم تخزين البيانات.
وهذا هو المؤشر ، لذلك كنت يجب أن تخصص ذاكرة لذلك.
وبعد ذلك سوف تقرأ من الملف المحدد كمعامل
ثالث وهو مؤشر الملف.
ومن ثم فإن النشار يذهب لتوضيح مقدار البيانات المراد قراءتها.
لذلك إذا وضعت nchars مثل 10 ، ستقرأ في 10 أحرف ما لم تصطدم
بخلاصة السطر أولاً.
لذلك إما أن تقرأ a سطر كامل أو سيقرأ عدد الأحرف التي
قمت بها حدد في المعلمة الثانية.
يتم تحديد نهاية السطر بواسطة شرطة مائلة للخلف n أيهما يحدث أولاً.
إذا كان حرف السطر الجديد أحمر ، يتم الاحتفاظ به في السلسلة
وسيتم الاحتفاظ بالفاصل الصفري ملحق بنهاية السلسلة.
لذلك إذا حددت بالفعل المزيد من الأحرف ، سيقرأ ما يصل إلى تغذية
السطر ، وبعد ذلك القفز للخارج ثم يحصل على حرف
الخط الجديد ويضع ملف حرف فارغ في نهايته.
إذا لم يكن هناك خطأ ، فإن fgets هو سيعود المؤشر ،
وهو المعلمة الأولى.
انها ستعيد المؤشر الذي يتم إرجاعه من الوظيفة.
وبعد ذلك ستذهب أيضًا لتعبئة مؤشر str
كمعامل أول.
إذا كان هناك خطأ يتم إرجاع قيمة فارغة.
ثم قراءة نهاية الملف يؤدي إلى إرجاع قيمة null ، وهذا يعني أنك
قرأت كل الجمل الخاصة بك.
لنلق نظرة على مثال.
هنا لدينا ملفنا الرئيسي و نقوم بإنشاء مؤشر الملف الخاص بنا لإنشاء
سلسلة أحرف.
هنا هذا مؤشر لم نفعله حدد أي بيانات لها ، فنحن فقط نقوم بإنشاء
مصفوفة أحرف.
نفتح الملف للقراءة ، القراءة فقط لأنها ص.
قلنا إذا كان لاغًا ، فانتقل.
خلاف ذلك ، نقول فقط fgets ، نقرأ في 60 حرفًا.
أو إذا كان خط التغذية من قبل ذلك ، سيظهر سطر
تغذية ثم سيطبعه و ما هو في أي وقت مضى في العازلة شارع.
هذا هو الأول هو str الشخصية التي تم تمريرها.
ثم نغلق مؤشر الملف ، اضبطه على قيمة خالية وإرجاع الصفر.
لذلك دعونا ، مرة أخرى ، نلقي نظرة على هذا داخل كودنا كتل IDE.
الشيء الوحيد الذي تغير في هذا البرنامج عبارة عن سطور من 14 إلى 17.
نحن نستخدم fgets لقراءة سلسلة لدينا في ، ومن ثم لدينا مخزن مؤقت str.
لذلك نحتاج أيضًا إلى إنشاء ملف
مصفوفة الأحرف هنا وهي str ، ونريد أن يحتوي هذا على 60.
نحن نقرأ في 60.
سنقوم بإضافة سطر تغذية ، لذلك هو سنقرأ في 59 ثم نضيف تغذية سطر
إلى نهايته.
يمكننا القول 61.
ومن ثم سوف تكون الحواف عبارة if ، وستتم قراءتها في كل سلسلة
حتى يتم قراءتها أيضًا يصل إلى 60 حرفًا أو سطرًا جديدًا ، وسوف يقوم بطباعة
هذه السلسلة.
ستلاحظ أن هذا ليس كذلك حلقة while ، لذا فنحن
لا نقرأ حتى نهاية الملف.
نقرأ في نهاية ملف ، نحصل على ملف.
لذلك إذا قمنا ببناء هذا ، فنحن نريد أن نصنعه بالتأكيد لدينا اقتباساتنا بشكل صحيح.
متى تنسخ من PowerPoint عبثت الاقتباسات.
ونريد التأكد لقد أنشأنا المتغير c الخاص بنا ولم يتم استخدامه
وهذا جيد.
لذلك دعونا نمضي قدمًا ونجري هذا.
وترى مرحبا هذا جايسون.
لذا فعليًا اقرأ بالكامل سطر نص من الملف.
يقرأ في السطر الأول.
لذلك سوف تسميها مرة أخرى وتقرأ في السطر الثاني.
إذا قمت بتغيير عدد البايت اقرأ ، لنفترض أننا نريد قراءة
10 فقط ، فسيتم قراءتها في 10 ثم بعد ذلك سيعيد هؤلاء العشرة
بدلاً من قراءة السطر بالكامل.
هنا لدينا فقط مرحبًا هذا أنا.
لذلك سوف تقرأ في العدد من الأحرف المعلمة
الثانية الخاصة بك أو حتى تحصل على سطر تغذية وتخزينها في شارع.
Str هي مجموعة أحرف.
نطبعها من fgets.
Fgets هو أكثر من ذلك بكثير كفاءة في القراءة.
لأننا لا نقرأ شخصية وفي وقت ما ، نقرأ
بمزيد من البيانات.
قراءة شخصية في الوقت ليس بنفس الكفاءة.
حتى الآن نحن نعرف كيف نقرأ بمفردنا الأحرف ، فنحن نعرف
كيف نقرأ في السلاسل حتى يقرؤوا ملفًا جديدًا سطر أو عدد من الأحرف.
ولكن يمكنك أيضًا القراءة باللغة إدخال منسق من ملف.
لذلك لدينا getc ، fgetc ، fgets.
والآن لدينا آخر وظيفة تسمى fscanf.
هذا هو إدخال منسق.
المدخلات المنسقة هي البيانات المحددة بالمثل له محدد أو له
تنسيق محدد مرتبط به.
تأخذ وظيفة fscanf ملفًا من الدفق ثم الشكل.
التنسيق هو تماما مثل printf محددات التنسيق التي تستخدمها.
لذلك إذا كنت تريد أن تقرأ في أعداد صحيحة أو زوجي ، يمكنك تحديد البيانات
التي يتم تقديمها داخل الملف في الزوجي
وسيقرأ ذلك حتى يرى مثل المسح الضوئي تمامًا حتى يرى حرف مسافة بيضاء.
لذا فإن الحجة الأولى في fscanf دالة هي مؤشر إلى كائن
ملف يحدد التدفق.
علينا أن نعرف ماذا ملف نقرأ منه.
الحجة الثانية ل الوظيفة هي التنسيق.
هذه سلسلة c تحتوي على واحد أو أكثر من العناصر التالية.
حرف مسافة بيضاء ، بدون مسافة بيضاء شخصية ومحددات التنسيق.
الاستخدام هو نفسه scanf و the in the printf ، لكن
بدلاً من ذلك من ملف.
حتى داخل الاقتباس المزدوج ، يمكنك ذلك ضع نصًا ، يمكنك كتابة أحرف
بدون مسافات بيضاء ، ولكن محددات التنسيق هي حقًا
كيف ستقرأ في البيانات.
ثم تقوم بتحديد المتغيرات التي تريد قراءتها فيه.
لذا ترجع الدالة عدد عناصر الإدخال
التي تمت مطابقتها وتعيينها بنجاح.
إذن هذا ما يبدو عليه.
ستلاحظ أن الأساسي هو إنشاء مصفوفات مكونة من ثلاثة أحرف ، str1 و str2
و str3 ، فقط عشرة بايت لكل منها.
نقوم بإنشاء عدد صحيح يسمى عام ، وصلنا إلى مؤشر ملف.
أول شيء نقوم به نفتح الملف.
في هذه الحالة ، نحن نفتح الأمر متروك للقراءة والكتابة.
لكننا لن نكتب في الواقع أي شيء عليه ، سنقوم فقط
بعرض ما نقرأه منه.
نتحقق للتأكد من الملف المؤشر لا يساوي فارغًا.
ثم هنا ، نحن في الواقع وضع شيء ما في ملف fputs.
لم نتحدث عن ذلك بعد ، لكن هذا هو كتابة شيء ما.
ركز هنا على fscanf.
سوف fscanf قراءة في البيانات المنسقة.
وماذا ستفعل هل ستقرأ في ثلاث
سلاسل مفصولة بمسافات.
وهكذا ترى النسبة المئوية كمساحة في المائة كمساحة في المائة
مساحة في المائة د.
ثم نقول أين نحن سنقوم بقراءتها في مجموعة
الأحرف الثلاثة ثم لدينا العام ، وعلينا تحديد مشغل
العنوان لعامنا.
ولكن يتم تنسيق البيانات أ بطريقة محددة عندما يتم كتابتها.
وعندما تقرأ في شيء ما بعد التنسيق ، يجب أن تفهم تنسيق
الملف كيف تتم كتابته.
هنا نعلم أن الملف مكتوب بفصل السلاسل بمسافة بيضاء.
هكذا نحن سأقرأه باللغة.
و حتى نتمكن من قراءتها بمكالمة واحدة fscanf.
يمكننا استخدام النموذج الخاص بنا كمحددات كوسيطتنا الثانية ثم
عدد المتغيرات المتغير لكل منها منفصلة عن كل فاصلة لتحديد البيانات التي
نريد قراءتها فيها.
ثم نقوم بطباعة ذلك data ، السلاسل الثلاثة في العام ثم
نغلق الملف مرة أخرى.
وهذه هي الطرق الثلاث يمكنك قراءة البيانات من ملف.
يمكنك إما القراءة بالأحرف ، يمكنك القراءة في سلاسل أو يمكنك قراءة
البيانات المنسقة.
وستلاحظ الطريقة المنسقة من القيام بذلك يشبه إلى حد بعيد scanf.
تستخدم محددات التنسيق ، المتغيرات للقراءة.
سنواجه التحدي قراءة البيانات التي سوف تجعلك
أكثر دراية بهذا.
إنها أساسية جدًا.
ستفعل فتح الخاص بك المكالمات ، ستستخدم مؤشرات
الملفات وستذهب لاستخدام هذه الوظائف الثلاث.
شكرًا لك.