Well, I didn't mean dump the pointer. Sorry for the confusion.
Here is my suggestion.
char *fnum(long number)
{
int index,index_new,rest;
char buf[16];
char *buf_new;
sprintf(buf, "%ld", number);
rest = strlen(buf)%3;
for (index = index_new = 0;index < strlen(buf); index++, index_new++)
{
if (index != 0 && (index - rest) %3 == 0 )
{
buf_new[index_new]=',';
index_new++;
buf_new[index_new] = buf[index];
}
else
buf_new[index_new] = buf[index];
}
buf_new[index_new] = '\0';
return buf_new;
}
There, I think that will work... basically the same function, just change
the "static char buf_new[16];" to "char *buf_new;" .. I think that will fix
it all together.
-V
----- Original Message -----
From: "mark" <[EMAIL PROTECTED]>
To: "Valnir" <[EMAIL PROTECTED]>
Cc: <[EMAIL PROTECTED]>
Sent: Thursday, February 12, 2004 12:01 PM
Subject: Re: Re: Formatting numbers
>
> > Honestly, while I am looking at this, I don't see a reason why you
need to
> > have it as a static buffer.. Since a static retains the information
in the
> > memory, and you aren't resetting it at the beginning, then you have
really
> > one of two choices. Either don't use a static, or make sure you
reset the
> > static buf_new to '\0' at the beginning of the function.
>
> He needs it to either be static or to return a malloc'ed (in some manner)
memory pointer. The reason: It's not well defined what happens when you use
variables from another function that don't always exist. It has to do with
how memory is used across functions - suffice it to say that if it were not
static - it would not always exist when you went to use it. However, that
does mean that changing that buffer will change every instance of your
stuff. Could be fun. ;-)
>
> I don't think this is going to make it to the rom list - but I've BCC'ed
it. Rom list has an issue with UTF-8 emails.
>
> Anyway, thought this might be enlightening.
>
> Scout
>