How to use sprintf

dsimcha dsimcha at yahoo.com
Sun Apr 24 14:22:39 PDT 2011


On 4/24/2011 5:22 PM, Justin Hanekom wrote:
> Hi all,
>
> I have what should be an *extremely* simple question that Im banging my head against: how to use
> sprintf to format something to a string.
>
> I have tried:
>    import std.stdio;
>    ...
>    auto buffer = new char[12];
>    auto chars_written = sprintf(cast(char *) buffer, "%d", 12345);
>    writeln(chars_written);
> and various other ways of getting the buffer into sprintf, but no matter what I do the program seems to
> die when sprintf is called.
>
> What I'm ultimately trying to do here is format a number with thousands separated by commas.
>
> Any idea?
>
> Thanks, Justin

sprintf is a C function.  The string you passed needs to be 
zero-terminated.  Since it's not, sprintf probably keeps trying to write 
more stuff until it segfaults, because it never finds the zero 
terminator.  See std.string.toStringz 
(http://www.digitalmars.com/d/2.0/phobos/std_string.html#toStringz).


More information about the Digitalmars-d mailing list