<?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[Zwei zusätzliche Zeichen an Ende der Datei angehängt - wieso?]]></title><description><![CDATA[<p>Hallo,</p>
<p>also folgendes Problem:</p>
<p>Ich lese ein Zeichen aus einer Datei aus, addiere Beispielsweise 15, schreibe die Datei zurück in eine andere Datei.<br />
Dann lese ich die Datei wieder, ziehe 15 ab und schreibe sie wieder in eine ander/zurück/egal.</p>
<p>Letztendlich habe ich 2 Extrazeichen am Schluss (vermutlich eine für jedes Zurückschreiben). Woher kommen die und wie kann ich sie vermeiden?</p>
<p>(Geschieht unabhängig davon, ob ich im binäry mode öffne oder nicht.)</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/169322/zwei-zusätzliche-zeichen-an-ende-der-datei-angehängt-wieso</link><generator>RSS for Node</generator><lastBuildDate>Wed, 16 Sep 2026 18:06:24 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/169322.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 04 Jan 2007 10:56:49 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Zwei zusätzliche Zeichen an Ende der Datei angehängt - wieso? on Thu, 04 Jan 2007 10:56:49 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>also folgendes Problem:</p>
<p>Ich lese ein Zeichen aus einer Datei aus, addiere Beispielsweise 15, schreibe die Datei zurück in eine andere Datei.<br />
Dann lese ich die Datei wieder, ziehe 15 ab und schreibe sie wieder in eine ander/zurück/egal.</p>
<p>Letztendlich habe ich 2 Extrazeichen am Schluss (vermutlich eine für jedes Zurückschreiben). Woher kommen die und wie kann ich sie vermeiden?</p>
<p>(Geschieht unabhängig davon, ob ich im binäry mode öffne oder nicht.)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1202559</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1202559</guid><dc:creator><![CDATA[ne0r]]></dc:creator><pubDate>Thu, 04 Jan 2007 10:56:49 GMT</pubDate></item><item><title><![CDATA[Reply to Zwei zusätzliche Zeichen an Ende der Datei angehängt - wieso? on Thu, 04 Jan 2007 11:00:36 GMT]]></title><description><![CDATA[<p>Was für Zeichen sind denn das? Und wie genau sieht deine Kopier-Schleife aus?</p>
<p>(ich tippe spontan auf einen &quot;eins-daneben-Fehler&quot; - der letzte Lese-Aufruf schlägt fehl und das letzte Zeichen der Eingabedatei wird doppelt verarbeitet)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1202564</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1202564</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Thu, 04 Jan 2007 11:00:36 GMT</pubDate></item><item><title><![CDATA[Reply to Zwei zusätzliche Zeichen an Ende der Datei angehängt - wieso? on Thu, 04 Jan 2007 11:34:07 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">while(dat_in)
        {
            dat_in.read((char*) &amp;c, sizeof(c));
            //... do anything
            dat_out.write((char*) &amp;c, sizeof(c));
        }
</code></pre>
<p>Dasselbe hab ich auch mit verschiedenen Datentypen gehabt, etc. etc. also liegt es an dem Schleifenkonstrukt.<br />
Punkt ist nur: Ich habe das Konstrukt an sich, also read/get, do anything und dann write/put schon mal so ausprobiert, und ach keine Ahnung...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1202606</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1202606</guid><dc:creator><![CDATA[ne0r]]></dc:creator><pubDate>Thu, 04 Jan 2007 11:34:07 GMT</pubDate></item><item><title><![CDATA[Reply to Zwei zusätzliche Zeichen an Ende der Datei angehängt - wieso? on Thu, 04 Jan 2007 11:45:32 GMT]]></title><description><![CDATA[<p>#include &lt;algorithm&gt;<br />
#include &lt;iterator&gt;</p>
<p>std::copy(std::istream_iterator&lt;char&gt;(data_in), std::istream_iterator&lt;char&gt;(), std::ostream_iteratorchar&gt;(data_out));</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1202615</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1202615</guid><dc:creator><![CDATA[Kurz und gut:]]></dc:creator><pubDate>Thu, 04 Jan 2007 11:45:32 GMT</pubDate></item><item><title><![CDATA[Reply to Zwei zusätzliche Zeichen an Ende der Datei angehängt - wieso? on Thu, 04 Jan 2007 12:03:11 GMT]]></title><description><![CDATA[<p>Und ich habe gewonnen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
<p>Das Eof-Bit wird erst gesetzt, wenn ein Leseversuch fehlgeschlagen ist (also beim dat_in.read()-Aufruf), aber danach erledigst du noch einmal zu viel die gesamten Umrechnungen für das nicht vorhandene Eingabezeichen. Die Lösung lautet: Prüfe den Stream-Status unmittelbar nachdem du ein Zeichen eingelesen hast:</p>
<pre><code class="language-cpp">while(dat_in)
{
  dat_in.read((char*) &amp;c, sizeof(c));
  if(!dat_in) break;
  //... do anything
  dat_out.write((char*) &amp;c, sizeof(c));
}

//oder, noch kürzer:

while(dat_in.read((char*)&amp;c, sizeof(c)))
{
  //... do anything
  dat_out.write((char*) &amp;c, sizeof(c));
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1202630</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1202630</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Thu, 04 Jan 2007 12:03:11 GMT</pubDate></item><item><title><![CDATA[Reply to Zwei zusätzliche Zeichen an Ende der Datei angehängt - wieso? on Fri, 05 Jan 2007 03:27:58 GMT]]></title><description><![CDATA[<p>Ah, ok.</p>
<p>Danke!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1203222</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1203222</guid><dc:creator><![CDATA[ne0r]]></dc:creator><pubDate>Fri, 05 Jan 2007 03:27:58 GMT</pubDate></item></channel></rss>