طباعة الغزل المؤشر في محطة تشغيل التطبيق باستخدام C

StackOverflow https://stackoverflow.com/questions/199336

  •  11-07-2019
  •  | 
  •  

سؤال

كيف يمكنني طباعة الغزل في مؤشر الأداة التي يعمل في محطة باستخدام معيار C ؟

أنا أبحث عن شيء يطبع:\ | / - مرارا وتكرارا في نفس الموقف على الشاشة ؟

شكرا

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

المحلول

هل يمكن استخدام حرف مسافة للخلف (\b) مثل هذا:

printf("processing... |");
fflush(stdout);
// do something
printf("\b/");
fflush(stdout);
// do some more
printf("\b-");
fflush(stdout);

وغيرها. كنت في حاجة إلى fflush(stdout) لأن عادة المعياري يتم تخزينها مؤقتا حتى يتم إخراج السطر الجديد.

نصائح أخرى

إليك بعض التعليمات البرمجية المثال. استدعاء advance_cursor () في كل مرة واحدة في حين حين اكتمال المهمة.

#include <stdio.h>

void advance_cursor() {
  static int pos=0;
  char cursor[4]={'/','-','\\','|'};
  printf("%c\b", cursor[pos]);
  fflush(stdout);
  pos = (pos+1) % 4;
}

int main(int argc, char **argv) {
  int i;
  for (i=0; i<100; i++) {
    advance_cursor();
    usleep(100000);
  }
  printf("\n");
  return 0;
}

لقد فعلت ذلك منذ فترة طويلة.هناك طريقتان.

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

  2. طباعة السيطرة على حرف.

أول طباعة " / "ثم 0x08 (backspace) ، ثم" - " ثم 0x08 ، ثم "\"....

Backspace حرف يتحرك المؤشر موقف واحد الفضاء ، ولكن يترك الطابع الحالي هناك حتى الكتابة فوقه.للحصول على توقيت الحق (حتى لا تدور سريعة أو بطيئة) وكنت الذهبي.

ويمكنك أيضا استخدام <م> \ ص :

#include <stdio.h>
#include <unistd.h>

void
advance_spinner() {
    static char bars[] = { '/', '-', '\\', '|' };
    static int nbars = sizeof(bars) / sizeof(char);
    static int pos = 0;

    printf("%c\r", bars[pos]);
    fflush(stdout);
    pos = (pos + 1) % nbars;
}

int
main() {
    while (1) {
        advance_spinner();
        usleep(300);
    }

    return 0;
}

لا يوجد حقا "المعيار" طريقة للقيام بذلك ، حيث ج المكتبة القياسية (http://members.aol.com/wantondeb/) لا توفر وظائف للقيام الخام محطة/وحدة الإخراج.

في DOS/Windows التحكم القياسية العش طريقة للقيام بذلك هي مع conio.h, بينما ظل يونكس/لينكس المقبولة المكتبة لهذا الغرض ncurses (ncurses أساسا بتغليف السيطرة على حرف السلوك الذي MBCook يصف في محطة مستقلة الطريق).

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