سؤال

هل هناك طريقة منصة مستقلة من كتابة رمز EOF إلى سلسلة في روبي. في * لا شيء وأعتقد أن الرمز هو ^D، ولكن في ويندوز هو ^Z، لهذا السبب أطلب.

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

المحلول

وEOF ليس شخصية، انها دولة. محطات استخدام أحرف التحكم لتمثيل هذه الدولة (C-د). ليس هناك شيء من هذا القبيل هو "قراءة EOF <م> الطابع " ونفس الشيء بالنسبة لكتابة واحدة. إذا كنت تكتب إلى ملف، فقط إغلاقه عند الانتهاء من ذلك. انظر هذا القائمة البريدية آخر :

<اقتباس فقرة>   

وهذا يبدو وكأنه كنت تفكر في EOF   باعتبارها في الفرقة ولكن طابع خاص   القيمة التي يصادف نهاية الملف. هذا   من الأفضل أن نفكر في الأمر باعتباره   خارج النطاق قيمة الحارس. في C، EOF   عادة ما تكون -1 وAPI المرتبطة   تحدد قيم الأعداد العودة حتى   مكفول أن EOF أن يكون أبدا   الخلط بينه وبين قيمة صالحة في النطاق.

وفيما يلي بعض المزيد من الادلة على (القيام بذلك على يونكس):

$ cat > file
hello^V^Dworld
^D
$ cat file
helloworld

والكتابة ^ V ^ D إدراج حرف تحكم-D حرفيا في الملف. بعد كتابة العالم والدخول، يغلق ^ D الأنابيب. الملف ينتهي به الأمر 12 بايت 10 رسائل، اثنين من أكثر ل^ D وسطر جديد. النهائي ^ D لا ينتهي في الملف. انها تستخدم فقط من قبل محطة / شل لإغلاق الأنابيب.

نصائح أخرى

في عام لا يوجد حرف EOF. وهذا هو، وليس هناك حل عبر منصة لهذا وحتى على منصات محددة في التعامل مع مثل هذه الشخصية هو وراثي وغير متناسقة بحتة. قمت بإنهاء ملف إغلاقه.

ولكن، لتكون متحذلق، وبعض أنظمة التشغيل عند قراءة الملفات في أوضاع معينة لا تدعم نهاية الحرفي للحرف الملف. على سبيل المثال، إذا كنت تعمل تحت ويندوز واستخدام API C stdio لقراءة ملف في وضع النص الحرفي ثم ضبط Z (رمز الحرف 26) ويشير نهاية الملف إلى stdio. هذا هو محتفظ بمنصبه من MS-DOS التي لديها كما المستمر من CP / M. إذا كنت تستخدم stdio وقراءة الملف في الوضع الثنائي ثم فإن ضبط Z لا نهاية الملف.

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

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