Monday, 27 November 2017

خيارات c - قراءة ستدين - ثنائي


إم محاولة لبناء خط أنابيب تعليمات محاكاة و إم وجود الكثير من المتاعب التي بدأت. ما أحتاج إلى القيام به هو قراءة ثنائي من ستدين، ومن ثم تخزينه في الذاكرة بطريقة أو بأخرى بينما أنا التلاعب البيانات. أنا بحاجة إلى قراءة في قطع من بالضبط 32 بت واحد تلو الآخر. كيف يمكنني أن أقرأ في قطع من 32 بت بالضبط في المرة الثانية، كيف يمكنني تخزينه للتلاعب في وقت لاحق هيريس ما حصلت عليه حتى الآن، ولكن فحص قطع الثنائية قرأت أبعد من ذلك، فإنه لا يبدو الحق، وأنا لا أعتقد إم القراءة بالضبط 32 بت مثل أحتاج. كيف يمكنني أن أقرأ في 32 بت في وقت واحد (هم جميعا 10، لا خطوط جديدة وما إلى ذلك)، وما يمكنني تخزينه في، هو شار حسنا تحرير: أنا قادرة على قراءة ثنائي في ولكن أيا من الإجابات تنتج البتات في النظام الصحيح أنهم جميعا مانغلد يصل، وأظن إنديانيس ومشاكل القراءة والتحرك 8 بت حول (1 شار) في وقت يحتاج هذا للعمل على ويندوز و C. طلب ​​أكتوبر 21 09 في 6:04 في الواقع يمكنك فقط قراءة إما بايت بايت أو 4 بايت لكل مكالمة، لأنك تحتاج إلى تخزين البيانات إلى المخزن المؤقت. مرة واحدة حصلت مخازن العازلة مهما طول البيانات، هل يمكن معالجة العازلة 4 بايت من 4 بايت. منذ ستدينستدوت هو على الرغم من المتدفقة، لذلك بايت بايت هو طبيعي جدا. على عكس المقبس إو، عادة يمكنك تجاهل بايت-- ترتيب على ستدين الخ، بالطبع إذا كنت في حاجة. تفعل بايت ترتيب تحويل نفسك. بسبب عدم وجود خط جديد (على سبيل المثال 39n39)، استخدام القراءة أو فرياد سيكون أفضل. يرجى التفكير أنه تيار. نداش اختبار أكتوبر 21 09 في 06:45 أي من هذه الحلول قراءة في ثنائي في الترتيب الصحيح مساعدة من فضلك، يقترب الموعد النهائي. نداش rlb. usa 23 أكتوبر 09 في 11:03 منصات x86 هي انديان قليلا، لا يمكن أن نتوقع أن يكون في ج بت في النظام ريجث. نداش نتد 23 أكتوبر 09 في 13:09 1 نعم I39ve كثيرا ما تساءل عن هذا. what39s السؤال مرة أخرى نداش الحساب الميت يناير 26 10 في 16:59 كيفية قراءة في الثنائيات الثنائية ومن ثم تقسيم تلك بت إلى (ربما غريبة الحجم) قطع، بيتماسكس على سبيل المثال. نداش rlb. usa 26 يناير 10 في 19:08 ما تحتاجه هو فريوبين (). من مانباج: إذا كان اسم الملف عبارة عن مؤشر فارغ، فستحاول الدالة فريوبين () تغيير نمط البث إلى الوضع المحدد بواسطة الوضع، كما لو كان اسم الملف المرتبط حاليا بالتيار قد استخدم. في هذه الحالة، لا يجب إغلاق واصف الملف المقترن بتيار إذا نجحت الدعوة إلى فريوبين (). يتم تحديد التنفيذ الذي يسمح بتغييرات الوضع (إن وجدت)، وتحت أي ظروف. في الأساس، فإن أفضل ما يمكن القيام به حقا هو هذا: هذا سوف يعيد فتح ستدين ليكون نفس المدخلات، ولكن في وضع ثنائي. في الوضع العادي، والقراءة من ستدين على ويندوز تحويل رن (ويندوز نيولين) إلى حرف واحد أسي 10. باستخدام وضع رب تعطيل هذا التحويل بحيث يمكنك قراءة بشكل صحيح في البيانات الثنائية. فريوبين () إرجاع فيلهاندل، ولكن قيمتها السابقة (قبل وضعه في وضع ثنائي)، لذلك لا تستخدمه لأي شيء. بعد ذلك، استخدم فرياد () كما ذكر. أما بالنسبة لمخاوفك، ومع ذلك، قد لا تكون القراءة في 32 بت ولكن إذا كنت تستخدم فرياد () سوف تكون القراءة في 4 شار ق (وهو أفضل ما يمكن القيام به في C - ويضمن شار أن تكون على الأقل 8 بت ولكن بعض منصات تاريخية وجزءا لا يتجزأ من 16 بت شار s (بعض حتى يكون 18 أو أسوأ)). إذا كنت تستخدم فغس () أنك لن تقرأ في 4 بايت. سوف تقرأ في 3 على الأقل (اعتمادا على ما إذا كان أي منهم خطوط جديدة)، و 4 بايت سيكون 0 لأن سلاسل C هي نول إنهاء و فغس () نول ينهي ما يقرأ (مثل وظيفة جيدة). ومن الواضح أن هذا ليس ما تريد، لذلك يجب عليك استخدام فرياد (). أجاب 21 أكتوبر 09 في 6:44 فجتس () كل خطأ هنا. تهدف إلى نص أسي يمكن قراءتها الإنسان إنهاءها من قبل نهاية خط الشخصيات، وليس البيانات الثنائية، ولن تحصل على ما تحتاجه. لقد فعلت مؤخرا بالضبط ما تريد باستخدام مكالمة القراءة (). ما لم يكن البرنامج قد أغلقت ستدين صراحة، بالنسبة للوسيطة الأولى (واصف الملف)، يمكنك استخدام قيمة ثابتة من 0 ستدين. أو، إذا كنت على نظام بوسيكس (لينكس، ماك أوس X، أو بعض البديل الحديثة الأخرى من أونيكس)، يمكنك استخدام ستدينفيلينو. أجاب 21 أكتوبر 09 في 06: 20 المدخلات والمخرجات (إو): stdio. h 160 هذا الفصل سوف ننظر في العديد من أشكال إو. لقد ذكرنا بإيجاز بعض الأشكال قبل أن ننظر إليها بمزيد من التفصيل هنا. سوف تحتاج البرامج الخاصة بك إلى تضمين ملف رأس إو القياسية حتى تفعل: في كثير من الأحيان أنه من المفيد الإبلاغ عن أخطاء في برنامج C. مكتبة بيرور القياسية () هو وسيلة سهلة الاستخدام وظيفة مريحة. يتم استخدامه جنبا إلى جنب مع إرنو وكثيرا ما تواجه خطأ قد ترغب في إنهاء البرنامج في وقت مبكر. في حين ليست جزءا صارما من مكتبة stdio. h نقدم مفهوم إرنو وخروج وظيفة () هنا. وسوف نلتقي بهذه المفاهيم في أجزاء أخرى من المكتبة القياسية أيضا. يتم إنتاج الدالة بيرور () من قبل: بيرود (كونست تشار مساج) بيرور () تنتج رسالة (على مخرجات الخطأ القياسية - انظر القسم 17.2.1)، تصف آخر خطأ تمت مشاهدته، ارجع إلى إرنو (انظر أدناه) أثناء دعوة إلى نظام أو وظيفة المكتبة. تتم طباعة رسالة سلسلة حجة أولا، ثم نقرا وفراغا، ثم الرسالة وخط جديد. إذا كانت الرسالة مؤشر نول أو تشير إلى سلسلة خالية، فلن يتم طباعة القولون. إرنو هو متغير النظام الخاص الذي يتم تعيينه إذا كان استدعاء النظام لا يمكن تنفيذ مهمتها المحددة. يتم تعريفه في تضمين lterrno. hgt. لاستخدام إرنو في برنامج C يجب أن يتم الإعلان عن طريق: يمكن إعادة تعيين يدويا ضمن برنامج C (على الرغم من أن هذا هو ممارسة غير شائعة) وإلا فإنه يحتفظ ببساطة قيمته الأخيرة عاد من قبل استدعاء النظام أو وظيفة المكتبة. يتم إكمال مخرج الوظيفة () في النموذج الأولي لتستدليبغت بواسطة: فواد إكسيت (إنت إنتغراتيون) خروج ينهي تنفيذ البرنامج ويعود قيمة حالة الخروج إلى نظام التشغيل. يتم استخدام قيمة الحالة للإشارة إلى ما إذا كان البرنامج قد أنهى بشكل صحيح: موجود مع قيمة إكسيتسشيس على إنهاء ناجح موجود مع قيمة إكسيتافيليور على إنهاء غير ناجحة. عند مواجهة خطأ قد استدعاء مرارا خروج (إكسيتافيليور) لإنهاء برنامج غير صحيح. تيارات هي وسيلة المحمولة للقراءة والكتابة البيانات. أنها توفر وسيلة مرنة وفعالة من إو. A ستريم عبارة عن ملف أو جهاز فعلي (مثل الطابعة أو جهاز العرض) يتم التلاعب به باستخدام مؤشر إلى ساحة المشاركات. هناك بنية بيانات داخلية C، فيل. الذي يمثل جميع تيارات ويتم تعريفه في stdio. h. نحن بحاجة ببساطة للإشارة إلى بنية فيل في برامج C عند تنفيذ إو مع تيارات. نحن بحاجة فقط إلى إعلان متغير أو مؤشر من هذا النوع في برامجنا. نحن لسنا بحاجة إلى معرفة المزيد من التفاصيل حول هذا التعريف. يجب علينا فتح تيار قبل القيام بأي إو، ومن ثم إغلاقه. ستريم إو هو بوفيرد. وهذا يعني أن يتم قراءة جزء ثابت من أو مكتوبة إلى ملف عبر بعض منطقة التخزين المؤقتة (المخزن المؤقت). ويتضح ذلك في الشكل 17-1. لاحظ مؤشر الملف يشير فعلا إلى هذا المخزن مؤقت. شكل تيار إو نموذج هذا يؤدي إلى إو كفاءة ولكن حذار. لا تظهر البيانات المكتوبة إلى المخزن المؤقت في ملف (أو جهاز) حتى يتم مسح المخزن المؤقت أو كتابة. (n هل هذا). أي خروج غير طبيعي من التعليمات البرمجية يمكن أن يسبب مشاكل. 160 أونيكس يحدد 3 تيارات محددة مسبقا (في stdio. h): ستدين، ستدوت، ستدير أنها جميعا استخدام النص طريقة إو. ستدين و ستدوت يمكن استخدامها مع الملفات والبرامج والأجهزة إو مثل لوحة المفاتيح، وحدة التحكم، وما إلى ذلك. ستدير يذهب دائما إلى وحدة التحكم أو الشاشة. وحدة التحكم هو الافتراضي ل ستدوت وستدير. لوحة المفاتيح هو الافتراضي ل ستدين. يتم فتح تيار محدد مسبقا تلقائيا. هذه الطريقة التي نقوم بتجاوز الافتراضي الافتراضي أونيكس إو المعرفة مسبقا. هذا ليس جزءا من C ولكن تعتمد على نظام التشغيل. سنفعل إعادة التوجيه من سطر الأوامر. غ - إعادة توجيه ستدوت إلى ملف. حتى إذا كان لدينا برنامج، خارج. التي تطبع عادة إلى الشاشة ثم سوف ترسل الإخراج إلى ملف، file1. لوت - ريديريكت ستدين من ملف إلى برنامج. حتى إذا كنا نتوقع إدخال من لوحة المفاتيح لبرنامج، في يمكننا أن نقرأ مدخلات مماثلة من ملف - الأنابيب. يضع ستدوت من برنامج واحد إلى ستدين من آخر على سبيل المثال. المرسل المرسل (عادة إلى وحدة التحكم) من برنامج مباشر إلى الطابعة: هناك اثنين من الدالة التي توفر مرافق إو الأساسية. وربما الأكثر شيوعا هي: جيتشار () و بوتشار (). يتم تعريفها واستخدامها على النحو التالي: إنت جيتشار (باطل) - يقرأ شار من ستدين إنت بوتشار (شار تش) - يكتب شار إلى ستدوت. يعود الحرف المكتوب. إنت جيتس (فيل ستريم)، إنت بوتك (شار تش، فيل ستريم) لقد شاهدنا أمثلة لكيفية استخدام C إو المنسق بالفعل. دعونا ننظر إلى هذا بمزيد من التفصيل. 160 يتم تعريف الدالة كما يلي: إنت برينتف (تنسيق شار، قائمة أرج.) - يطبع ستدوت قائمة الوسيطات وفقا لسلسلة تنسيق محددة. لعرض عدد الأحرف المطبوعة. تحتوي سلسلة التنسيق على نوعين من الكائن: أحرف عادية - يتم نسخها إلى الإخراج. مواصفات التحويل - المشار إليها والمدرجة في الجدول 17.1. الجدول: برينتفسكانف تنسيق الأحرف ملف إو و بيناري فيل إو بواسطة أليكس ألين في هذا البرنامج التعليمي، سوف تعلم كيفية القيام ملف إو والنص والثنائي، في C، وذلك باستخدام فوبين. فوريت. و فرياد. فبرينتف. فسكانف. فجيتك و فبوتك. للحصول على ملف C إو تحتاج إلى استخدام مؤشر فيل، والتي سوف تسمح للبرنامج بتتبع الملف الذي يتم الوصول إليه. (يمكنك التفكير في ذلك كعنوان الذاكرة للملف أو موقع الملف). لفتح ملف تحتاج إلى استخدام الدالة فوبين التي ترجع مؤشر فيل. بمجرد فتح ملف، يمكنك استخدام مؤشر فيل للسماح للمترجم بإجراء وظائف الإدخال والإخراج على الملف. في اسم الملف، إذا كنت تستخدم سلسلة حرفية كما الوسيطة، تحتاج إلى تذكر لاستخدام مائل عكسية مزدوجة بدلا من شرطة مائلة واحدة كما كنت خطر خلاف ذلك حرف الهروب مثل t. يؤدي استخدام الرموش العكسية المزدوجة إلى الخروج من المفتاح، لذا تعمل السلسلة كما هو متوقع. المستخدمين بطبيعة الحال، لا تحتاج إلى القيام بذلك هو فقط الطريقة التي يتم التعامل معها سلاسل نقلت في C و C. وسائط فوبين وسائط المسموح بها ل فوبين هي كما يلي: لاحظ أنه من الممكن لفوبين أن تفشل حتى لو كان البرنامج الخاص بك هو تماما تصحيح: قد تحاول فتح ملف محدد من قبل المستخدم، وقد لا يكون هذا الملف موجودا (أو قد يكون محمي من الكتابة). في تلك الحالات، سوف فوبين العودة 0، مؤشر نول. هيريس مثال بسيط على استخدام فوبين: هذا الرمز سيتم فتح test. txt للقراءة في وضع النص. لفتح ملف في وضع ثنائي يجب إضافة أب إلى نهاية سلسلة الوضع على سبيل المثال، رب (لأوضاع القراءة والكتابة، يمكنك إضافة b إما بعد علامة الجمع - رب - أو قبل - رب) عندما كنت فعلت العمل مع ملف، يجب إغلاقه باستخدام دالة فكلوس إرجاع صفر إذا تم إغلاق الملف بنجاح. مثال على فكلوس هو القراءة والكتابة مع فبرينتف و فسكانف فبوتك و فجيتك للعمل مع إدخال النص والإخراج، يمكنك استخدام فبرينتف و فسكانف، وكلاهما مشابه لأصدقائهم برينتف و سكانف إلا أنه يجب تمرير مؤشر فيل كما الوسيطة الأولى. على سبيل المثال: من الممكن أيضا قراءة (أو كتابة) حرف واحد في وقت واحد - وهذا يمكن أن يكون مفيدا إذا كنت ترغب في إجراء حرف من قبل حرف الإدخال (على سبيل المثال، إذا كنت بحاجة إلى تتبع كل قطعة من علامات الترقيم في ملف سيكون من المنطقي أن تقرأ في حرف واحد من قراءة في سلسلة في وقت واحد.) وظيفة فجيتك، الذي يأخذ مؤشر الملف، ويعيد إنت، سوف تمكنك من قراءة حرف واحد من فيل: لاحظ أن فجيك ترجع إنت. ما يعنيه هذا في الواقع هو أنه عندما يقرأ حرفا طبيعيا في الملف، فإنه سيعود قيمة مناسبة للتخزين في شار غير موقعة (في الأساس، رقم في النطاق من 0 إلى 255). من ناحية أخرى، عندما كنت في نهاية الملف، كنت غير قادر على الحصول على قيمة الحرف - في هذه الحالة، سوف فجيتك إوف إوف، وهو ثابت يشير إلى أنك قد وصلت إلى نهاية الملف. لرؤية مثال كامل باستخدام فغيتك في الممارسة العملية، نلقي نظرة على المثال هنا. وظيفة فبوتك يسمح لك لكتابة حرف في وقت واحد - قد تجد هذا مفيدا إذا كنت ترغب في نسخ حرف ملف حسب الحرف. يبدو هذا: لاحظ أن الوسيطة الأولى يجب أن تكون في نطاق شار غير موقعة بحيث يكون حرفا صالحا. الوسيطة الثانية هي الملف المطلوب الكتابة إليه. على النجاح، سوف فبوتك إرجاع قيمة ج، وعلى الفشل، فإنه سيعود إوف. ملف ثنائي إو - فرياد و فوريت لملف ثنائي إو استخدام فرياد و فوريت. الإعلانات لكل منها متشابهة: كل من هذه الوظائف التعامل مع كتل من الذكريات - عادة المصفوفات. لأنها تقبل المؤشرات، يمكنك أيضا استخدام هذه الوظائف مع هياكل البيانات الأخرى يمكنك حتى كتابة ستروكتس إلى ملف أو بنية قراءة في الذاكرة. دعونا ننظر في وظيفة واحدة لنرى كيف يعمل التدوين. فريد يأخذ أربع حجج. لا يكون الخلط من خلال إعلان الفراغ بت الفراغ يعني أنه هو مؤشر التي يمكن استخدامها لأي متغير نوع. الوسيطة الأولى هي اسم المصفوفة أو عنوان البنية التي تريد الكتابة إلى الملف. الوسيطة الثانية هي حجم كل عنصر من المصفوفة في بايت. على سبيل المثال، إذا كان لديك مجموعة من الأحرف، فأنت تريد قراءتها في قطع بايت واحدة، لذلك سيزوفليمنتس هو واحد. يمكنك استخدام عامل التشغيل سيزوف للحصول على حجم أنواع البيانات المختلفة على سبيل المثال، إذا كان لديك متغير إنت x يمكنك الحصول على حجم x مع سيزوف (x). يعمل هذا الاستخدام حتى بالنسبة للهيكل أو المصفوفات. مثلا إذا كان لديك متغير من نوع بنية مع اسم بناء، يمكنك استخدام سيزوف (بناء) لمعرفة مقدار الذاكرة التي يستغرقها. الوسيطة الثالثة هي ببساطة كم عدد العناصر التي تريد قراءتها أو كتابتها على سبيل المثال، إذا قمت بتمرير صفيف عنصر 100، تريد قراءة ما لا يزيد عن 100 عنصر، بحيث تمر في 100. الوسيطة الأخيرة هي ببساطة مؤشر الملف ويف تم استخدام. عند استخدام فرياد، بعد أن يتم تمرير صفيف، سوف يقرأ الفريد من الملف حتى أنه قد شغل المصفوفة، وسيعود عدد العناصر التي تتم قراءتها بالفعل. إذا كان الملف، على سبيل المثال، هو 30 بايت فقط، ولكن حاولت قراءة 100 بايت، فإنه سيعود أنه يقرأ 30 بايت. للتحقق من الوصول إلى نهاية الملف، استخدم الدالة فيوف، التي تقبل مؤشر فيل و ترجع ترو إذا تم الوصول إلى نهاية الملف. فوريت هو مماثل في الاستخدام، إلا بدلا من القراءة في الذاكرة التي تكتبها من الذاكرة إلى file. C - الإدخال أمبير الإخراج عندما نقول الإدخال. فهذا يعني تغذية بعض البيانات في برنامج. يمكن إعطاء مدخلات في شكل ملف أو من سطر الأوامر. C البرمجة يوفر مجموعة من الوظائف المضمنة لقراءة المدخلات معين وإطعامه للبرنامج وفقا للشرط. عندما نقول الإخراج. فهذا يعني عرض بعض البيانات على الشاشة أو الطابعة أو في أي ملف. C البرمجة يوفر مجموعة من الوظائف المضمنة لإخراج البيانات على شاشة الكمبيوتر وكذلك لحفظه في النص أو الملفات الثنائية. وتعالج برمجة الملفات القياسية C جميع الأجهزة كملفات. لذلك يتم التعامل مع الأجهزة مثل العرض بنفس الطريقة التي الملفات ويتم فتح الملفات الثلاثة التالية تلقائيا عند تنفيذ برنامج لتوفير الوصول إلى لوحة المفاتيح والشاشة. مؤشرات الملف هي وسيلة للوصول إلى الملف للقراءة والكتابة الغرض. يشرح هذا القسم كيفية قراءة القيم من الشاشة وكيفية طباعة النتيجة على الشاشة. الدالة جيتشار () و بوتشار () الدالات تقوم الدالة إنت جيتشار (الفراغ) بقراءة الحرف التالي المتاح من الشاشة وإرجاعه كعدد صحيح. هذه الوظيفة يقرأ حرف واحد فقط في وقت واحد. يمكنك استخدام هذه الطريقة في حلقة في حالة كنت ترغب في قراءة أكثر من حرف واحد من الشاشة. الدالة إنتشار (إنت c) إنت يضع الحرف مرت على الشاشة وإرجاع نفس الحرف. هذه الوظيفة يضع حرف واحد فقط في وقت واحد. يمكنك استخدام هذه الطريقة في الحلقة في حالة رغبتك في عرض أكثر من حرف واحد على الشاشة. تحقق من المثال التالي ناقص عندما يتم تجميع التعليمات البرمجية أعلاه وتنفيذها، ينتظر لك لإدخال بعض النص. عند إدخال نص واضغط على إنتر، ثم يبدأ البرنامج ويقرأ فقط حرف واحد ويعرضه على النحو التالي ناقص يحصل () ويضع () وظائف وظيفة يحصل على شار (شار s) يقرأ خط من ستدين في المخزن المؤقت وأشار إلى s حتى إما إنهاء الخط الجديد أو إوف (نهاية الملف). تقوم الدالة إنت يضع (كونست شار s) دالة السلسلة و سطر جديد إلى ستدوت. عندما يتم تجميع التعليمات البرمجية أعلاه وتنفيذها، فإنه ينتظر لك لإدخال بعض النص. عند إدخال النص واضغط على إنتر، ثم يبدأ البرنامج ويقرأ الخط الكامل حتى النهاية، ويعرضه على النحو التالي ناقص و سكانف () و برينتف () وظائف يقرأ وظيفة إنت سكانف (كونست شار تنسيق) الإدخال من تيار المدخلات القياسية ستدين والمسح الضوئي التي المدخلات وفقا للتنسيق المقدمة. تقوم الدالة إنت برينتف (كونست شار فورمات) بإخراج الإخراج إلى ستدوت تيار الإخراج القياسي وتنتج الإخراج وفقا للتنسيق المقدم. يمكن أن يكون الشكل سلسلة ثابتة بسيطة، ولكن يمكنك تحديد s، d، c، f، الخ. لطباعة أو قراءة السلاسل، عدد صحيح، حرف أو تعويم على التوالي. هناك العديد من خيارات التنسيق الأخرى المتاحة والتي يمكن استخدامها على أساس المتطلبات. دعونا الآن المضي قدما مع مثال بسيط لفهم المفاهيم أفضل ناقص عندما يتم تجميع التعليمات البرمجية المذكورة أعلاه وتنفيذها، فإنه ينتظر لك لإدخال بعض النص. عند إدخال نص واضغط على إنتر، ثم عائدات البرنامج ويقرأ المدخلات ويعرضه على النحو التالي ناقص هنا، تجدر الإشارة إلى أن سكانف () تتوقع الإدخال في نفس الشكل كما قدمت s و d، مما يعني أنك بحاجة إلى توفير مدخلات صالحة مثل سلسلة صحيح. إذا قمت بتوفير سلسلة سلسلة أو عدد صحيح صحيح، ثم سيتم افتراض إدخال خاطئ. ثانيا، في حين قراءة سلسلة، سكانف () توقف القراءة في أقرب وقت لأنها تواجه مساحة، لذلك هذا هو اختبار ثلاثة سلاسل ل سكانف ().

No comments:

Post a Comment