Как заставить курсор вращаться

#c #c

#c #c

Вопрос:

Я пытаюсь сделать что-то вроде этого:

Выведите затем | , затем / затем _ , и это продолжается в цикле. Вот мой код:

 #include <stdio.h>  

int main()  
{ 
   while(1)
   {
           printf("\");
           printf("|");
           printf("/");
           printf("_");
   }
   return 0;  
}
  

Проблема, с которой я сталкиваюсь, заключается в том, что он печатает его последовательно, как мне заставить его печатать в том же положении курсора с некоторой задержкой по времени в C или C ?

Комментарии:

1. Пожалуйста, #include <cstdio> не #include <stdio.h> , при написании C .

Ответ №1:

Я не совсем понимаю, что вы имеете в виду под How to make cursor rotate ? Но вы случайно не хотели сделать что-то подобное:

 #include <stdio.h>  
#include <time.h>  

#define mydelay 100

void delay(int m)
{
    clock_t wait = m  clock();
    while (wait > clock());
}


int main()  
{  
   while(1)
   {
           printf("\b");
           delay(mydelay);
           printf("|b");
           delay(mydelay);
           printf("/b");
           delay(mydelay);
           printf("_b");
           delay(mydelay);
   }

   return 0;  
}
  

Комментарии:

1. Да, но это полностью зависит от среды, работает это или нет. И clock() обычно измеряет время процессора для процесса, а не время работы в сети.

Ответ №2:

 #include <stdio.h>  

int main()  
{ 
   while(1)
   {
           printf("\");  printf("%c", 8); // 8 is the backspace ASCII code.
           printf("|");  printf("%c", 8);  // %c is the printf format string for single character
           printf("/");  printf("%c", 8);  // assuming output to a terminal that understands
           printf("_");  printf("%c", 8);  // Backspace processing,  this works.
   }
   return 0;  
}
  

Если вам нужна задержка, то добавьте вызов к вашей собственной функции задержки, которая находится в режиме ожидания, или вызывает режим ожидания, или выполняет какую-либо другую обработку.

Ответ №3:

 #include <stdio.h>
#include <stdlib.h>    /* for sleep() */

int main(void)
{
  fprintf(stderr,"Here we are:  ");

  while(1)
  {
    fprintf(stderr,"b\");
    sleep(1);
    fprintf(stderr,"b|");
    sleep(1);
    fprintf(stderr,"b/");
    sleep(1);
    fprintf(stderr,"b-");
    sleep(1);
  }

  return 0;
}
  

Ответ №4:

Вы можете добавить символ пробела ( b ) после печати, хотя работает ли это, полностью зависит от среды, в которой отображаются выходные данные вашей программы.

Вы также захотите ввести задержку, чтобы действительно видеть изменения (хотя это может произойти естественным образом, как часть вашего более широкого алгоритма).

 #include <cstdio>
#include <cstdlib>

int main()  
{ 
   while(1) {
           printf("\b"); sleep(1);
           printf("|b");  sleep(1);
           printf("/b");  sleep(1);
           printf("_b");  sleep(1);
   }
   return 0;  
}
  

Вы также могли бы заглянуть в библиотеку curses для правильного текстового графического интерфейса fu.

Ответ №5:

Вы могли бы добавить возврат каретки в начало ваших жал.

например

 printf("r|");
sleep(1);
  

или добавьте пробел после печати.-

Ответ №6:

Ни в C, ни в C нет стандартного способа сделать это.

Вы можете использовать стороннюю библиотеку, такую как ncurses или escape-последовательности ANSI (если в ОС Unix).

Ответ №7:

В C вы можете напечатать символ пробела, используя ‘b’ или значение ascii 8. Используйте это перед каждой печатью. Я думаю, вам понадобится некоторая задержка между двумя операторами печати.

Комментарии:

1. Если вы работаете в Linux, для этого есть библиотека curses.