X-Git-Url: https://secure.softndesign.org/git/?a=blobdiff_plain;f=format.c;fp=format.c;h=48cc56f57951d5d528d08eb726bd6388ed728277;hb=a24bd5195f9990159a974c98751f1473f29b9fa4;hp=0000000000000000000000000000000000000000;hpb=a70d1cdb22b2aa77a34d483403a182e335babf8e;p=calc.git diff --git a/format.c b/format.c new file mode 100644 index 0000000..48cc56f --- /dev/null +++ b/format.c @@ -0,0 +1,42 @@ +#include +#include +#include + +#include "format.h" + +/* global variables */ + +#define DEFAULT_FORMAT "=> %.6g\n" +char *format = NULL; +char *minform = NULL; + +/* print function */ + +void set_format (char *prompt, int precision) +{ + char buffer[128] = {0}; + free_format (); + sprintf (buffer, "%s%%.%dg\n", prompt, precision); + format = strdup (buffer); + sprintf (buffer, "%%.%dg", precision); + minform = strdup (buffer); +} + +void free_format () +{ + if (format) { + free (format); + format = NULL; + } + if (minform) { + free (minform); + minform = NULL; + } +} + +double print (double value) +{ + fprintf (stdout, format ? format : DEFAULT_FORMAT, value); + fflush (stdout); + return value; +}