<div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">> I use a function called Va(), which allows you to do this on the spot,<br>> thereby creating less verbose code.  This is tested on Win32, Linux and
<br>> OS X.</blockquote><div><br>
I use another one that (I think) is more simple and (the most important) has no limit in the string lenght ! <br>
The only thing is that it will slow your game if you use it a lot of times in a frame.<br>
There is no bad code in my mail, it's just in html cauz i copied the code and now it's in color ^^<br>
<br>



<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="Generator" content="Kate, the KDE Advanced Text Editor">

<pre><span style="color: rgb(128, 128, 128);"><i>/* This function is taken from a gcc manual page example and adapted to my needs.<br><span style="font-style: italic;"> * FTSExp is like nothing.</span><br> * <a href="mailto:Pompei2@gmail.com">
Pompei2@gmail.com</a><span style="font-style: italic;"></span><br><span style="font-style: italic;"> </span>*/</i></span>
FTSExp <span style="color: rgb(128, 0, 0);">char</span> *MyAllocSPrintf( <span style="color: rgb(128, 0, 0);">const</span> <span style="color: rgb(128, 0, 0);">char</span> *fmt, ... )<br>{<br>  va_list ap;<br>   <span style="color: rgb(128, 0, 0);">
char</span> *     p       = NULL;<br>       <span style="color: rgb(128, 0, 0);">int</span>   size    = <span style="color: rgb(0, 0, 255);">2</span>,<br>                n       = <span style="color: rgb(0, 0, 255);">0</span>;<br><br>      <span style="color: rgb(128, 128, 128);">
<i>/* AllocStr simply allocs a char * (with malloc) and fills it with '\0' s */</i></span><br>  <b>if</b>( NULL == (p = AllocStr( size )) )<br>               <b>return</b> NULL;<br>       <b>while</b>( <span style="color: rgb(0, 0, 255);">1</span>
 ) {<br>          <span style="color: rgb(128, 128, 128);"><i>/* Try to print in the allocated space. */</i></span>
                va_start( ap, fmt );
                n = vsnprintf( p, size, fmt, ap );
                va_end( ap );
<span style="color: rgb(0, 128, 0);">#ifndef _WIN32</span>
                <span style="color: rgb(128, 128, 128);"><i>/* If that worked, return the string. */</i></span>
                <b>if</b> (n > -<span style="color: rgb(0, 0, 255);">1</span> && n < size)<br>                    <b>return</b> p;<br>          <span style="color: rgb(128, 128, 128);"><i>/* Else try again with more space. */</i></span>
                <b>if</b> (n > -<span style="color: rgb(0, 0, 255);">1</span>)<br>                   size = n+<span style="color: rgb(0, 0, 255);">1</span>;<br>         <b>else</b> <span style="color: rgb(128, 128, 128);"><i>/* n <= -1 */</i></span>
                        size *= <span style="color: rgb(0, 0, 255);">2</span>;<br><span style="color: rgb(0, 128, 0);">#else </span><span style="color: rgb(128, 128, 128);"><i>/* NOT WIN32 */</i></span>
                <span style="color: rgb(128, 128, 128);"><i>/* If that worked, return the string. */</i></span>
                <b>if</b> (n > -<span style="color: rgb(0, 0, 255);">1</span> && n < size - <span style="color: rgb(0, 0, 255);">1</span>)<br>                      <b>return</b> p;<br>          <span style="color: rgb(128, 128, 128);"><i>/* Else try again with more space. */
</i></span>
                <b>if</b> (n > -<span style="color: rgb(0, 0, 255);">1</span>)<br>                   size += <span style="color: rgb(0, 0, 255);">1</span>;<br>          <b>else</b> <span style="color: rgb(128, 128, 128);"><i>/* n <= -1 */</i></span>
                        size *= <span style="color: rgb(0, 0, 255);">2</span>;<br><span style="color: rgb(0, 128, 0);">#endif </span><span style="color: rgb(128, 128, 128);"><i>/* NOT_WIN32 */</i></span><br>               <span style="color: rgb(128, 128, 128);">
<i>/* MyRealloc is just like the normal realloc. */</i></span><br>              <b>if</b>( NULL == (p = (<span style="color: rgb(128, 0, 0);">char</span> *)MyRealloc( p, size )) )<br>                 <b>return</b> NULL;<br>       }<br>}<br></pre>              <span style="color: rgb(128, 128, 128);">
<i>/* How to use it ?? it's very simple: */<br>
</i></span>
<pre><span style="color: rgb(128, 0, 0);">char</span> *psz = NULL;<br>psz = MyAllocSPrintf( <span style="color: rgb(255, 0, 0);">"Yeah, it %s !\nblablabla %d"</span>, <span style="color: rgb(255, 0, 0);">"works perfectly"
</span>, <span style="color: rgb(0, 0, 255);">12345</span> );<br></pre>
<span style="color: rgb(128, 128, 128);"><i>/* Do your stuff ... */<br>
</i></span>
<pre><span style="color: rgb(128, 0, 0);"></span>if( psz ) {<br>      free( psz );<br>  psz = NULL;<br>}<br><br></pre>
</div></div>-- <br>
----<br>P.O.M.P.E.I. du 47-20