我试图用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;
}
此代码在编译时将导致无法打印,无法正确打印等。
这是我想要的代码的结果:
@@@
@@@
@@@
任何帮助都表示赞赏,因为我不明白如何填充帧缓冲区然后将其打印到屏幕上。谢谢。
答案 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, '@');
}
}