From 5f95823fae6bcfef6c7599dd1a55223606e1614e Mon Sep 17 00:00:00 2001 From: hjp Date: Mon, 18 Mar 2002 20:41:09 +0000 Subject: [PATCH] Added format specifiers --- ieeefloat/ieeefloat.c | 27 ++++++++++++++++++++++----- 1 file changed, 22 insertions(+), 5 deletions(-) diff --git a/ieeefloat/ieeefloat.c b/ieeefloat/ieeefloat.c index 3af609b..6d3781d 100644 --- a/ieeefloat/ieeefloat.c +++ b/ieeefloat/ieeefloat.c @@ -1,9 +1,12 @@ char ieeefloat_c_rcs_id[] = - "$Id: ieeefloat.c,v 1.2 2000-02-08 17:04:37 hjp Exp $"; + "$Id: ieeefloat.c,v 1.3 2002-03-18 20:41:09 hjp Exp $"; /* ieeefloat: print binary representations of IEEE 754 FP numbers. * * $Log: ieeefloat.c,v $ - * Revision 1.2 2000-02-08 17:04:37 hjp + * Revision 1.3 2002-03-18 20:41:09 hjp + * Added format specifiers + * + * Revision 1.2 2000/02/08 17:04:37 hjp * Added -f and -d options to force input to be float or double format. * * Revision 1.1 1998/03/20 20:09:53 hjp @@ -50,9 +53,11 @@ typedef unsigned long long int doubleint; char *cmnd; +char *floatformat = "%24.7g"; +char *doubleformat = "%24.17g"; static void usage(void) { - fprintf(stderr, "Usage: %s [-f|-d] fp-number ...\n", cmnd); + fprintf(stderr, "Usage: %s [-f|-d] [-F format] [-D format] fp-number ...\n", cmnd); exit(1); } @@ -74,7 +79,8 @@ static void printfloat(float f) { u.f = f; - printf("%24.7g: ", f); + printf(floatformat, f); + printf(": "); printf("%c ", (u.i & SIGN_FLT) ? '-' : '+'); u.i &= ~SIGN_FLT; e = u.i >> MANT_FLT; @@ -102,7 +108,8 @@ static void printdouble(double f) { u.f = f; - printf("%24.17g: ", f); + printf(doubleformat, f); + printf(": "); printf("%c ", (u.i & SIGN_DBL) ? '-' : '+'); u.i &= ~SIGN_DBL; e = u.i >> MANT_DBL; @@ -169,6 +176,16 @@ int main(int argc, char**argv) { } else if (strcmp(argv[i], "-d") == 0) { convfloat = 0; continue; + } else if (strcmp(argv[i], "-F") == 0) { + if (!argv[i+1]) usage(); + floatformat = argv[i+1]; + i++; + continue; + } else if (strcmp(argv[i], "-D") == 0) { + if (!argv[i+1]) usage(); + doubleformat = argv[i+1]; + i++; + continue; } d = strtod(argv[i], &p);