Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //Needlessly complex "hello world" program, written by Jon Jenkins <jon@mj12.su>
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- char h[] = {0x7f, 0x08, 0x08, 0x08, 0x7f};
- char e[] = {0x7f, 0x49, 0x49, 0x41, 0x41};
- char l[] = {0x7f, 0x40, 0x40, 0x40, 0x40};
- char o[] = {0x7f, 0x41, 0x41, 0x41, 0x7f};
- char w[] = {0x7f, 0x08, 0x04, 0x08, 0x7f};
- char r[] = {0x7f, 0x0D, 0x15, 0x25, 0x47};
- char d[] = {0x7f, 0x41, 0x41, 0x41, 0x3e};
- void print_fat_letters(const char * instr)
- {
- int slen = strlen(instr);
- // We need 5 * slen bytes plus 2 * (slen - 1) bytes + 1 for null for our line buffer
- int buflen = (slen * 5) + ((slen - 1) * 2) + 1;
- char * linebuf = malloc(buflen);
- if(!linebuf)
- {
- printf("Null pointer!\n");
- exit(-1);
- }
- memset(linebuf, ' ', buflen);
- linebuf[buflen - 1] = '\0';
- int row,col,pos;
- for(row = 0; row < 7; row++)
- {
- for(pos = 0; pos < slen; pos++)
- {
- char frag[5];
- switch(instr[pos])
- {
- case 'h':
- memcpy(frag, h, 5);
- break;
- case 'e':
- memcpy(frag, e, 5);
- break;
- case 'l':
- memcpy(frag, l, 5);
- break;
- case 'o':
- memcpy(frag, o, 5);
- break;
- case 'w':
- memcpy(frag, w, 5);
- break;
- case 'r':
- memcpy(frag, r, 5);
- break;
- case 'd':
- memcpy(frag, d, 5);
- break;
- }
- for(col = 0; col < 5; col++)
- {
- if(((frag[col] >> row) & 1) && 1)
- {
- linebuf[pos*7+col] = 'C';
- }
- else
- {
- linebuf[pos*7+col] = ' ';
- }
- }
- }
- printf("%s\n",linebuf);
- }
- printf("\n");
- }
- int main(int argc, char ** argv)
- {
- print_fat_letters("hello");
- print_fat_letters("world");
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement