Си: показатель загрузки

Рейтинг: 2Ответов: 3Опубликовано: 22.04.2015

Как в emerge сделан вращающийся слеш? (/) Он пишет: Calculating dependencies /

И слеш вращается. Как это сделано? Хочу повторить.

Ответы

▲ 8Принят

Я практически уверен, что они (emerge) делают это так (а не \r и вывод всей строки, что вызывало бы некую рябь на экране)

Можете попробовать и поиграться задержкой (usleep)

#include <stdio.h>

int 
main (int ac, char *av[])
{
  int i, j;
  char *s = "/-\\|";

  fputs("test  ", stdout); fflush(stdout);
  for (i = 0; i < 100; i++)
    for (j = 0; j < 4; j++) {
      printf("\b%c", s[j]); fflush(stdout); // символ \b -- BACKSPACE -- шаг назад
      usleep(100000);
    }

}
▲ 6

Если нужно перепечатывать только один символ - достаточно \b печатать - смещает курсор на 1 позицию назад.

▲ 1

Наверное каждый раз перепечатывается одна и та же строка, только меняется один символ: -,\,|,/ –

можно при выводе в консоль управлять кареткой с помощью символа '\r'

printf("hello"); 
printf("\rbye");