<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>to dumb to read a string</title>
		<link>http://www.allegro.cc/forums/view/608504</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Mon, 03 Oct 2011 22:02:41 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Hi,</p><p>my problem is that I&#39;ve got a file in which I&#39;ve written a string and two integers and I&#39;m trying to read them with this function:</p><div class="source-code"><div class="toolbar"><span class="button numbers"><b>#</b></span><span class="button select">Select</span><span class="button expand">Expand</span></div><div class="inner"><span class="number">  1</span><span class="k1">void</span> <a href="http://www.delorie.com/djgpp/doc/libc/libc_642.html" target="_blank">read</a><span class="k2">(</span><span class="k1">char</span><span class="k3">*</span> path<span class="k2">)</span><span class="k2">{</span>
<span class="number">  2</span>   file<span class="k3">=</span><a href="http://www.allegro.cc/manual/al_fopen"><span class="a">al_fopen</span></a><span class="k2">(</span>path,<span class="s">"r"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number">  3</span>
<span class="number">  4</span>      <span class="k1">char</span> str<span class="k2">[</span><span class="n">256</span><span class="k2">]</span><span class="k2">;</span>
<span class="number">  5</span>      <span class="k1">int</span> mapx, mapy<span class="k2">;</span>
<span class="number">  6</span>
<span class="number">  7</span>      <span class="c">//string</span>
<span class="number">  8</span>      <span class="k1">int</span> i<span class="k3">=</span><span class="k3">-</span><span class="n">1</span><span class="k2">;</span>
<span class="number">  9</span>      <span class="k1">do</span><span class="k2">{</span>
<span class="number"> 10</span>         i<span class="k3">+</span><span class="k3">+</span><span class="k2">;</span>
<span class="number"> 11</span>         <a href="http://www.allegro.cc/manual/al_fread"><span class="a">al_fread</span></a><span class="k2">(</span>file,<span class="k3">&amp;</span>str<span class="k2">[</span>i<span class="k2">]</span>,<span class="k1">sizeof</span><span class="k2">(</span><span class="k1">char</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 12</span>      <span class="k2">}</span><span class="k1">while</span><span class="k2">(</span>str<span class="k2">[</span>i<span class="k2">]</span><span class="k3">!</span><span class="k3">=</span><span class="s">'\0'</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 13</span>
<span class="number"> 14</span>      <span class="c">//2 integers</span>
<span class="number"> 15</span>      <a href="http://www.allegro.cc/manual/al_fread"><span class="a">al_fread</span></a><span class="k2">(</span>file,<span class="k3">&amp;</span>mapx,<span class="k1">sizeof</span><span class="k2">(</span><span class="k1">int</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 16</span>      <a href="http://www.allegro.cc/manual/al_fread"><span class="a">al_fread</span></a><span class="k2">(</span>file,<span class="k3">&amp;</span>mapy,<span class="k1">sizeof</span><span class="k2">(</span><span class="k1">int</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 17</span>
<span class="number"> 18</span>   <a href="http://www.allegro.cc/manual/al_fclose"><span class="a">al_fclose</span></a><span class="k2">(</span>file<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 19</span><span class="k2">}</span>
</div></div><p>

but it seems that my solution to read a string takes one byte more from the file as it should and so my string is &quot;tiles1.bmpd&quot; instead of &quot;tiles1.bmp&quot; and the following ints have the values 6553600 and 0 instead of 100 and 100.</p><p>Does anyone have a better solution for reading strings?</p><p>thanks for all answers <img src="http://www.allegro.cc/forums/smileys/smiley.gif" alt=":)" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (knudel)</author>
		<pubDate>Sun, 02 Oct 2011 23:51:38 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Let me get this straight, the file has a null terminated string followed immediately by two binary integers?  The ints aren&#39;t in ASCII?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Arthur Kalliokoski)</author>
		<pubDate>Sun, 02 Oct 2011 23:55:23 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I think I&#39;m thinking along the same lines as Arthur. My guess is you didn&#39;t null terminate, or you had \n in the file before the 0.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Trent Gamblin)</author>
		<pubDate>Mon, 03 Oct 2011 00:26:10 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Damn, I&#39;m sorry.<br />I used al_fwrite(file,string,strlen(string)) and not al_fwrite(file,string,strlen(string)+1) to write the string in the file so the &#39;\0&#39;-charakter was missing.</p><p>Thanks for the hint <img src="http://www.allegro.cc/forums/smileys/smiley.gif" alt=":)" />
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (knudel)</author>
		<pubDate>Mon, 03 Oct 2011 01:10:16 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Just so you know, read ints from a file 4 bytes at a time with fread isn&#39;t portable. Allegro has functions such as al_fread32le for this purpose.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Trent Gamblin)</author>
		<pubDate>Mon, 03 Oct 2011 01:51:56 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>thanks <img src="http://www.allegro.cc/forums/smileys/cheesy.gif" alt=":D" /><br />So al_fread32le would work on all platforms correct?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (knudel)</author>
		<pubDate>Mon, 03 Oct 2011 20:24:21 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>If you use that and write32le every time on all platforms then it will work.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Trent Gamblin)</author>
		<pubDate>Mon, 03 Oct 2011 22:02:41 +0000</pubDate>
	</item>
</rss>
