我想做的是做这样的事情:
打印\
然后|
然后/
然后_
,然后循环播放。这是我的代码:
#include <stdio.h>
int main()
{
while(1)
{
printf("\\");
printf("|");
printf("/");
printf("_");
}
return 0;
}
我面临的问题是它按顺序打印,如何在C或C ++中使用一段时间延迟在同一光标位置打印?
答案 0 :(得分:4)
我无法正确理解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 :(得分: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;
}
如果您需要延迟,请在您自己的延迟功能中添加一个忙碌等待,或者呼叫睡眠或进行其他处理的呼叫。
答案 2 :(得分:2)
#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;
}
答案 3 :(得分:2)
您可以在打印后添加退格符(\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;
}
您还可以查看the curses library以获取正确的基于文本的GUI fu。
答案 4 :(得分:1)
您可以在回弹的开头添加回车符。
e.g。
printf("\r|");
sleep(1);
或在打印后添加退格.-
答案 5 :(得分:0)
在C或C ++中没有标准的方法可以做到这一点。
您可以使用第三方库,如ncurses或ANSI转义序列(如果在Unix OS上)。
答案 6 :(得分:0)
在C中,您可以使用'\ b'或ascii值8打印退格符。在每次打印前使用它。我想你需要在两个打印语句之间有一些延迟。