سؤال

يا شباب لقد رأيت تطبيقات وحدة التحكم في طباعة الألوان و رأيت تطبيقات مثل ffmpeg طباعة النص على نفسها بدلا من سطر جديد.كيف يمكنني طباعة القائمة الخط ؟ أريد أن عرض إطارا في الثانية في وحدة التحكم التطبيق إما في أعلى أو أسفل منتظمة printfs الذهاب إلى هناك و انتقل عادة

-تحرير- انا بحاجة الى هذا ويندوز ولكن هذا هو المفترض أن يكون عبر منصة لذلك سوف يكون في نهاية المطاف لينكس وماك تنفيذ

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

المحلول

هناك اثنين بسيطة الإمكانيات التي تعمل على لينكس وكذلك ويندوز, ولكن فقط على سطر واحد:

  • printf("\b"); سوف مقابل حرف واحد ، لذلك قد عد كم حرف تريد backspace و النار هذا في حلقة ، أو كنت تعرف أن كنت فقط أكتب الأرقام ن و تفعل مثل ذلك
    printf("\b\b\b\b\b\b\b\b\b\b");
  • printf("text to be overwritten by next printf\r"); هذا وسوف يعود المؤشر إلى بداية السطر ، لذلك أي القادم printf سيتم الكتابة فوقه.تأكد من كتابة سلسلة من نفس الطول أو أطول إذا قمت بالكتابة فوق ذلك تماما.

إذا كنت ترغب في كتابة عدة أسطر ، لا يوجد شيء لذلك المحمولة مثل سأركع, هناك يبس لأنه عمليا على كل نظام التشغيل, و لا يجب أن تأخذ الرعاية من ANSI-الاختلافات.

تحرير:تم إضافة رابط سأركع صفحة ويكيبيديا ، ويعطي كبيرة نظرة عامة مقدمة ، وكذلك رابط قائمة وربما الترجمة إلى لغتك المفضلة

نصائح أخرى

تحقق من سأركع. لديها ارتباطات لمعظم لغات البرمجة.

ويمكنك استخدام '\r' بدلا من '\n'.

وعدد حرف ASCII 8 (المعروف أيضا باسم مفتاح Ctrl-H، BS أو مسافة للخلف) يتيح لك النسخ الاحتياطي حرف واحد. (A.K.A على Ctrl-M، CR أو نقل العودة) إرجاع ASCII الأحرف رقم 13 المؤشر في بيجينينج الخط.

إذا كنت تعمل في putchar(8); C محاولة وputchar(13);

وسحر الألوان، وتحديد مكان المؤشر وbliking وهلم جرا في الداخل ANSI الهروب رموز . أي وحدة النص قادرة على التعامل مع رموز ANSI يمكن استخدامها فقط طباعتها لتعزية (أي عن طريق صدى في السيناريو باش أو وظيفة printf () في C).

ومحطات يونكس دعم ANSI أحرف ويندوز العالم تستخدم لتقديم الدعم لهم مرة أخرى في أيام MS-DOS القديمة، ولكن وضعت على دعم وحدة متعددة البايت حدا لهذا. هناك مزيد من المعلومات هنا . ولكن هناك طرق أخرى للخروج من مجرد تسلسل ANSI طباعة <لأ href = "https://stackoverflow.com/questions/77744/how-can-i-change-the-text-color-in-the-windows-command- موجه "> متوفرة على ويندوز . وعلاوة على ذلك إذا كان لديك سيغوين تثبيت على نظام التشغيل Windows ماتشينج بك رموز ANSI تعمل فقط كبيرة كما في أي محطة يونيكس.

وكثير من الناس يذكر مكتبة سأركع هذا هو المعيار الأمر الواقع لأي طلبات تشبه واجهة المستخدم الرسومية على أساس النص. ما هذه المكتبة يفعله هو لإخفاء كل الخلافات محطة (النكهات ويندوز / يونكس) لتمثيل نفس المعلومات متطابقة قدر الإمكان في جميع المنابر، وعلى الرغم من تجربتي الخاصة وأنا أقول لكم هذا ليس صحيحا دائما (أي نص نموذجي إطارات النوافذ تغيير لأن حرف خصوصي لا تتوفر في جميع المحارف). النظير استخدام نكورسيس هو أنه هو API الكامل وهو أصعب بكثير لتبدأ معها من مجرد كتابة بعض أحرف ANSI لأشياء بسيطة مثل تغيير لون الخط، وتنظيف الشاشة أو تحريك المؤشر مرة أخرى إلى عشوائي الموقف.

لأغراض اكتمال I لصق مثال على استخدام تسلسل ANSI لينكس أن يتغير موجه إلى اللون الأزرق، ويظهر التاريخ:

PS1="\[\033[34m\][\$(date +%H%M)][\u@\h:\w]$ "

ويمكنك استخدام سأركع -

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

وحزمة ncurses هي مكتبة روتين مقابل رسم الشاشة وإدخال الحدث معالجة مستقلة محطة الذي يقدم نموذجا الشاشة على مستوى عال للمبرمج، وإخفاء الاختلافات بين أنواع الطرفية والقيام التحسين التلقائي من الإخراج إلى تغيير screenfull واحد من النص إلى آخر

واستنادا إلى النظام الأساسي الذي تم تطوير على هناك على الأرجح API أكثر قوة التي يمكن أن تستخدم بدلا من رموز التحكم ASCII القديمة.

ومنها مثلا. إذا كنت تعمل على Win32 يمكنك التلاعب في الواقع المخزن المؤقت لشاشة وحدة التحكم مباشرة.

ومكان جيد للبدء قد تكون هنا http://msdn.microsoft.com/en-us /library/ms683171(VS.85).aspx

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

ونأمل أن يساعد.

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