#include #include #include #define MAXSIZE 20 #define LEDROWS 3 #define DRAW(x,y) do{c = (pattern[(*p - 0x30)] & x) ? y:' ';printf("%c", c);}while(0); /* Non-digits are ignored */ int main(int argc, char **argv) { char c, *p, pattern[] = {0x7B, 0x12, 0x3D, 0x6D, 0x4E, 0x67, 0x77, 0x49, 0x7F, 0x6F}; int i, j; if(argc < 2) { printf("usage: fun foo - where foo is a set of digits\n"); exit(1); } if(strlen(argv[1]) > MAXSIZE) argv[1][MAXSIZE] = '\0'; printf("\n"); for(i = 0; i < LEDROWS; i++) { p = argv[1]; while(*p) { if(*p >= 0x30 && *p <= 0x39) { switch(i) { case 0: printf(" "); DRAW(1,'_') printf(" "); break; case 1: DRAW(2,'|') DRAW(4,'_') DRAW(8,'|') break; case 2: DRAW(16,'|') DRAW(32,'_') DRAW(64,'|') } printf(" "); } p++; } printf("\n"); } }