<?xml version="1.0"?>
<rss version="2.0">
	<channel>
		<title>Reading from a binary file</title>
		<link>http://www.allegro.cc/forums/view/613258</link>
		<description>Allegro.cc Forum Thread</description>
		<webMaster>matthew@allegro.cc (Matthew Leverton)</webMaster>
		<lastBuildDate>Sat, 14 Sep 2013 16:09:33 +0000</lastBuildDate>
	</channel>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>I&#39;m fairly new to C++ as a whole and despite it being pretty straight forward, I am having trouble wrapping my head around binary files. In my practice program I&#39;m saving program settings (width and height) to a binary file and then reading them (to load them). The saving part looks like this:
</p><div class="source-code snippet"><div class="inner"><pre><span class="k1">int</span> width <span class="k3">=</span> <span class="n">640</span>, height <span class="k3">=</span> <span class="n">480</span><span class="k2">;</span>
myfile.write<span class="k2">(</span> <span class="k1">reinterpret_cast</span><span class="k3">&lt;</span><span class="k1">const</span> <span class="k1">char</span><span class="k3">*</span><span class="k3">&gt;</span><span class="k2">(</span><span class="k3">&amp;</span>width<span class="k2">)</span>, <span class="k1">sizeof</span><span class="k2">(</span>width<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
myfile.write<span class="k2">(</span> <span class="k1">reinterpret_cast</span><span class="k3">&lt;</span><span class="k1">const</span> <span class="k1">char</span><span class="k3">*</span><span class="k3">&gt;</span><span class="k2">(</span><span class="k3">&amp;</span>height<span class="k2">)</span>, <span class="k1">sizeof</span><span class="k2">(</span>height<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
</pre></div></div><p>
As far as I can tell this part works just fine. Opening the file in notepad shows that it saves as (extended characters).</p><p>I&#39;m having trouble reading the file though. I read it with this code:
</p><div class="source-code snippet"><div class="inner"><pre>        ifstream::pos_type size<span class="k2">;</span>
        size <span class="k3">=</span> myifile.tellg<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
        <span class="k1">char</span><span class="k3">*</span> memblock<span class="k2">;</span>
        memblock <span class="k3">=</span> <span class="k1">new</span> <span class="k1">char</span> <span class="k2">[</span>size<span class="k2">]</span><span class="k2">;</span>
        myifile.seekg<span class="k2">(</span> <span class="n">0</span>, ios::beg<span class="k2">)</span><span class="k2">;</span>
        myifile.read<span class="k2">(</span> memblock, size<span class="k2">)</span><span class="k2">;</span>
        myifile.close<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
</pre></div></div><p>
and then I assume the entire file is saved to memblock so I attempt to parse that by reading (*memblock) and (*(memblock + 1)). However, this shows me that those two values are 96 and 45.</p><p>I&#39;m pretty sure it&#39;s my parsing that&#39;s incorrect but I&#39;m not sure how to amend this.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (AmnesiA)</author>
		<pubDate>Sat, 14 Sep 2013 07:25:14 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>memblock is a pointer to char, and chars are typically one byte. And you&#39;re saving integers with are likely 4 bytes. So what you&#39;re getting are the first two bytes of the first thing you wrote.</p><p>One way to fix it would be making memblock a pointer to integers and allocating two integers ( <span class="source-code"><span class="k1">new</span> <span class="k1">int</span> <span class="k2">[</span><span class="n">2</span><span class="k2">]</span></span> or <span class="source-code"><span class="k1">new</span> <span class="k1">int</span> <span class="k2">[</span>size <span class="k3">/</span> <span class="k1">sizeof</span><span class="k2">(</span><span class="k1">int</span><span class="k2">)</span><span class="k2">]</span></span> ). Now using <span class="source-code"><span class="k3">*</span>memblock</span> and <span class="source-code"><span class="k3">*</span><span class="k2">(</span>memblock<span class="k3">+</span><span class="n">1</span><span class="k2">)</span></span> will work.</p><p>You&#39;ll want to look into endianness though. make sure you&#39;re writing/reading numbers to the file in the same format regardless of platform.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Thomas Fjellstrom)</author>
		<pubDate>Sat, 14 Sep 2013 08:27:15 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>For all of this file writing/reading the arguments require a <span class="source-code"><span class="k1">char</span><span class="k3">*</span></span> but if I&#39;m only writing characters what&#39;s the advantage to using binary over a text file? I saw that <span class="source-code"><span class="k1">reinterpret_cast</span></span> isn&#39;t portable so that causes problems so what&#39;s the other option for writing an integer or other data type to a binary file?</p><p>I think knowing that would solve my other problem which is that reading the file also requires a <span class="source-code"><span class="k1">char</span><span class="k3">*</span></span> and I can&#39;t get it to read the original values that I entered. If I <span class="source-code"><span class="k1">reinterpret_cast</span><span class="k3">&lt;</span><span class="k1">char</span><span class="k3">*</span><span class="k3">&gt;</span><span class="k2">(</span>memblock<span class="k2">)</span></span> then the two integer values that memblock gives me are random garbage values.</p><div class="source-code snippet"><div class="inner"><pre>        ifstream::pos_type size<span class="k2">;</span>
        size <span class="k3">=</span> myifile.tellg<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
        <span class="k1">int</span><span class="k3">*</span> memblock<span class="k2">;</span>
        memblock <span class="k3">=</span> <span class="k1">new</span> <span class="k1">int</span> <span class="k2">[</span>size <span class="k3">/</span> <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>
        myifile.seekg<span class="k2">(</span> <span class="n">0</span>, ios::beg<span class="k2">)</span><span class="k2">;</span>
        myifile.read<span class="k2">(</span> <span class="k1">reinterpret_cast</span><span class="k3">&lt;</span><span class="k1">char</span><span class="k3">*</span><span class="k3">&gt;</span><span class="k2">(</span>memblock<span class="k2">)</span>, size<span class="k2">)</span><span class="k2">;</span>
        cout <span class="k3">&lt;</span><span class="k3">&lt;</span> memblock<span class="k2">[</span><span class="n">1</span><span class="k2">]</span> <span class="k3">&lt;</span><span class="k3">&lt;</span> endl<span class="k2">;</span>
        myifile.close<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
        cout <span class="k3">&lt;</span><span class="k3">&lt;</span> memblock<span class="k2">[</span><span class="n">0</span><span class="k2">]</span> <span class="k3">&lt;</span><span class="k3">&lt;</span> <span class="s">" | "</span> <span class="k3">&lt;</span><span class="k3">&lt;</span> memblock<span class="k2">[</span><span class="n">1</span><span class="k2">]</span> <span class="k3">&lt;</span><span class="k3">&lt;</span> endl<span class="k2">;</span>
</pre></div></div><p>

<b>tl;dr</b> How do I read/write integer values to a binary file when the functions require char*?
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (AmnesiA)</author>
		<pubDate>Sat, 14 Sep 2013 10:49:04 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title"><a href="http://www.allegro.cc/forums/thread/613258/990019#target">AmnesiA</a> said:</div><div class="quote"><p>For all of this file writing/reading the arguments require a char* but if I&#39;m only writing characters what&#39;s the advantage to using binary over a text file? </p></div></div><p>A char is just a data storage type. It&#39;s equal to one byte, which is the smallest addressable component in most modern systems. When those functions use char, they do not care what you send to it, so long as the length is sent properly.</p><p>Assuming your file is 8 bytes or larger, and the file was written in the same way, you code looks like it should work.</p><p>Maybe paste a full runnable simple example of the code that shows the problem.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (Thomas Fjellstrom)</author>
		<pubDate>Sat, 14 Sep 2013 11:08:00 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><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="p">#include&lt;iostream&gt;</span>
<span class="number">  2</span><span class="p">#include&lt;fstream&gt;</span>
<span class="number">  3</span>
<span class="number">  4</span><span class="k1">using</span> <span class="k1">namespace</span> std<span class="k2">;</span>
<span class="number">  5</span>
<span class="number">  6</span><span class="k1">int</span> width, height<span class="k2">;</span>
<span class="number">  7</span><span class="k1">int</span> readwidth, readheight<span class="k2">;</span>
<span class="number">  8</span>
<span class="number">  9</span><span class="k1">int</span> main<span class="k2">(</span><span class="k2">)</span><span class="k2">{</span>
<span class="number"> 10</span>    <span class="c">//File write</span>
<span class="number"> 11</span>    <span class="k1">int</span> width <span class="k3">=</span> <span class="n">640</span>, height <span class="k3">=</span> <span class="n">480</span><span class="k2">;</span>
<span class="number"> 12</span>    cout <span class="k3">&lt;</span><span class="k3">&lt;</span> <span class="s">"Saving settings...\n"</span><span class="k2">;</span>
<span class="number"> 13</span>    ofstream myfile<span class="k2">;</span>
<span class="number"> 14</span>    myfile.open<span class="k2">(</span> <span class="s">"settings.ex"</span>, ios::out <span class="k3">|</span> ios::trunc <span class="k3">|</span> ios::binary<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 15</span>    <span class="k1">if</span><span class="k2">(</span> myfile.is_open<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span><span class="k2">{</span>
<span class="number"> 16</span>        myfile.write<span class="k2">(</span> <span class="k1">reinterpret_cast</span><span class="k3">&lt;</span><span class="k1">const</span> <span class="k1">char</span><span class="k3">*</span><span class="k3">&gt;</span><span class="k2">(</span><span class="k3">&amp;</span>width<span class="k2">)</span>, <span class="k1">sizeof</span><span class="k2">(</span>width<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 17</span>        myfile.write<span class="k2">(</span> <span class="k1">reinterpret_cast</span><span class="k3">&lt;</span><span class="k1">const</span> <span class="k1">char</span><span class="k3">*</span><span class="k3">&gt;</span><span class="k2">(</span><span class="k3">&amp;</span>height<span class="k2">)</span>, <span class="k1">sizeof</span><span class="k2">(</span>height<span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 18</span>        myfile.close<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 19</span>        cout <span class="k3">&lt;</span><span class="k3">&lt;</span> <span class="s">"Complete!\n"</span><span class="k2">;</span>
<span class="number"> 20</span>    <span class="k2">}</span><span class="k1">else</span><span class="k2">{</span>
<span class="number"> 21</span>        cout <span class="k3">&lt;</span><span class="k3">&lt;</span> <span class="s">"WARNING: Unable to save settings!\n"</span><span class="k2">;</span>
<span class="number"> 22</span>    <span class="k2">}</span>
<span class="number"> 23</span>
<span class="number"> 24</span>    <span class="c">//File read</span>
<span class="number"> 25</span>    cout <span class="k3">&lt;</span><span class="k3">&lt;</span> <span class="s">"\nReading settings...\n"</span><span class="k2">;</span>
<span class="number"> 26</span>    ifstream myifile<span class="k2">;</span>
<span class="number"> 27</span>    myifile.open<span class="k2">(</span> <span class="s">"settings.ex"</span>, ios::in <span class="k3">|</span> ios::binary<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 28</span>    <span class="k1">if</span><span class="k2">(</span> myifile.is_open<span class="k2">(</span><span class="k2">)</span><span class="k2">)</span><span class="k2">{</span>
<span class="number"> 29</span>        ifstream::pos_type size<span class="k2">;</span>
<span class="number"> 30</span>        size <span class="k3">=</span> myifile.tellg<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 31</span>        <span class="k1">int</span><span class="k3">*</span> memblock<span class="k2">;</span>
<span class="number"> 32</span>        memblock <span class="k3">=</span> <span class="k1">new</span> <span class="k1">int</span> <span class="k2">[</span>size <span class="k3">/</span> <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"> 33</span>        myifile.seekg<span class="k2">(</span> <span class="n">0</span>, ios::beg<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 34</span>        myifile.read<span class="k2">(</span> <span class="k1">reinterpret_cast</span><span class="k3">&lt;</span><span class="k1">char</span><span class="k3">*</span><span class="k3">&gt;</span><span class="k2">(</span>memblock<span class="k2">)</span>, size<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 35</span>        myifile.close<span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 36</span>        cout <span class="k3">&lt;</span><span class="k3">&lt;</span> memblock<span class="k2">[</span><span class="n">0</span><span class="k2">]</span> <span class="k3">&lt;</span><span class="k3">&lt;</span> <span class="s">" | "</span> <span class="k3">&lt;</span><span class="k3">&lt;</span> memblock<span class="k2">[</span><span class="n">1</span><span class="k2">]</span> <span class="k3">&lt;</span><span class="k3">&lt;</span> endl<span class="k2">;</span>
<span class="number"> 37</span>    <span class="k2">}</span><span class="k1">else</span><span class="k2">{</span>
<span class="number"> 38</span>        cout <span class="k3">&lt;</span><span class="k3">&lt;</span> <span class="s">"WARNING: Unable to read settings!\n"</span><span class="k2">;</span>
<span class="number"> 39</span>    <span class="k2">}</span>
<span class="number"> 40</span>
<span class="number"> 41</span>    <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 42</span><span class="k2">}</span>
</div></div><p>
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (AmnesiA)</author>
		<pubDate>Sat, 14 Sep 2013 11:24:21 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p><s>I admit that I have no idea </s><span class="ref"><sup>[<a href="#">1</a>]</sup></span> <s>why that code doesn&#39;t work. But I did whip something together that does work.</s></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="p">#include &lt;errno.h&gt;</span>
<span class="number">  2</span><span class="p">#include &lt;string.h&gt;</span>
<span class="number">  3</span><span class="p">#include &lt;stdio.h&gt;</span>
<span class="number">  4</span><span class="p">#include &lt;allegro5/allegro5.h&gt;</span>
<span class="number">  5</span>
<span class="number">  6</span>
<span class="number">  7</span><span class="k1">int</span> main<span class="k2">(</span><span class="k1">int</span> argc, <span class="k1">char</span> <span class="k3">*</span><span class="k3">*</span>argv<span class="k2">)</span>
<span class="number">  8</span><span class="k2">{</span>
<span class="number">  9</span>  <a href="http://www.allegro.cc/manual/ALLEGRO_FILE"><span class="a">ALLEGRO_FILE</span></a> <span class="k3">*</span>f <span class="k3">=</span> NULL<span class="k2">;</span>
<span class="number"> 10</span>  <span class="k1">int</span> data<span class="k2">[</span><span class="k2">]</span> <span class="k3">=</span> <span class="k2">{</span> <span class="n">1234</span>, <span class="n">5678</span> <span class="k2">}</span><span class="k2">;</span>
<span class="number"> 11</span>
<span class="number"> 12</span>  <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">"data: %i, %i\n"</span>, data<span class="k2">[</span><span class="n">0</span><span class="k2">]</span>, data<span class="k2">[</span><span class="n">1</span><span class="k2">]</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 13</span>
<span class="number"> 14</span>  <a href="http://www.allegro.cc/manual/al_init"><span class="a">al_init</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 15</span>
<span class="number"> 16</span>  f <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_fopen"><span class="a">al_fopen</span></a><span class="k2">(</span><span class="s">"settings.ex"</span>, <span class="s">"w"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 17</span>  <span class="k1">if</span><span class="k2">(</span><span class="k3">!</span>f<span class="k2">)</span>
<span class="number"> 18</span>  <span class="k2">{</span>
<span class="number"> 19</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">"Failed to open file for writing: %s\n"</span>, <a href="http://www.delorie.com/djgpp/doc/libc/libc_759.html" target="_blank">strerror</a><span class="k2">(</span><a href="http://www.allegro.cc/manual/al_get_errno"><span class="a">al_get_errno</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 20</span>    <span class="k1">return</span> <span class="k3">-</span><span class="n">1</span><span class="k2">;</span>
<span class="number"> 21</span>  <span class="k2">}</span>
<span class="number"> 22</span>
<span class="number"> 23</span>  <span class="k1">if</span><span class="k2">(</span><a href="http://www.allegro.cc/manual/al_fwrite32le"><span class="a">al_fwrite32le</span></a><span class="k2">(</span>f, data<span class="k2">[</span><span class="n">0</span><span class="k2">]</span><span class="k2">)</span> <span class="k3">!</span><span class="k3">=</span> <span class="k1">sizeof</span><span class="k2">(</span>data<span class="k2">[</span><span class="n">0</span><span class="k2">]</span><span class="k2">)</span><span class="k2">)</span>
<span class="number"> 24</span>  <span class="k2">{</span>
<span class="number"> 25</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">"failed to write data[0] to file: %s\n"</span>, <a href="http://www.delorie.com/djgpp/doc/libc/libc_759.html" target="_blank">strerror</a><span class="k2">(</span><a href="http://www.allegro.cc/manual/al_get_errno"><span class="a">al_get_errno</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 26</span>    <span class="k1">return</span> <span class="k3">-</span><span class="n">1</span><span class="k2">;</span>
<span class="number"> 27</span>  <span class="k2">}</span>
<span class="number"> 28</span>
<span class="number"> 29</span>  <span class="k1">if</span><span class="k2">(</span><a href="http://www.allegro.cc/manual/al_fwrite32le"><span class="a">al_fwrite32le</span></a><span class="k2">(</span>f, data<span class="k2">[</span><span class="n">1</span><span class="k2">]</span><span class="k2">)</span> <span class="k3">!</span><span class="k3">=</span> <span class="k1">sizeof</span><span class="k2">(</span>data<span class="k2">[</span><span class="n">1</span><span class="k2">]</span><span class="k2">)</span><span class="k2">)</span>
<span class="number"> 30</span>  <span class="k2">{</span>
<span class="number"> 31</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">"failed to write data[1] to file: %s\n"</span>, <a href="http://www.delorie.com/djgpp/doc/libc/libc_759.html" target="_blank">strerror</a><span class="k2">(</span><a href="http://www.allegro.cc/manual/al_get_errno"><span class="a">al_get_errno</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 32</span>    <span class="k1">return</span> <span class="k3">-</span><span class="n">1</span><span class="k2">;</span>
<span class="number"> 33</span>  <span class="k2">}</span>
<span class="number"> 34</span>
<span class="number"> 35</span>  <a href="http://www.allegro.cc/manual/al_fclose"><span class="a">al_fclose</span></a><span class="k2">(</span>f<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 36</span>
<span class="number"> 37</span>  f <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_fopen"><span class="a">al_fopen</span></a><span class="k2">(</span><span class="s">"settings.ex"</span>, <span class="s">"r"</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 38</span>  <span class="k1">if</span><span class="k2">(</span><span class="k3">!</span>f<span class="k2">)</span>
<span class="number"> 39</span>  <span class="k2">{</span>
<span class="number"> 40</span>    <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">"failed to open file for reading: %s\n"</span>, <a href="http://www.delorie.com/djgpp/doc/libc/libc_759.html" target="_blank">strerror</a><span class="k2">(</span><a href="http://www.allegro.cc/manual/al_get_errno"><span class="a">al_get_errno</span></a><span class="k2">(</span><span class="k2">)</span><span class="k2">)</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 41</span>    <span class="k1">return</span> <span class="k3">-</span><span class="n">1</span><span class="k2">;</span>
<span class="number"> 42</span>  <span class="k2">}</span>
<span class="number"> 43</span>
<span class="number"> 44</span>  data<span class="k2">[</span><span class="n">0</span><span class="k2">]</span> <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_fread32le"><span class="a">al_fread32le</span></a><span class="k2">(</span>f<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 45</span>  data<span class="k2">[</span><span class="n">1</span><span class="k2">]</span> <span class="k3">=</span> <a href="http://www.allegro.cc/manual/al_fread32le"><span class="a">al_fread32le</span></a><span class="k2">(</span>f<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 46</span>
<span class="number"> 47</span>  <a href="http://www.allegro.cc/manual/al_fclose"><span class="a">al_fclose</span></a><span class="k2">(</span>f<span class="k2">)</span><span class="k2">;</span>
<span class="number"> 48</span>
<span class="number"> 49</span>  <a href="http://www.delorie.com/djgpp/doc/libc/libc_624.html" target="_blank">printf</a><span class="k2">(</span><span class="s">"data: %i, %i\n"</span>, data<span class="k2">[</span><span class="n">0</span><span class="k2">]</span>, data<span class="k2">[</span><span class="n">1</span><span class="k2">]</span><span class="k2">)</span><span class="k2">;</span>
<span class="number"> 50</span>  <span class="k1">return</span> <span class="n">0</span><span class="k2">;</span>
<span class="number"> 51</span><span class="k2">}</span>
</div></div><p>

And due to using the allegro specific integer read/write functions, you don&#39;t have to worry about twiddling bits to make sure your integers are saved and loaded properly.</p><p>Checking for errors from the <span class="source-code"><a href="http://www.allegro.cc/manual/al_fread32le"><span class="a">al_fread32le</span></a></span> calls is left as an exercise for the reader.</p><p>Append:</p><p>I figured it out. You&#39;re calling tellg <span class="ref"><sup>[<a href="#">2</a>]</sup></span>, but you never actually seeked to the end of the file with <span class="source-code">myifile.seekg<span class="k2">(</span><span class="n">0</span>, ostream::end<span class="k2">)</span></span> or whatever.
</p><div class="ref-block"><h2>References</h2><ol><li>other than not using iostreams much at all</li><li>which gets the <i>current</i> read or write pos in the file</li></ol></div></div>]]>
		</description>
		<author>no-reply@allegro.cc (Thomas Fjellstrom)</author>
		<pubDate>Sat, 14 Sep 2013 12:53:02 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><p>Ohhhh duhh. Thank you, and I appreciate the alternate method using allegro, much more helpful than I was expecting!
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (AmnesiA)</author>
		<pubDate>Sat, 14 Sep 2013 13:00:51 +0000</pubDate>
	</item>
	<item>
		<description><![CDATA[<div class="mockup v2"><div class="quote_container"><div class="title"><a href="http://www.allegro.cc/forums/thread/613258/990024#target">AmnesiA</a> said:</div><div class="quote"><p> Thank you, and I appreciate the alternate method using allegro, much more helpful than I was expecting!</p></div></div><p>Allegro&#39;s routines are very useful, since they take care of endianness for you.
</p></div>]]>
		</description>
		<author>no-reply@allegro.cc (LennyLen)</author>
		<pubDate>Sat, 14 Sep 2013 16:09:33 +0000</pubDate>
	</item>
</rss>
