<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>textprintf_ex format modifiers</title>
		<link>http://www.allegro.cc/forums/view/590123</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Sun, 18 Feb 2007 13:32:34 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I&#39;m having trouble remembering how to handle the %s format modifier of textprintf_ex.</p><p>Basically, I just want to display information about the data structure on the screen so I know what I&#39;m dealing with.</p><p>First off, here&#39;s the data structure I have. It contains four other data structures as its members.</p><div class="source-code snippet"><div class="inner"><pre><span class="k1">typedef</span> <span class="k1">struct</span> PLAYER<span class="k2">{</span>
    <span class="k1">char</span> <span class="k3">*</span>name<span class="k2">;</span>
    WEAPON <span class="k3">*</span>current_weapon<span class="k2">;</span>
    ARMOR <span class="k3">*</span>current_armor<span class="k2">;</span>
    ACCESSORY <span class="k3">*</span>current_accessory<span class="k2">;</span>
    SPRITE <span class="k3">*</span>sprite<span class="k2">;</span>
<span class="k2">}</span>PLAYER<span class="k2">;</span>
</pre></div></div><p>

Now here&#39;s the function that initializes an instance (not correct terminology but it&#39;s how I know it as) of the PLAYER structure:</p><div class="source-code"><div class="toolbar"></div><div class="inner"><table width="100%"><tbody><tr><td class="number">1</td><td><span class="k1">void</span> init_player<span class="k2">(</span>PLAYER <span class="k3">*</span>player<span class="k2">)</span><span class="k2">{</span></td></tr><tr><td class="number">2</td><td>    player <span class="k3">=</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_551.html" target="_blank">malloc</a><span class="k2">(</span><span class="k1">sizeof</span><span class="k2">(</span>PLAYER<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">3</td><td>    player-&gt;current_weapon <span class="k3">=</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_551.html" target="_blank">malloc</a><span class="k2">(</span><span class="k1">sizeof</span><span class="k2">(</span>WEAPON<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">4</td><td>    player-&gt;current_armor <span class="k3">=</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_551.html" target="_blank">malloc</a><span class="k2">(</span><span class="k1">sizeof</span><span class="k2">(</span>ARMOR<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">5</td><td>    player-&gt;current_accessory <span class="k3">=</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_551.html" target="_blank">malloc</a><span class="k2">(</span><span class="k1">sizeof</span><span class="k2">(</span>ACCESSORY<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">6</td><td>    player-&gt;sprite <span class="k3">=</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_551.html" target="_blank">malloc</a><span class="k2">(</span><span class="k1">sizeof</span><span class="k2">(</span>SPRITE<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span></td></tr><tr><td class="number">7</td><td>    </td></tr><tr><td class="number">8</td><td>    player-&gt;name <span class="k3">=</span> <span class="s">"Greg"</span><span class="k2">;</span></td></tr><tr><td class="number">9</td><td>    player-&gt;sprite-&gt;x <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">10</td><td>    player-&gt;sprite-&gt;y <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">11</td><td>    player-&gt;sprite-&gt;width <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">12</td><td>    player-&gt;sprite-&gt;height <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">13</td><td>    player-&gt;sprite-&gt;xspeed <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">14</td><td>    player-&gt;sprite-&gt;yspeed <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">15</td><td>    player-&gt;sprite-&gt;xcount <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">16</td><td>    player-&gt;sprite-&gt;ycount <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">17</td><td>    player-&gt;sprite-&gt;xdelay <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">18</td><td>    player-&gt;sprite-&gt;ydelay <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">19</td><td>    player-&gt;sprite-&gt;framecount <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">20</td><td>    player-&gt;sprite-&gt;framedelay <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">21</td><td>    player-&gt;sprite-&gt;curframe <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">22</td><td>    player-&gt;sprite-&gt;maxframe <span class="k3">=</span> <span class="n">0</span><span class="k2">;</span></td></tr><tr><td class="number">23</td><td>    player-&gt;sprite-&gt;animdir <span class="k3">=</span> <span class="n">1</span><span class="k2">;</span></td></tr><tr><td class="number">24</td><td>    player-&gt;sprite-&gt;alive <span class="k3">=</span> <span class="n">1</span><span class="k2">;</span></td></tr><tr><td class="number">25</td><td>    player-&gt;current_weapon-&gt;name <span class="k3">=</span> <span class="s">"Wooden Sword"</span><span class="k2">;</span></td></tr><tr><td class="number">26</td><td>    player-&gt;current_weapon-&gt;desc <span class="k3">=</span> <span class="s">"A simple wooden sword"</span><span class="k2">;</span></td></tr><tr><td class="number">27</td><td>    player-&gt;current_weapon-&gt;icon <span class="k3">=</span> <span class="s">'\0'</span><span class="k2">;</span></td></tr><tr><td class="number">28</td><td>    player-&gt;current_armor-&gt;name <span class="k3">=</span> <span class="s">"Leather Vest"</span><span class="k2">;</span></td></tr><tr><td class="number">29</td><td>    player-&gt;current_armor-&gt;desc <span class="k3">=</span> <span class="s">"A basic vest that looks worn"</span><span class="k2">;</span></td></tr><tr><td class="number">30</td><td>    player-&gt;current_armor-&gt;icon <span class="k3">=</span> <span class="s">'\0'</span><span class="k2">;</span></td></tr><tr><td class="number">31</td><td>    player-&gt;current_accessory-&gt;name <span class="k3">=</span> <span class="s">"Bandana"</span><span class="k2">;</span></td></tr><tr><td class="number">32</td><td>    player-&gt;current_accessory-&gt;desc <span class="k3">=</span> <span class="s">"A white bandana worn by all young boys"</span><span class="k2">;</span></td></tr><tr><td class="number">33</td><td>    player-&gt;current_accessory-&gt;icon <span class="k3">=</span> <span class="s">'\0'</span><span class="k2">;</span></td></tr><tr><td class="number">34</td><td><span class="k2">}</span></td></tr></tbody></table></div></div><p>

Now here&#39;s the function that displays the information on the player. I was just getting here doing one line at a time for errors so that&#39;s why it&#39;s as small as it is:</p><div class="source-code snippet"><div class="inner"><pre><span class="k1">void</span> print_player_information<span class="k2">(</span>PLAYER <span class="k3">*</span>player<span class="k2">)</span><span class="k2">{</span>
    <a href="http://www.allegro.cc/manual/acquire_bitmap" target="_blank"><span class="a">acquire_bitmap</span></a><span class="k2">(</span>buffer<span class="k2">)</span><span class="k2">;</span>
    <a href="http://www.allegro.cc/manual/textprintf_ex" target="_blank"><span class="a">textprintf_ex</span></a><span class="k2">(</span>buffer, <a href="http://www.allegro.cc/manual/font" target="_blank"><span class="a">font</span></a>, <span class="n">0</span>, <span class="n">0</span>, WHITE, <span class="k3">-</span><span class="n">1</span>, <span class="s">"Player Information"</span><span class="k2">)</span><span class="k2">;</span>
    <a href="http://www.allegro.cc/manual/textprintf_ex" target="_blank"><span class="a">textprintf_ex</span></a><span class="k2">(</span>buffer, <a href="http://www.allegro.cc/manual/font" target="_blank"><span class="a">font</span></a>, <span class="n">0</span>, <span class="n">10</span>, WHITE, <span class="k3">-</span><span class="n">1</span>, <span class="s">"Name: %s"</span>, <span class="k3">&amp;</span>player-&gt;name<span class="k2">)</span><span class="k2">;</span>
    <a href="http://www.allegro.cc/manual/release_bitmap" target="_blank"><span class="a">release_bitmap</span></a><span class="k2">(</span>buffer<span class="k2">)</span><span class="k2">;</span>
<span class="k2">}</span>
</pre></div></div><p>

The code doesn&#39;t generate errors when compiled... and the program even runs. But instead of the name, I get a bunch of random characters. How do I fix this?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (xmltorrent)</author>
		<pubDate>Sun, 18 Feb 2007 09:20:48 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Shouldn&#39;t it just be
</p><div class="source-code snippet"><div class="inner"><pre><a href="http://www.allegro.cc/manual/textprintf_ex" target="_blank"><span class="a">textprintf_ex</span></a><span class="k2">(</span>buffer, <a href="http://www.allegro.cc/manual/font" target="_blank"><span class="a">font</span></a>, <span class="n">0</span>, <span class="n">10</span>, WHITE, <span class="k3">-</span><span class="n">1</span>, <span class="s">"Name: %s"</span>, player-&gt;name<span class="k2">)</span><span class="k2">;</span>
</pre></div></div><p>
?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Matthew Dalrymple)</author>
		<pubDate>Sun, 18 Feb 2007 09:33:12 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>No because the %s modifier looks for an address.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (xmltorrent)</author>
		<pubDate>Sun, 18 Feb 2007 09:45:51 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p><span class="source-code"><span class="k1">char</span><span class="k3">*</span></span> is already an address. You&#39;re passing an address to an address. Beyond that, you&#39;re allocating a local &#39;player&#39; pointer, but never giving that pointer back for the rest of the program.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Kitty Cat)</author>
		<pubDate>Sun, 18 Feb 2007 09:51:57 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Suggestion as to what I should do?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (xmltorrent)</author>
		<pubDate>Sun, 18 Feb 2007 10:13:49 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="source-code snippet"><div class="inner"><pre>PLAYER <span class="k3">*</span>init_player<span class="k2">(</span><span class="k1">void</span><span class="k2">)</span><span class="k2">{</span>
  <span class="c">// ...</span>

  <span class="k1">return</span> player<span class="k2">;</span>
<span class="k2">}</span>

player <span class="k3">=</span> init_player<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
</pre></div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Matthew Leverton)</author>
		<pubDate>Sun, 18 Feb 2007 10:15:45 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Remove the &amp; symbol from your textprintf_ex() statement and you&#39;ll be fine.</p><p>I exclusively use the variety of printf statements available in Allegro and C/C++. I don&#39;t actually know how to use cout or Allegro&#39;s textout functions. <img src="http://www.allegro.cc/forums/smileys/rolleyes.gif" alt="::)" /></p><p>--- Kris Asick (Gemini)<br />--- <a href="http://www.pixelships.com">http://www.pixelships.com</a>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Kris Asick)</author>
		<pubDate>Sun, 18 Feb 2007 13:32:34 +0000</pubDate>
	</item>
</rss>
