用方块填充framebuffer

时间:2015-02-23 18:33:25

标签: c arrays framebuffer

我试图用ASCII艺术方块填充无符号字符数组,然后在屏幕上打印它。目前这是我的代码:

#include <stdio.h>
#define W 80
#define H 23

static int clear(unsigned char *p, int lim)
{
        int i;

        for (i = 0; i < lim; i++)
                p[i] = ' ';
        return i;
}

static int square(unsigned char *p, int x, int y, int wh)
{
        int i, j;

        for (i = y; i < wh; i++) {
                for (j = x; j < wh; j++)
                        p[j] = '@';
                p[i] = '\n';
        }

        return i - j;
}

int main(void)
{
        unsigned char buf[W * H];
        clear(buf, sizeof buf);
        square(buf, 1, 2, 3);
        fwrite(buf, 1, sizeof buf, stdout);

        return 0;
}

此代码在编译时将导致无法打印,无法正确打印等。

这是我想要的代码的结果:

  @@@
  @@@
  @@@

任何帮助都表示赞赏,因为我不明白如何填充帧缓冲区然后将其打印到屏幕上。谢谢。

1 个答案:

答案 0 :(得分:0)

试试这个

static void point(unsigned char *p, int x, int y, unsigned char ch){
    if(x < W && y < H)
        p[W*y + x] = ch;
}

static void square(unsigned char *p, int x, int y, int wh){
    int i, j;

    for (i = y; i < y + wh; i++) {
        for (j = x; j < x + wh; j++)
            point(p, j, i, '@');
    }
}