void put_str(char *p) {
char* letter2[] = {
"\x38\x44\x44\x44\x7c\x44\x44\x00",//A
"\x78\x44\x44\x78\x44\x44\x78\x00",//B
"\x38\x44\x40\x40\x40\x44\x38\x00",//C
"\x70\x48\x44\x44\x44\x48\x70\x00",//D
"\x7c\x40\x40\x78\x40\x40\x7c\x00",//E
};
unsigned int len = strlen(p);
unsigned int width = 8 * len;
unsigned int num = 0;
char p1;
for (int i = 0; i < 8; i++) {
for (int j = 0; j < width; j++) {
//假设8*8的点阵,每一周期,就是一个字母完结,把除8取模判断是否整数,num用来取值和位移
if ((j / 8) % 8 != (int)num) {
num++;
if ((len - num) == 0) {
num = 0;
}
}
p1 = (letter2[p[num] - 65][i] << j - (num) * 8) & 0x80;
//p = (letter2[str_test[4] - 65][i] << j - 4 * 8) & 0x80;
if (p1) {
printf("*");
}
else {
printf(" ");
}
}
printf("\n");
}
}
通过字模按位元做操作,由于只做了5个字母,只能显示5个,最终效果
![调用函数就可以了](https://img-blog.csdnimg.cn/direct/9139f8732e9c4d5dbdb20a776954d6b9.png#pic_center)
c语言用星号打印字符串
最新推荐文章于 2024-04-30 20:41:06 发布