自己动手编写gotoxy()

作者在 2010-04-11 20:39:14 发布以下内容

由于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);
}

默认分类 | 阅读 1005 次
文章评论,共0条
游客请输入验证码
浏览51135次
文章分类