由于gotoxy()不是标准库函数,所以自己编写一个 #include<stdio.h>
gotoxy(int x,int y)//光标下移函数
{
int i,j;
for(i=0;i<x;i++)
printf("\n");
for(j=0;j<y;j++)
printf(" ");
}
int main(void)
{
gotoxy(20,10);
printf("***********************\n");//在(20,10)处输出**********
}
你看出这个程序的问题了吗?加上这个退光标函数后还是不对!!!怎么办?
backtostatrt(int x,int y)//退光标函数貌似只能退到行首
{
int i,j;
for(i=0;i<x;i++)
{
printf("\r");
printf("\b");
}
}
下面是Linux下对光标的操作
printf("\033[47;31mhello world\033[5m");
47是字背景颜色, 31是字体的颜色, hello world是字符串. 后面的\033[5m是控制码.
颜色代码:
QUOTE:
字背景颜色范围: 40--49 字颜色: 30--39
40: 黑 30: 黑
41: 红 31: 红
42: 绿 32: 绿
43: 黄 33: 黄
44: 蓝 34: 蓝
45: 紫 35: 紫
46: 深绿 36: 深绿
47: 白色 37: 白色
ANSI控制码:
QUOTE:
\033[0m 关闭所有属性
\033[1m 设置高亮度
\03[4m 下划线
\033[5m 闪烁
\033[7m 反显
\033[8m 消隐
\033[30m -- \033[37m 设置前景色
\033[40m -- \033[47m 设置背景色
\033[nA 光标上移n行
\03[nB 光标下移n行
\033[nC 光标右移n行
\033[nD 光标左移n行
\033[y;xH设置光标位置
\033[2J 清屏
\033[K 清除从光标到行尾的内容
\033[s 保存光标位置
\033[u 恢复光标位置
\033[?25l 隐藏光标
\33[?25h 显示光标
这样, 在某些时候就可以实现动态的输出.
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
void settoxy(int x,int y)
{//检查x,y范围
printf("\033[%d;%dH",x,y);
}
int main(int argc,char *argv[])
{
printf("\033[2J");
settoxy(7,20);
printf("hello");
settoxy(4,10);
printf("world");
getchar();
exit(0);
}