Fix printing to not go over the line limit
diff --git a/include/num.h b/include/num.h
index e5fd14e..5be0893 100644
--- a/include/num.h
+++ b/include/num.h
@@ -78,6 +78,8 @@
 
 #define BC_NUM_SCALE(n) ((n)->len - (n)->radix)
 
+#define BC_NUM_PRINT_WIDTH (68)
+
 typedef struct BcNum {
 
   char* num;
diff --git a/src/bc/num.c b/src/bc/num.c
index fae246e..0ec345e 100644
--- a/src/bc/num.c
+++ b/src/bc/num.c
@@ -873,25 +873,59 @@
 static BcStatus bc_num_printDecimal(BcNum* n, FILE* f) {
 
   size_t i;
+  size_t chars;
+
+  chars = 0;
 
   if (n->len) {
 
-    if (n->neg) fputc('-', f);
+    if (n->neg) {
+      fputc('-', f);
+      ++chars;
+    }
 
-    for (i = 0; i < n->radix; ++i) fputc(BC_NUM_TO_CHAR(n->num[i]), f);
+    for (i = 0; i < n->radix; ++i) {
+
+      fputc(BC_NUM_TO_CHAR(n->num[i]), f);
+      ++chars;
+
+      if (chars == BC_NUM_PRINT_WIDTH) {
+        fputc('\\', f);
+        fputc('\n', f);
+        chars = 0;
+      }
+    }
 
     if (i < n->len) {
 
       fputc('.', f);
+      ++chars;
 
-      for (; i < n->len; ++i) fputc(BC_NUM_TO_CHAR(n->num[i]), f);
+      if (chars == BC_NUM_PRINT_WIDTH) {
+        fputc('\\', f);
+        fputc('\n', f);
+        chars = 0;
+      }
+
+      for (; i < n->len; ++i) {
+
+        fputc(BC_NUM_TO_CHAR(n->num[i]), f);
+        ++chars;
+
+        if (chars == BC_NUM_PRINT_WIDTH) {
+          fputc('\\', f);
+          fputc('\n', f);
+          chars = 0;
+        }
+      }
     }
   }
   else {
     fputc('0', f);
+    ++chars;
   }
 
-  fputc('\n', f);
+  if (chars) fputc('\n', f);
 
   return BC_STATUS_SUCCESS;
 }