Advertisement
Guest User

Needlessly Complex Hello World

a guest
Apr 19th, 2018
317
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.66 KB | None | 0 0
  1. //Needlessly complex "hello world" program, written by Jon Jenkins <jon@mj12.su>
  2.  
  3. #include <stdio.h>
  4. #include <stdlib.h>
  5. #include <string.h>
  6.  
  7. char h[] = {0x7f, 0x08, 0x08, 0x08, 0x7f};
  8. char e[] = {0x7f, 0x49, 0x49, 0x41, 0x41};
  9. char l[] = {0x7f, 0x40, 0x40, 0x40, 0x40};
  10. char o[] = {0x7f, 0x41, 0x41, 0x41, 0x7f};
  11. char w[] = {0x7f, 0x08, 0x04, 0x08, 0x7f};
  12. char r[] = {0x7f, 0x0D, 0x15, 0x25, 0x47};
  13. char d[] = {0x7f, 0x41, 0x41, 0x41, 0x3e};
  14.  
  15. void print_fat_letters(const char * instr)
  16. {
  17.     int slen = strlen(instr);
  18.     // We need 5 * slen bytes plus 2 * (slen - 1) bytes  + 1 for null for our line buffer
  19.     int buflen = (slen * 5) + ((slen - 1) * 2) + 1;
  20.     char * linebuf =  malloc(buflen);
  21.     if(!linebuf)
  22.     {
  23.         printf("Null pointer!\n");
  24.         exit(-1);
  25.     }
  26.     memset(linebuf, ' ', buflen);
  27.     linebuf[buflen - 1] = '\0';
  28.     int row,col,pos;
  29.     for(row = 0; row < 7; row++)
  30.     {
  31.         for(pos = 0; pos < slen; pos++)
  32.         {
  33.             char frag[5];
  34.             switch(instr[pos])
  35.             {
  36.                 case 'h':
  37.                     memcpy(frag, h, 5);
  38.                     break;
  39.                 case 'e':
  40.                     memcpy(frag, e, 5);
  41.                     break;
  42.                 case 'l':
  43.                     memcpy(frag, l, 5);
  44.                     break;
  45.                 case 'o':
  46.                     memcpy(frag, o, 5);
  47.                     break;
  48.                 case 'w':
  49.                     memcpy(frag, w, 5);
  50.                     break;
  51.                 case 'r':
  52.                     memcpy(frag, r, 5);
  53.                     break;
  54.                 case 'd':
  55.                     memcpy(frag, d, 5);
  56.                     break;
  57.             }
  58.             for(col = 0; col < 5; col++)
  59.             {
  60.                 if(((frag[col] >> row) & 1) && 1)
  61.                 {
  62.                     linebuf[pos*7+col] = 'C';
  63.                 }
  64.                 else
  65.                 {
  66.                     linebuf[pos*7+col] = ' ';
  67.                 }
  68.             }
  69.         }
  70.         printf("%s\n",linebuf);
  71.     }
  72.     printf("\n");
  73. }
  74.  
  75. int main(int argc, char ** argv)
  76. {
  77.     print_fat_letters("hello");
  78.     print_fat_letters("world");
  79. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement