<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Dateien Block I&#x2F;O Problem]]></title><description><![CDATA[<p>Hallo!</p>
<p>Ich benutze eine Binärdatei quasi als Datenbank, jeder Datensatz ist ein Block fester Größe mit der Datensatznummer als Offset innerhalb dieser Datei.</p>
<p>Zum lesen mache ich folgendes:</p>
<pre><code class="language-cpp">if(fseek( file, position*g_Config.rawRecordSize, SEEK_SET))!=0)
{
   //Fehler...
}
if((rc=fread( buffer, g_Config.rawRecordSize, 1, g_StorageFile))!=1)
{
  if(feof(file))
  {
    logError(&quot;End of file condition&quot;);
  }
  if(ferror(g_StorageFile))
  {
    logError(&quot;I/O error&quot;);
  }
}
</code></pre>
<p>Schreiben funktioniert genauso (seek, und dann write). Nach Schreiboperationen mache ich immer noch ein fflush(), die Datei bleibt aber die ganze Zeit über geöffnet.</p>
<p>Problem: Nun passiert es regelmäßig dass beim fread() ein EndOfFile-Fehler auftritt, zum Beispiel wenn ich erst 2 records einfüge, und diese dann wieder auslese, dann wieder überschreibe und wieder auslese. Mit einem Hexeditor beguckt, ist die Datei aber groß genug und enthält sogar die gewünschten Daten. Was mache ich falsch?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/95473/dateien-block-i-o-problem</link><generator>RSS for Node</generator><lastBuildDate>Sun, 26 Apr 2026 18:21:04 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/95473.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 20 Dec 2004 09:25:37 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Dateien Block I&#x2F;O Problem on Mon, 20 Dec 2004 09:25:37 GMT]]></title><description><![CDATA[<p>Hallo!</p>
<p>Ich benutze eine Binärdatei quasi als Datenbank, jeder Datensatz ist ein Block fester Größe mit der Datensatznummer als Offset innerhalb dieser Datei.</p>
<p>Zum lesen mache ich folgendes:</p>
<pre><code class="language-cpp">if(fseek( file, position*g_Config.rawRecordSize, SEEK_SET))!=0)
{
   //Fehler...
}
if((rc=fread( buffer, g_Config.rawRecordSize, 1, g_StorageFile))!=1)
{
  if(feof(file))
  {
    logError(&quot;End of file condition&quot;);
  }
  if(ferror(g_StorageFile))
  {
    logError(&quot;I/O error&quot;);
  }
}
</code></pre>
<p>Schreiben funktioniert genauso (seek, und dann write). Nach Schreiboperationen mache ich immer noch ein fflush(), die Datei bleibt aber die ganze Zeit über geöffnet.</p>
<p>Problem: Nun passiert es regelmäßig dass beim fread() ein EndOfFile-Fehler auftritt, zum Beispiel wenn ich erst 2 records einfüge, und diese dann wieder auslese, dann wieder überschreibe und wieder auslese. Mit einem Hexeditor beguckt, ist die Datei aber groß genug und enthält sogar die gewünschten Daten. Was mache ich falsch?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/677005</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/677005</guid><dc:creator><![CDATA[batzee]]></dc:creator><pubDate>Mon, 20 Dec 2004 09:25:37 GMT</pubDate></item><item><title><![CDATA[Reply to Dateien Block I&#x2F;O Problem on Mon, 20 Dec 2004 10:11:10 GMT]]></title><description><![CDATA[<p>Vielleicht solltest du feof(g_StorageFile) schreiben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/677033</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/677033</guid><dc:creator><![CDATA[Ringding]]></dc:creator><pubDate>Mon, 20 Dec 2004 10:11:10 GMT</pubDate></item><item><title><![CDATA[Reply to Dateien Block I&#x2F;O Problem on Mon, 20 Dec 2004 10:16:32 GMT]]></title><description><![CDATA[<p>stimmt, aber das ist nur ein Übertragungsfehler zw. meinem Programm und diesem Posting <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /><br />
Es gibt wohl keine Edit-Funktion für unregistrierte?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/677035</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/677035</guid><dc:creator><![CDATA[batzee]]></dc:creator><pubDate>Mon, 20 Dec 2004 10:16:32 GMT</pubDate></item></channel></rss>