أهلا ومرحبا بكم مرة أخرى.
نحن في قسم جديد.
يدور هذا القسم حول إدخال الملف وإخراج الكتابة والقراءة من الملفات.
سنركز على الملفات النصية ، لكننا سنتحدث عن الملفات الثنائية أيضًا.
في هذه المحاضرة ، أريد فقط أن أقدم نظرة عامة ، وأخبرك ما هو الملف ، وأخبرك كيف أنه
مفيد لتخزين البيانات الدائمة.
حتى هذه النقطة ، كل البيانات التي يصل إليها برنامجنا هي عبر الذاكرة.
نحن على دراية بمفهوم المتغيرات ، الهياكل ، أيا كان.
امسح جميع البيانات التي يستخدمها برنامجك في الذاكرة.
والسبب في تخزينها في الذاكرة هو أن الذكريات سريعة حقًا ويمكنك الوصول إليها بسرعة
لإجراء العمليات الحسابية.
أنت تقوم بالجلب ، وتنفيذ الدورة ، وكل تلك الأشياء.
لذا فإن النطاق ، ولكنه أيضًا محدود لأن نطاق وتنوع تطبيقاتنا ، إذا كان يستخدم
الذاكرة فقط ، فسيكون محدودًا إلى حد ما.
نحن نعلم أن الذاكرة تختفي عندما يختفي البرنامج ، وهذا قد يكون مقيدًا للغاية.
تتطلب جميع تطبيقات الأعمال الجادة بيانات أكثر مما تتناسب مع الذاكرة الرئيسية.
الذاكرة الرئيسية صغيرة جدًا أيضًا.
وفي الوقت الحاضر يمكنك الحصول على قدر كبير من الذاكرة ، من 1630 إلى 32 جيجا بايت.
ولكن في الماضي ، وخاصة على الأجهزة المضمنة ، ليس لديك الكثير من ذاكرة الوصول العشوائي ونتيجة لذلك تكون تطبيقاتك
محدودة للغاية بسبب المساحة والحجم.
أنت تريد حقًا فقط تخزين المتغيرات وأشياء من هذا القبيل في الذاكرة الرئيسية.
ذلك أيضًا لأن الذاكرة الرئيسية تختفي عند اختفاء البرنامج.
لا يمكن أن يكون لديك أي بيانات مخزنة بشكل دائم عبر عمليات إعادة التشغيل.
لذلك كل هذا يتوقف على القدرة على معالجة البيانات الدائمة والمخزنة على جهاز خارجي مثل محرك
الأقراص الثابتة لهذه البرامج الكبيرة.
لذلك تريد أن تتمتع بهذه القدرة على التخزين على القرص الصلب.
إنه أبطأ قليلاً ، لكن يمكنك تخزين الكثير من البيانات هناك وتحتاج البرامج الكبيرة إلى تخزين الكثير
من البيانات.
يوفر C العديد من الوظائف في معيار ملف الرأس للكتابة والقراءة من الأجهزة الخارجية.
لا يتعين عليك كتابة التعليمات البرمجية الخاصة بك لقراءة الملفات وكتابتها ، ولكن يمكنك رؤية
الميزة التي توفرها التطبيقات التي لديها القدرة على تخزين البيانات لفترة أطول من الوقت.
الكثير من المزايا.
عادةً ما يكون الجهاز الخارجي الذي قد تستخدمه لتخزين البيانات واستردادها هو محرك الأقراص الثابتة ومحرك
الأقراص.
ومع ذلك ، فإن وظائف ملف الرأس التي سنتحدث عنها يمكنك استخدامها على أي جهاز تخزين خارجي.
لذلك يمكنك استخدامه على محرك أقراص USB ، يمكنك استخدامه على أي جهاز خارجي يخزن البيانات ومحرك أقراص SSD
لأي شيء مع جميع الأمثلة.
حتى الآن ، يتم فقد أي بيانات يدخلها المستخدم.
بمجرد انتهاء البرنامج ، يشار إلى هذا على أنه ذاكرة متقلبة.
عندما تسمع هذا المصطلح vol time memory ، فهذا يعني أن الذاكرة ليست ثابتة أو أن البيانات
ليست ثابتة.
يختفي عند انتهاء البرنامج أو في حالة إعادة تشغيل الجهاز.
لذلك إذا أراد المستخدم تشغيل البرنامج بنفس البيانات ، فعليه إدخاله مرة أخرى في كل مرة حتى
يتم استعادته.
إنه غير مريح للغاية.
يحد من البرمجة.
ومرة أخرى ، هذه ذاكرة متقلبة.
عندما تقوم بتخزين الأشياء في الملفات وتخزينها على القرص الصلب ، فهذا يعد تخزينًا دائمًا.
ما زال هناك.
حتى عند إعادة تشغيل الجهاز أو عندما لا يكون البرنامج قيد التشغيل.
يشار إليها باسم الذاكرة غير المتطايرة لأنها تبقى حول الملف ، ويمكنها تخزين البيانات غير المتطايرة وعادة ما يتم تخزينها على القرص أو
في الوقت الحاضر على محرك أقراص الحالة الصلبة ومحرك أقراص الحالة الصلبة.
إنه قسم تخزين مسمى ومعيار stud IO هو ملف يحتوي على استخدام المعلومات من أجل التمكن من القراءة
والكتابة إلى تلك الملفات.
لكننا سنستخدم مفهوم كتابة وقراءة البيانات من ملف للتخزين الدائم
، وستلاحظ كيف تصبح تطبيقاتك أكثر فائدة ، وأكثر قوة ، وأكثر قابلية للتوسع ، لأننا الآن
لدينا القدرة لتخزين كميات كبيرة من البيانات ولا داعي للقلق بشأن اختفاء البيانات عند
انتهاء البرنامج أو إعادة تشغيل الكمبيوتر.
لذلك سيكون من المفيد جدًا استخدام الملفات.
يتم تخزين ملف داخل نظام التشغيل Linux أو نظام التشغيل Windows بطريقة معينة.
لكن فيما يتعلق بلغة C ، لغة البرمجة ، يمكن قراءة سلسلة من البايت في كل بايت
على حدة.
هذا يتوافق مع بنية الملف في Unix ، لكن ليس بالضرورة.
لا يحدث ذلك إلا عندما تقرأ الملفات النصية والنوافذ ، لأنه قد يكون
لديك أحرف إضافية يجب أن تقلق بشأن الحجم ، لكنها مجرد سلسلة من البايتات.
لذلك إذا كان لديك ملف نصي ولديه عدد أكبر من البايت ، فلا يزال بإمكانك قراءة تلك البايتات.
عليك فقط أن تفهم ما تمثله تلك البايتات.
إذن هذا هو شكل الملف وكيف سنقرأه ونكتبه باستخدام لغة البرمجة
سي.
إنها مجرد سلسلة من البايت مع إزاحات مختلفة.
ستكون بداية الملف صفرًا ، وبعد ذلك يمكنك دائمًا العثور على مواضع مختلفة
في الملف.
يمكن أن يكون أربعة ، يمكن أن يكون أربعة في عشرة اثنين ، ويمكن أن يكون 100 بايت فيه.
وبعد ذلك يكون لديك نهاية الملف ونهاية الملف عادة بعلامة خاصة تسمى
EOF وملف.
إذن للملف بداية ونهاية وموضع حالي.
يتم تحديد الموضع الحالي بالعديد من البايتات في البداية.
الموقف الحالي هو المكان الذي سيتم فيه اتخاذ أي إجراء ملف.
ستكتب أو ستقرأ في هذا الموضع.
وسنتحدث أيضًا عن بعض الوظائف حيث يمكنك التنقل لتحريك الموضع الحالي إلى أي مكان
تريده في ملف.
حتى في النهاية ، إذا كنت تريد أن تقرأ في النهاية أو حتى النهاية.
هناك نوعان من الملفات.
هناك ملفات نصية وملفات ثنائية.
الملف النصي عبارة عن بيانات مكتوبة على هيئة سلسلة من الأحرف منظمة في شكل أسطر.
ينتهي كل سطر بسطر جديد ، ويمكن أن تتنوع البيانات النصية من نظام إلى آخر اعتمادًا على كيفية
تفسير الأحرف.
على سبيل المثال ، في نظام التشغيل Windows في DOS ، يحتوي كل سطر على حرف إرجاع وخط تغذية ، لذا شرطة مائلة عكسية R وشرطة
مائلة للخلف N.
ولذا عندما تقرأ البيانات أو تكتب البيانات ، عليك أن تفهم ذلك لأن التنسيق مختلف
قليلاً.
لكن في نظام Linux ليس لديك شرطة مائلة للخلف.
R ولذا عليك أن تفهم كيفية كتابة البيانات النصية ، على الرغم من أنها منظمة حسب الأسطر وسلسلة من البايتات
، تتم كتابة البيانات الثنائية على شكل سلسلة من البايتات تمامًا كما تظهر في الذاكرة.
لذا فإن أمثلة الملفات التي تحتوي على بيانات ثنائية هي البيانات.
ملفاتنا مثل بيانات الصور أو ملفات ترميز الموسيقى الثنائية غير قابلة للقراءة.
إذا كنت ستحاول طرحها في محرر نصوص لأنها مجرد بايت ، فسنركز على الملفات النصية
في هذا القسم ، ولكن يمكنك كتابة أي بيانات تريدها إلى ملف.
يمكنك كتابتها على شكل سلسلة من البايتات وكيف تظهر في الذاكرة ، أو يمكنك كتابتها كنص.
ولكن بمجرد كتابة الملف بالفعل ، سيتألف فقط من سلسلة من البايتات
، حتى لو تم تمثيله كنص.
يمكنك عرض الملفات النصية في محرر ، مما يجعلها أكثر قابلية للقراءة.
عليك أن تفهم أن تنسيق الملف من أجل قراءته وهذا ما أشرت إليه
إذا كنت تعمل على DOS Windows أو Linux حيث قد يحتوي Windows على أحرف إضافية عند كتابة البيانات.
لذا فإن تسلسل 12 بايت في ملف ثنائي يمكن أن يكون 12 حرفًا ، ويمكن أن يكون 12 حرفًا بثمانية في
ثمانية بتات أو 12 عددًا صحيحًا بدون إشارة.
تعتبر الحرائق الثنائية صعبة بشكل خاص لأنها تخزن Watson كذاكرة واضحة.
لذلك في الوضع الثنائي ، يمكن الوصول إلى كل جزء من الملف.
ولكن من أجل قراءة شيء ما من ملف ، عليك أن تفهم ما يوجد هناك بقدر ما يتعلق بالبيانات وكيفية تخزينها.
وقد يعتمد على النظام الذي تعمل عليه.
وسيعتمد أيضًا على ما إذا كان نصًا أم ثنائيًا.
تيارات.
يتم فتح برامج C تلقائيًا على ثلاثة ملفات نيابة عنك.
يمكن أن يمثل الدفق ملفًا ، لكن الدفق هو مصطلح عام يمكن أن يمثل أي نوع من المدخلات.
لذلك يمكن أن تمثل لوحة المفاتيح ، ويمكن أن تمثل وحدة التحكم ، ويمكن أن تمثل ملفًا ، ويمكن
أن تمثل مقبسًا.
إذا كنت معتادًا على تدفقات الشبكات ، فهي مصطلح أكثر عمومية ، وهناك ثلاثة تدفقات
يتم فتحها تلقائيًا لك بلغة البرمجة C.
أحدهما هو الإدخال القياسي ، وهذا هو جهاز الإدخال العادي لنظامك.
عادةً ما تكون لوحة المفاتيح افتراضيًا.
كنا نستخدم الإدخال القياسي عندما نقوم بفحص F ، ولكن يمكنك بالفعل استخدام المسح للقراءة من
الملفات.
إذا قمت بتغيير دفق الإدخال ، فربما تقوم بتغيير دفق الإدخال إلى إخراج قياسي لملف يتم
عرضه عادةً على الشاشة ، عادةً عبر وحدة التحكم.
يوجد خطأ قياسي أيضًا على الشاشة ، ولكن عليك عادةً إعادة توجيهه لرؤيته باستخدام
علامة العطف الثلاثة أو شيء من هذا القبيل.
لكن هذه هي النواتج الثلاثة التي ذكرتها.
الإدخال القياسي هو الملف الذي يقرأه الجيتار والمسح الضوئي F يتم استخدام الإخراج القياسي من خلال الإخراج لنا
وطباعة F كنا نستخدم بشكل أساسي printf.
يمكنك أيضًا إعادة توجيه الملفات الموجودة على النظام ليتم التعرف عليها على أنها إخراج الإدخال القياسي.
هذا هو إعادة التوجيه.
هذا هو مفهوم نظام التشغيل حيث يمكنك إعادة توجيه البيانات ، أو إرسال الإخراج إلى ملف على سبيل المثال ، أو إرسال
المدخلات ، والحصول على مدخلات من ملف بدلاً من المعيار.
هذا هو المكان الذي يمكنك فيه استخدام أقل من أو أكبر من الرموز.
الغرض من ناتج الخطأ القياسي هو توفير مكان مميز منطقيًا لإرسال رسائل الخطأ.
لذلك فهو نوع منفصل على الرغم من عرضه على الشاشة.
للوصول إلى ذلك ، يجب أن يكون لديك أمر خاص.
الدفق هو تمثيل تجريدي لأي مصدر خارجي أو وجهة للبيانات.
هذا هو السبب في أنه أكثر عمومية من ملف مثلاً.
لوحة المفاتيح.
سطر الأوامر على ملفات العرض على القرص.
هذه كلها أمثلة على كيفية عملك مع التدفقات.
ستكون التدفقات أكثر أهمية عندما تبدأ في دراسة C ++.
توفر مكتبة C وظائف للقراءة والكتابة من أو إلى تدفقات البيانات ، بحيث يمكنك استخدام نفس وظائف
إخراج الإدخال لقراءة وكتابة أي جهاز خارجي تم تعيينه إلى دفق.
لهذا السبب ذكرت أنه يمكنك استخدام المسح الضوئي F للقراءة من لوحة المفاتيح.
يمكنك أيضًا استخدام Scan F للقراءة من الملفات.
كل هذا يتوقف على ما هو المدخل ، حيث يشير الدفق.
وبالتالي فإن الوظائف مفيدة جدًا جدًا ومرنة جدًا للقيام بذلك.
ولذا فهذه مجرد نظرة عامة عالية المستوى لما هو الملف ولماذا نستخدمه ، وكيف أنه بيانات
ثابتة ، إنه ذاكرة غير متطايرة.
يظل موجودًا ، وسنستخدمه وسنستخدم ملف رأس IO القياسي لقراءته والكتابة
إليه عندما نحتاج إلى تخزين البيانات لبرنامجنا وينتهي الأمر بأن تكون برامجنا أكثر
قوة ، أكثر قابلية للاستخدام وأكثر مرونة.
لذا في محاضرتنا التالية ، سنتحدث عن التنفيذ الفعلي لهذا باستخدام الوظائف الموجودة في
رأس IO القياسي.
شكرًا لك.