From a0a0b6006ce10522e393c7590a13efe176511d13 Mon Sep 17 00:00:00 2001 From: Dimitri Sokolyuk Date: Thu, 5 Jun 2008 17:49:22 +0000 Subject: write into string buffer instead of directly to terminal --- 7seg.c | 30 ++++++++++++++++++++++-------- 1 file changed, 22 insertions(+), 8 deletions(-) diff --git a/7seg.c b/7seg.c index 1339065..941fae8 100644 --- a/7seg.c +++ b/7seg.c @@ -16,6 +16,7 @@ */ #include +#include /* * _ a @@ -46,31 +47,44 @@ const char sym[] = "_|_||_|"; int main(int argc, char **argv) { - int i, j; - char *c; + int i, j; + char *c; + char *p; + char *s[4]; + size_t len; if ((c = argv[1]) == NULL) return(-1); + len = strlen(argv[1]); + s[3] = malloc(1); + *s[3] = '\0'; + for (i = 0; i < 3; i++) { + p = malloc(len + 1); + s[i] = p; do { if (*c < '0' || *c > '9') continue; if (i == 0) - putchar(' '); + *p++ = ' '; for (j = 0; j < 3; j++) { - putchar(seg[*c - '0'] & 1 << i * i + j ? - sym[i * i + j] : ' '); + *p++ = seg[*c - '0'] & 1 << i * i + j ? + sym[i * i + j] : ' '; if (i == 0) { - putchar(' '); + *p++ = ' '; break; } } } while (*++c); - putchar('\n'); + *p = '\0'; c = argv[1]; } - putchar('\n'); + + for (i = 0; i < 4; i++) { + puts(s[i]); + free(s[i]); + } return(0); } -- cgit v1.2.3