Date: Fri, 2 Feb 2001 04:05:54 -0800 (Pacific Standard Time) From: Joseph Stein <joes@joescanner.com> To: <freebsd-questions@freebsd.org> Subject: Formatting a number Message-ID: <Pine.WNT.4.31.0102020402460.920-100000@hood>
next in thread | raw e-mail | index | archive | help
A few weeks ago, I posted a question asking how to format a number. I couldn't find a solution (however I am still certain there is an easier way than what I finally hacked out)... Here was the solution I came up with in case anybody else wants it. It is pretty rudimentary, but it works. /* * fmtnbr.c * * Input: a number (string) * Output: A formatted number * * Copyright (C) 2001, Joseph Stein (joes@joescanner.com) * * Permisson to use this code is granted to anybody. If you * include it in other code, please give me credit. */ #include <stdio.h> int main(int argc, char* argv[]) { int numlen; int i; int j; int remainder; char teststr[256]; if (argc!=2) { fprintf(stderr,"Usage:\n\t%s <number>\n\n", argv[0]); return(2); } strcpy(teststr, argv[1]); numlen=strlen(teststr); teststr[numlen]='\0'; remainder=numlen%3; #ifdef DEBUG fprintf(stderr,"number %s is %d digits.\n", teststr, numlen); #endif if (numlen<4) { printf("%s", teststr); exit(1); } if (remainder==0) { #ifdef DEBUG fprintf(stderr,"multiple of 3\n"); #endif for (i=0; i<numlen;) { for (j=0; j<3; j++) { printf("%c",teststr[i++]); } printf("%s", i!=numlen ? "," : ""); } } else { #ifdef DEBUG fprintf(stderr,"not an even multiple of three\n"); #endif for (i=0; i<remainder;) { printf("%c",teststr[i++]); } printf(","); for (i=0+remainder; i<numlen;) { for (j=0; j<3; j++) { printf("%c",teststr[i++]); } printf("%s", i!=numlen ? "," : ""); } } return(0); } To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-questions" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.WNT.4.31.0102020402460.920-100000>