<?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[Problem mit fread]]></title><description><![CDATA[<p>Hallo an alle!<br />
Ich habe ein sehr seltsames Problem mit fread:</p>
<p>Ich möchte eine Farbpalette laden (256 Farben, je RGB = 3x unsigned char), die Datei ist exakt 768 Bytes groß, jedoch liest fread aus irgendeinem Grund immer nur ein Teil der Datei (je nach Palettendatei - die alle 768 Bytes sind - unterschiedlich groß), den dafür aber korrekt.</p>
<p>Ich habe dann mal auf gut Glück mit feof getestet, ob stdio vielleicht glaubt, das Ende der Datei erreicht zu haben, und genau das tut es!</p>
<p>Ich weiß aber genau (ich seh's ja im Hex-Editor), dass die Datei wirklich 768 bytes groß ist und das Ende der Datei so früh noch gar nicht erreicht sein kann.<br />
Ich hoffe jetzt einfach mal, es liegt an meinem Einlesecode:</p>
<pre><code>struct{Uint8 r,g,b;}RGB[256];
fread(RGB,768,1,F);
</code></pre>
<p>F ist ein gültiger FILE*-Pointer und da ich SDL benutze, entspricht Uint8 auch wirklich einem unsigned char. Wie gesagt, der Teil, der gelesen wird, wird auch genau so gelesen, wie ich es mir vorstelle.<br />
Ich habe es auch so probiert:</p>
<pre><code>struct{Uint8 r,g,b;}RGB[256];
Uint8 x;
for(Sint32 i=0;i&lt;256;i++){
  fread(&amp;x,1,1,F);
  RGB[i].r=x;
  fread(&amp;x,1,1,F);
  RGB[i].g=x;
  fread(&amp;x,1,1,F);
  RGB[i].b=x;
}
</code></pre>
<p>Hier habe ich genau dasselbe Problem.</p>
<p>Ich benutze übrigens Dev-C++ 4.9.9.2, falls das irgendwie hilft (ja, ist eine Beta-Version, aber warum sollte fread da versagen?).</p>
<p>Ich hoffe jemand kann mir da helfen,<br />
vielen Dank im Voraus!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/179655/problem-mit-fread</link><generator>RSS for Node</generator><lastBuildDate>Mon, 21 Sep 2026 07:00:18 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/179655.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 24 Apr 2007 09:18:08 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Problem mit fread on Tue, 24 Apr 2007 09:18:08 GMT]]></title><description><![CDATA[<p>Hallo an alle!<br />
Ich habe ein sehr seltsames Problem mit fread:</p>
<p>Ich möchte eine Farbpalette laden (256 Farben, je RGB = 3x unsigned char), die Datei ist exakt 768 Bytes groß, jedoch liest fread aus irgendeinem Grund immer nur ein Teil der Datei (je nach Palettendatei - die alle 768 Bytes sind - unterschiedlich groß), den dafür aber korrekt.</p>
<p>Ich habe dann mal auf gut Glück mit feof getestet, ob stdio vielleicht glaubt, das Ende der Datei erreicht zu haben, und genau das tut es!</p>
<p>Ich weiß aber genau (ich seh's ja im Hex-Editor), dass die Datei wirklich 768 bytes groß ist und das Ende der Datei so früh noch gar nicht erreicht sein kann.<br />
Ich hoffe jetzt einfach mal, es liegt an meinem Einlesecode:</p>
<pre><code>struct{Uint8 r,g,b;}RGB[256];
fread(RGB,768,1,F);
</code></pre>
<p>F ist ein gültiger FILE*-Pointer und da ich SDL benutze, entspricht Uint8 auch wirklich einem unsigned char. Wie gesagt, der Teil, der gelesen wird, wird auch genau so gelesen, wie ich es mir vorstelle.<br />
Ich habe es auch so probiert:</p>
<pre><code>struct{Uint8 r,g,b;}RGB[256];
Uint8 x;
for(Sint32 i=0;i&lt;256;i++){
  fread(&amp;x,1,1,F);
  RGB[i].r=x;
  fread(&amp;x,1,1,F);
  RGB[i].g=x;
  fread(&amp;x,1,1,F);
  RGB[i].b=x;
}
</code></pre>
<p>Hier habe ich genau dasselbe Problem.</p>
<p>Ich benutze übrigens Dev-C++ 4.9.9.2, falls das irgendwie hilft (ja, ist eine Beta-Version, aber warum sollte fread da versagen?).</p>
<p>Ich hoffe jemand kann mir da helfen,<br />
vielen Dank im Voraus!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1272243</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1272243</guid><dc:creator><![CDATA[DrKrake]]></dc:creator><pubDate>Tue, 24 Apr 2007 09:18:08 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit fread on Tue, 24 Apr 2007 09:21:39 GMT]]></title><description><![CDATA[<p>Erstens: Wenn du in C++ arbeitest, solltest du auch fstreams dafür verwenden - die FILE* Funktionen gibt's zwar noch, aber nur für Ausnahmefälle.</p>
<p>Zweitens: Wie hast du denn die Datei geöffnet? (lass mich raten - im Textmodus fopen(...,&quot;r&quot;))</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1272249</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1272249</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Tue, 24 Apr 2007 09:21:39 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit fread on Tue, 24 Apr 2007 09:38:16 GMT]]></title><description><![CDATA[<p>&lt;.&lt;<br />
Nagut, das ist jetzt ein wenig peinlich...<br />
Ich habe tatsächlich das &quot;b&quot; für &quot;rb&quot; vergessen.<br />
OK, es läuft jetzt super.</p>
<p>Das Öffnen findet woanders statt als das Lesen, sodass ich daran nicht mehr wirklich gedacht habe (machte ich sonst ja auch richtig).</p>
<p>Danke für den &quot;Tipp&quot;! <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="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1272261</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1272261</guid><dc:creator><![CDATA[DrKrake]]></dc:creator><pubDate>Tue, 24 Apr 2007 09:38:16 GMT</pubDate></item></channel></rss>