<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>Pointers to variables inside a struct</title>
		<link>http://www.allegro.cc/forums/view/577386</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Thu, 06 Apr 2006 05:51:03 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I have no idea how to use pack_fread() with variables inside a struct.</p><p>The code below illustrates one of my tries on how to do that, however it does not work :/</p><div class="source-code snippet"><div class="inner"><pre><span class="k1">void</span> vsp_map_load<span class="k2">(</span><span class="k1">char</span> <span class="k3">*</span>filename<span class="k2">)</span>
<span class="k2">{</span>
    <a href="http://www.allegro.cc/manual/PACKFILE" target="_blank"><span class="a">PACKFILE</span></a> <span class="k3">*</span>rFile<span class="k2">;</span>
    rFile <span class="k3">=</span> <a href="http://www.allegro.cc/manual/pack_fopen" target="_blank"><span class="a">pack_fopen</span></a><span class="k2">(</span>filename, <span class="s">"r"</span><span class="k2">)</span><span class="k2">;</span>
    <span class="k1">int</span> name_len, tileset_len<span class="k2">;</span>
    <a href="http://www.allegro.cc/manual/pack_fread" target="_blank"><span class="a">pack_fread</span></a><span class="k2">(</span><span class="k3">&amp;</span>name_len, <span class="k1">sizeof</span><span class="k2">(</span><span class="k1">int</span><span class="k2">)</span>, rFile<span class="k2">)</span><span class="k2">;</span>
    <a href="http://www.allegro.cc/manual/pack_fread" target="_blank"><span class="a">pack_fread</span></a><span class="k2">(</span><span class="k3">&amp;</span><span class="k2">(</span>vsp_map.name<span class="k2">)</span>, name_len <span class="k3">*</span> <span class="k1">sizeof</span><span class="k2">(</span><span class="k1">char</span><span class="k2">)</span>, rFile<span class="k2">)</span><span class="k2">;</span>
    <a href="http://www.allegro.cc/manual/pack_fread" target="_blank"><span class="a">pack_fread</span></a><span class="k2">(</span><span class="k3">&amp;</span>tileset_len, <span class="k1">sizeof</span><span class="k2">(</span><span class="k1">int</span><span class="k2">)</span>, rFile<span class="k2">)</span><span class="k2">;</span>
    <a href="http://www.allegro.cc/manual/pack_fread" target="_blank"><span class="a">pack_fread</span></a><span class="k2">(</span><span class="k3">&amp;</span><span class="k2">(</span>vsp_map.tileset<span class="k2">)</span>, tileset_len <span class="k3">*</span> <span class="k1">sizeof</span><span class="k2">(</span><span class="k1">char</span><span class="k2">)</span>, rFile<span class="k2">)</span><span class="k2">;</span>
    <a href="http://www.allegro.cc/manual/pack_fread" target="_blank"><span class="a">pack_fread</span></a><span class="k2">(</span><span class="k3">&amp;</span><span class="k2">(</span>vsp_map.w<span class="k2">)</span>, <span class="k1">sizeof</span><span class="k2">(</span><span class="k1">int</span><span class="k2">)</span>, rFile<span class="k2">)</span><span class="k2">;</span>
    <a href="http://www.allegro.cc/manual/pack_fread" target="_blank"><span class="a">pack_fread</span></a><span class="k2">(</span><span class="k3">&amp;</span><span class="k2">(</span>vsp_map.h<span class="k2">)</span>, <span class="k1">sizeof</span><span class="k2">(</span><span class="k1">int</span><span class="k2">)</span>, rFile<span class="k2">)</span><span class="k2">;</span>
    <a href="http://www.allegro.cc/manual/pack_fread" target="_blank"><span class="a">pack_fread</span></a><span class="k2">(</span><span class="k3">&amp;</span><span class="k2">(</span>vsp_map.tile<span class="k2">)</span>, <span class="k2">(</span>vsp_map.w <span class="k3">*</span> vsp_map.h<span class="k2">)</span> <span class="k3">*</span> <span class="k1">sizeof</span><span class="k2">(</span>TILE<span class="k2">)</span>, rFile<span class="k2">)</span><span class="k2">;</span>
    <a href="http://www.allegro.cc/manual/pack_fclose" target="_blank"><span class="a">pack_fclose</span></a><span class="k2">(</span>rFile<span class="k2">)</span><span class="k2">;</span>
<span class="k2">}</span>
</pre></div></div><p>

Could somebody please tell me the right way of doing this?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (aeger)</author>
		<pubDate>Thu, 06 Apr 2006 05:25:53 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Take off all of the &amp;, and it should work.</p><p>[append]<br />Hmm, on second thought... maybe that isn&#39;t the problem...</p><p>[append]<br />Yes, it is. Take the &amp;s off of the variables which are arrays or pointers, and it will work. Leave them on the others.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (CGamesPlay)</author>
		<pubDate>Thu, 06 Apr 2006 05:35:18 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>What type is vsp_map? Is it a pointer?<br />EDIT:<br />CGames: if that were the case, he should DEFINATELY be getting values for things like w and h
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Synapse Jumps)</author>
		<pubDate>Thu, 06 Apr 2006 05:39:04 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>He didn&#39;t say he wasn&#39;t getting values for things like name_len, w, and h. He just said &quot;does not work&quot; <img src="http://www.allegro.cc/forums/smileys/smiley.gif" alt=":)" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (CGamesPlay)</author>
		<pubDate>Thu, 06 Apr 2006 05:43:05 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>It still errors ;_;</p><div class="source-code snippet"><div class="inner"><pre><span class="k1">void</span> vsp_map_load<span class="k2">(</span><span class="k1">char</span> <span class="k3">*</span>filename<span class="k2">)</span>
<span class="k2">{</span>
    <a href="http://www.allegro.cc/manual/PACKFILE" target="_blank"><span class="a">PACKFILE</span></a> <span class="k3">*</span>rFile<span class="k2">;</span>
    rFile <span class="k3">=</span> <a href="http://www.allegro.cc/manual/pack_fopen" target="_blank"><span class="a">pack_fopen</span></a><span class="k2">(</span>filename, <span class="s">"r"</span><span class="k2">)</span><span class="k2">;</span>
    <span class="k1">int</span> name_len, tileset_len<span class="k2">;</span>
    <a href="http://www.allegro.cc/manual/pack_fread" target="_blank"><span class="a">pack_fread</span></a><span class="k2">(</span><span class="k3">&amp;</span>name_len, <span class="k1">sizeof</span><span class="k2">(</span><span class="k1">int</span><span class="k2">)</span>, rFile<span class="k2">)</span><span class="k2">;</span>
    <a href="http://www.allegro.cc/manual/pack_fread" target="_blank"><span class="a">pack_fread</span></a><span class="k2">(</span>vsp_map.name, name_len <span class="k3">*</span> <span class="k1">sizeof</span><span class="k2">(</span><span class="k1">char</span><span class="k2">)</span>, rFile<span class="k2">)</span><span class="k2">;</span>
    <a href="http://www.allegro.cc/manual/pack_fread" target="_blank"><span class="a">pack_fread</span></a><span class="k2">(</span><span class="k3">&amp;</span>tileset_len, <span class="k1">sizeof</span><span class="k2">(</span><span class="k1">int</span><span class="k2">)</span>, rFile<span class="k2">)</span><span class="k2">;</span>
    <a href="http://www.allegro.cc/manual/pack_fread" target="_blank"><span class="a">pack_fread</span></a><span class="k2">(</span>vsp_map.tileset, tileset_len <span class="k3">*</span> <span class="k1">sizeof</span><span class="k2">(</span><span class="k1">char</span><span class="k2">)</span>, rFile<span class="k2">)</span><span class="k2">;</span>
    <a href="http://www.allegro.cc/manual/pack_fread" target="_blank"><span class="a">pack_fread</span></a><span class="k2">(</span><span class="k3">&amp;</span><span class="k2">(</span>vsp_map.w<span class="k2">)</span>, <span class="k1">sizeof</span><span class="k2">(</span><span class="k1">int</span><span class="k2">)</span>, rFile<span class="k2">)</span><span class="k2">;</span>
    <a href="http://www.allegro.cc/manual/pack_fread" target="_blank"><span class="a">pack_fread</span></a><span class="k2">(</span><span class="k3">&amp;</span><span class="k2">(</span>vsp_map.h<span class="k2">)</span>, <span class="k1">sizeof</span><span class="k2">(</span><span class="k1">int</span><span class="k2">)</span>, rFile<span class="k2">)</span><span class="k2">;</span>
    <a href="http://www.allegro.cc/manual/pack_fread" target="_blank"><span class="a">pack_fread</span></a><span class="k2">(</span>vsp_map.tile, <span class="k2">(</span>vsp_map.w <span class="k3">*</span> vsp_map.h<span class="k2">)</span> <span class="k3">*</span> <span class="k1">sizeof</span><span class="k2">(</span>TILE<span class="k2">)</span>, rFile<span class="k2">)</span><span class="k2">;</span>
    <a href="http://www.allegro.cc/manual/pack_fclose" target="_blank"><span class="a">pack_fclose</span></a><span class="k2">(</span>rFile<span class="k2">)</span><span class="k2">;</span>
<span class="k2">}</span>
</pre></div></div><p>

When I only read the first int it works alright but when I try to read the string it crashes.</p><p>EDIT:</p><p>This is vsp_map:</p><div class="source-code snippet"><div class="inner"><pre><span class="k1">typedef</span> <span class="k1">struct</span> MAP
<span class="k2">{</span>
    <span class="k1">char</span> <span class="k3">*</span>name<span class="k2">;</span>
    <span class="k1">char</span> <span class="k3">*</span>tileset<span class="k2">;</span>
    <span class="k1">int</span> w<span class="k2">;</span>
    <span class="k1">int</span> h<span class="k2">;</span>
    <span class="k1">struct</span> TILE <span class="k3">*</span> tile<span class="k2">;</span>
<span class="k2">}</span>MAP<span class="k2">;</span>

MAP vsp_map<span class="k2">;</span>
</pre></div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (aeger)</author>
		<pubDate>Thu, 06 Apr 2006 05:43:51 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>You forgot to allocate memory for the variables <img src="http://www.allegro.cc/forums/smileys/smiley.gif" alt=":)" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (CGamesPlay)</author>
		<pubDate>Thu, 06 Apr 2006 05:47:01 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Heh. You need to read up on Pointers, my young friend. For things like name and tileset and tile you need to do things first:<br />FIRST you need to find out how long the saved &quot;name&quot; is, then you need to allocate memory for it, then you can read/copy it. Here&#39;s an example:<br />EDIT: Oops, didn&#39;t see you read in the length of the name, new code:
</p><div class="source-code snippet"><div class="inner"><pre>vsp_map.name <span class="k3">=</span> <span class="k1">new</span> <span class="k1">char</span> <span class="k2">[</span> name_len <span class="k3">+</span> <span class="n">1</span> <span class="k2">]</span><span class="k2">;</span> <span class="c">//+1 to allow for null-character</span>
<a href="http://www.allegro.cc/manual/pack_fread" target="_blank"><span class="a">pack_fread</span></a><span class="k2">(</span>vsp_map.name, name_len <span class="k3">*</span> <span class="k1">sizeof</span><span class="k2">(</span><span class="k1">char</span><span class="k2">)</span>, rFile<span class="k2">)</span><span class="k2">;</span>
</pre></div></div><p>
You need to do equivalent stuff for your other pointers.</p><p>Your other data SHOULD be fine. Check everything that ISN&#39;T a pointer and see if you&#39;re getting correct data.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Synapse Jumps)</author>
		<pubDate>Thu, 06 Apr 2006 05:49:46 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>-_-</p><p>I can&#39;t believe it was that simple. Sad thing is, this is the second time this happened to me this week.</p><p>Oh well, hopefully I won&#39;t do it again <img src="http://www.allegro.cc/forums/smileys/grin.gif" alt=";D" /></p><p>Thanks guys
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (aeger)</author>
		<pubDate>Thu, 06 Apr 2006 05:51:03 +0000</pubDate>
	</item>
</rss>
