<?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[Binäres Datei schreiben&#x2F;lesen]]></title><description><![CDATA[<p>Hallo!</p>
<p>Ich wollte mir eine kleine Datenbank schreiben, die die Daten in einem File speichert und sie dann bei Programmstart läd. Da ich gerne die Datei verschlüsseln will (um auch die binären Schreib-/ Lesevorgänge mal zu lernen), wollte ich das gleich auf binärer Ebene machen.</p>
<p>Dazu habe ich ein bisschen Code zum Probieren erstmal, allerdings bekomme ich eine eigenartige Ausgabe, die für mich keinen Sinn ergibt.</p>
<pre><code>#include &lt;iostream&gt;
#include &lt;fstream&gt;

using namespace std;

fstream iof;

struct Test {  // Daten in einer struct zusammengefasst
	char a[10], b[10], c[10];
};

int main() {
	iof.open(&quot;bla.asdf&quot;, ios::in|ios::out|ios::binary);

	Test test;
	for(int i=0;i&lt;10;++i) {
		test.a[i] = 'a';
		test.b[i] = 'b';
		test.c[i] = 'c';
	}

	iof.write(reinterpret_cast&lt;char*&gt;(&amp;test), sizeof(test));  // schreiben

	cout &lt;&lt; test.a &lt;&lt; endl &lt;&lt; test.b &lt;&lt; endl &lt;&lt; test.c &lt;&lt; endl &lt;&lt; endl;

	iof.seekg(0);
	iof.read(reinterpret_cast&lt;char*&gt;(&amp;test), sizeof(test));  // direkt wieder auslesen

	cout &lt;&lt; test.a &lt;&lt; endl &lt;&lt; test.b &lt;&lt; endl &lt;&lt; test.c &lt;&lt; endl;

	iof.close();
	system(&quot;pause&quot;);
	return 0;
}
</code></pre>
<p><a href="http://imgur.com/Jau3nX4" rel="nofollow">http://imgur.com/Jau3nX4</a><br />
Das ist die Ausgabe.</p>
<p>Im File selber steht:<br />
&quot;aaaaaaaaaabbbbbbbbbbcccccccccc&quot;</p>
<p>Ich könnte mir vorstellen, dass ich etwas mit den C-Strings falsch mache, damit arbeite ich eigentlich nicht, allerdings muss ich es hier, damit in die Daten in der struct zusammenfassen und speichern kann.</p>
<p>Ich hoffe jemand von euch hat eine Idee woran es liegen könnte,<br />
Danke!!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/317223/binäres-datei-schreiben-lesen</link><generator>RSS for Node</generator><lastBuildDate>Wed, 29 Jul 2026 01:19:51 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/317223.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 31 May 2013 13:25:23 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Binäres Datei schreiben&#x2F;lesen on Fri, 31 May 2013 13:25:23 GMT]]></title><description><![CDATA[<p>Hallo!</p>
<p>Ich wollte mir eine kleine Datenbank schreiben, die die Daten in einem File speichert und sie dann bei Programmstart läd. Da ich gerne die Datei verschlüsseln will (um auch die binären Schreib-/ Lesevorgänge mal zu lernen), wollte ich das gleich auf binärer Ebene machen.</p>
<p>Dazu habe ich ein bisschen Code zum Probieren erstmal, allerdings bekomme ich eine eigenartige Ausgabe, die für mich keinen Sinn ergibt.</p>
<pre><code>#include &lt;iostream&gt;
#include &lt;fstream&gt;

using namespace std;

fstream iof;

struct Test {  // Daten in einer struct zusammengefasst
	char a[10], b[10], c[10];
};

int main() {
	iof.open(&quot;bla.asdf&quot;, ios::in|ios::out|ios::binary);

	Test test;
	for(int i=0;i&lt;10;++i) {
		test.a[i] = 'a';
		test.b[i] = 'b';
		test.c[i] = 'c';
	}

	iof.write(reinterpret_cast&lt;char*&gt;(&amp;test), sizeof(test));  // schreiben

	cout &lt;&lt; test.a &lt;&lt; endl &lt;&lt; test.b &lt;&lt; endl &lt;&lt; test.c &lt;&lt; endl &lt;&lt; endl;

	iof.seekg(0);
	iof.read(reinterpret_cast&lt;char*&gt;(&amp;test), sizeof(test));  // direkt wieder auslesen

	cout &lt;&lt; test.a &lt;&lt; endl &lt;&lt; test.b &lt;&lt; endl &lt;&lt; test.c &lt;&lt; endl;

	iof.close();
	system(&quot;pause&quot;);
	return 0;
}
</code></pre>
<p><a href="http://imgur.com/Jau3nX4" rel="nofollow">http://imgur.com/Jau3nX4</a><br />
Das ist die Ausgabe.</p>
<p>Im File selber steht:<br />
&quot;aaaaaaaaaabbbbbbbbbbcccccccccc&quot;</p>
<p>Ich könnte mir vorstellen, dass ich etwas mit den C-Strings falsch mache, damit arbeite ich eigentlich nicht, allerdings muss ich es hier, damit in die Daten in der struct zusammenfassen und speichern kann.</p>
<p>Ich hoffe jemand von euch hat eine Idee woran es liegen könnte,<br />
Danke!!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2327585</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2327585</guid><dc:creator><![CDATA[Schamote]]></dc:creator><pubDate>Fri, 31 May 2013 13:25:23 GMT</pubDate></item><item><title><![CDATA[Reply to Binäres Datei schreiben&#x2F;lesen on Fri, 31 May 2013 13:34:57 GMT]]></title><description><![CDATA[<p>Schamote schrieb:</p>
<blockquote>
<p>Ich könnte mir vorstellen, dass ich etwas mit den C-Strings falsch mache, damit arbeite ich eigentlich nicht, allerdings muss ich es hier, damit in die Daten in der struct zusammenfassen und speichern kann.</p>
</blockquote>
<p>Cout gibt den C-String so lange aus, bis ein 0-Byte kommt. Bei dir fehlt das aber, deshalb wird beliebig viel Müll ausgegeben.</p>
<p>Setze am Anfang <code>test.a[9] = test.b[9] = test.c[9] = 0</code> .</p>
<p>Ausserdem ist &quot;ich möchte binär Lesen/Schreiben&quot; kein Grund, <code>fstream iof;</code> global zu machen. Wenn du den in main deklarierst, kannst du sogar auf das close() verzichten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2327591</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2327591</guid><dc:creator><![CDATA[erthay&amp;lt;xd]]></dc:creator><pubDate>Fri, 31 May 2013 13:34:57 GMT</pubDate></item><item><title><![CDATA[Reply to Binäres Datei schreiben&#x2F;lesen on Fri, 31 May 2013 13:35:27 GMT]]></title><description><![CDATA[<p>Keine Nullterminierung der C-Strings.<br />
Bei der Ausgabe wird alles bis zur ersten Null ausgegeben.<br />
Und wenn du etwas verschlüsselt haben willst, musst du es auch verschlüsseln und nciht einfach nur binär speichern! Der Windowseditor interpretiert die Daten binär und due wirst keine große Änderung haben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2327593</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2327593</guid><dc:creator><![CDATA[Nathan]]></dc:creator><pubDate>Fri, 31 May 2013 13:35:27 GMT</pubDate></item><item><title><![CDATA[Reply to Binäres Datei schreiben&#x2F;lesen on Fri, 31 May 2013 13:41:24 GMT]]></title><description><![CDATA[<blockquote>
<p>Keine Nullterminierung der C-Strings.<br />
Bei der Ausgabe wird alles bis zur ersten Null ausgegeben.</p>
</blockquote>
<p>Ok, danke, wusste ich es doch <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>
<blockquote>
<p>Und wenn du etwas verschlüsselt haben willst, musst du es auch verschlüsseln und nciht einfach nur binär speichern! Der Windowseditor interpretiert die Daten binär und due wirst keine große Änderung haben.</p>
</blockquote>
<p>Ich weiß, dass das noch nicht verschlüsselt ist, wollte es nur anmerken, nicht, dass jemand mit dem &lt;&lt;-Operator kommt <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/2327597</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2327597</guid><dc:creator><![CDATA[Schamote]]></dc:creator><pubDate>Fri, 31 May 2013 13:41:24 GMT</pubDate></item><item><title><![CDATA[Reply to Binäres Datei schreiben&#x2F;lesen on Fri, 31 May 2013 13:45:28 GMT]]></title><description><![CDATA[<p>Schamote schrieb:</p>
<blockquote>
<blockquote>
<p>Und wenn du etwas verschlüsselt haben willst, musst du es auch verschlüsseln und nciht einfach nur binär speichern! Der Windowseditor interpretiert die Daten binär und due wirst keine große Änderung haben.</p>
</blockquote>
<p>Ich weiß, dass das noch nicht verschlüsselt ist, wollte es nur anmerken, nicht, dass jemand mit dem &lt;&lt;-Operator kommt <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>
</blockquote>
<p>Mit dem wunderbar verschlüsselt ausgeben kann.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2327600</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2327600</guid><dc:creator><![CDATA[Nathan]]></dc:creator><pubDate>Fri, 31 May 2013 13:45:28 GMT</pubDate></item><item><title><![CDATA[Reply to Binäres Datei schreiben&#x2F;lesen on Fri, 31 May 2013 13:48:11 GMT]]></title><description><![CDATA[<p>Nathan schrieb:</p>
<blockquote>
<p>Schamote schrieb:</p>
<blockquote>
<blockquote>
<p>Und wenn du etwas verschlüsselt haben willst, musst du es auch verschlüsseln und nciht einfach nur binär speichern! Der Windowseditor interpretiert die Daten binär und due wirst keine große Änderung haben.</p>
</blockquote>
<p>Ich weiß, dass das noch nicht verschlüsselt ist, wollte es nur anmerken, nicht, dass jemand mit dem &lt;&lt;-Operator kommt <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>
</blockquote>
<p>Mit dem wunderbar verschlüsselt ausgeben kann.</p>
</blockquote>
<p>Ich bin für neues immer offen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2327603</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2327603</guid><dc:creator><![CDATA[Schamote]]></dc:creator><pubDate>Fri, 31 May 2013 13:48:11 GMT</pubDate></item><item><title><![CDATA[Reply to Binäres Datei schreiben&#x2F;lesen on Fri, 31 May 2013 13:52:18 GMT]]></title><description><![CDATA[<p><a href="http://www.c-plusplus.net/forum/p2228469#2228469" rel="nofollow">http://www.c-plusplus.net/forum/p2228469#2228469</a></p>
<p>Damit erschlägt man sämtliche Ausgabefunktionen mit einem Streich.</p>
<p>Kann natürlich auch leicht auf eine nicht-knackbare Verschlüsselung angepasst werden. Das XOR wird bloß benutzt, weil das in dem anderen Thread gesucht war.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2327604</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2327604</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Fri, 31 May 2013 13:52:18 GMT</pubDate></item><item><title><![CDATA[Reply to Binäres Datei schreiben&#x2F;lesen on Fri, 31 May 2013 13:54:14 GMT]]></title><description><![CDATA[<p>Verdammt, ich war auch grad dabei einen encrypted_streambuf zu schreiben. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2327608</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2327608</guid><dc:creator><![CDATA[Nathan]]></dc:creator><pubDate>Fri, 31 May 2013 13:54:14 GMT</pubDate></item><item><title><![CDATA[Reply to Binäres Datei schreiben&#x2F;lesen on Fri, 31 May 2013 14:13:00 GMT]]></title><description><![CDATA[<p>Nathan schrieb:</p>
<blockquote>
<p>Verdammt, ich war auch grad dabei einen encrypted_streambuf zu schreiben. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
</blockquote>
<p>Dann mach Version 2.0, die das ganze blockweise an eine Kryptobibliothek weitergibt, anstatt eine solch primitive, zeichenweise Verschlüsselung zu benutzen. Also analog zu den gzstreams für Kompression:<br />
<a href="http://www.cs.unc.edu/Research/compgeom/gzstream/" rel="nofollow">http://www.cs.unc.edu/Research/compgeom/gzstream/</a></p>
<p>Das Ergebnis wäre dann wohl sogar eine Veröffentlichung wert, sofern es das noch nicht geben sollte.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2327617</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2327617</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Fri, 31 May 2013 14:13:00 GMT</pubDate></item><item><title><![CDATA[Reply to Binäres Datei schreiben&#x2F;lesen on Fri, 31 May 2013 14:43:05 GMT]]></title><description><![CDATA[<p><a href="http://ideone.com/9litLY" rel="nofollow">http://ideone.com/9litLY</a></p>
<p>Wollte eigentlich den Streambuf als Templateargument übergeben, von dem dann abgeleitet wird und dann die Basclass-Functions aufgerufen werden, aber dein Design fand ich dann doch besser.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2327627</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2327627</guid><dc:creator><![CDATA[Nathan]]></dc:creator><pubDate>Fri, 31 May 2013 14:43:05 GMT</pubDate></item><item><title><![CDATA[Reply to Binäres Datei schreiben&#x2F;lesen on Mon, 03 Jun 2013 13:00:59 GMT]]></title><description><![CDATA[<p>Ich bin äußerst verwirrt!<br />
Ich habe jetzt mit meinem eigentlichen Projekt wietergemacht, allerdings habe ich wieder einen Fehler, sodass ich wieder auf mein reduziertes Projekt gewechselt habe, um das Problem zu finden.</p>
<p>Erstmal der Code:</p>
<pre><code>#include &lt;iostream&gt;
#include &lt;fstream&gt;

using namespace std;

struct SPerson {
	char vorname[25];
	char name[15];
	char email[25];
	char telefon[16];
	char adresse[18];
	char stufe[14];
};

int main() {
	fstream iof(&quot;bla.asdf&quot;, ios::in|ios::out|ios::binary);
	SPerson person;

	for(int i=0;i&lt;24;++i)   //Pseudodaten schreiben
		person.vorname[i] = 'a';
	person.vorname[24] = 0;

	for(int i=0;i&lt;14;++i)
		person.name[i] = 'b';
	person.name[14] = 0;

	for(int i=0;i&lt;24;++i)
		person.email[i] = 'c';
	person.email[24] = 0;

	for(int i=0;i&lt;15;++i)
		person.telefon[i] = 'd';
	person.telefon[15] = 0;

	for(int i=0;i&lt;17;++i)
		person.adresse[i] = 'e';
	person.adresse[17] = 0;

	for(int i=0;i&lt;13;++i)
		person.stufe[i] = 'f';
	person.stufe[13] = 0;

	cout &lt;&lt; &quot;\n&quot; &lt;&lt; sizeof(SPerson) &lt;&lt; &quot;\n&quot;;

	iof.write(reinterpret_cast&lt;char*&gt;(&amp;person), sizeof(SPerson));

	cout &lt;&lt; person.vorname &lt;&lt; &quot;\n&quot;   // die geschriebenen Daten
		&lt;&lt; person.name &lt;&lt; &quot;\n&quot;
		&lt;&lt; person.email &lt;&lt; &quot;\n&quot;
		&lt;&lt; person.telefon &lt;&lt; &quot;\n&quot;
		&lt;&lt; person.adresse &lt;&lt; &quot;\n&quot;
		&lt;&lt; person.stufe &lt;&lt; &quot;\n\n&quot;
	;

	SPerson person2;

	iof.seekg(0);
	iof.read(reinterpret_cast&lt;char*&gt;(&amp;person2), sizeof(SPerson));

	cout &lt;&lt; person2.vorname &lt;&lt; &quot;\n&quot;   // die gelesenen Daten
		&lt;&lt; person2.name &lt;&lt; &quot;\n&quot;
		&lt;&lt; person2.email &lt;&lt; &quot;\n&quot;
		&lt;&lt; person2.telefon &lt;&lt; &quot;\n&quot;
		&lt;&lt; person2.adresse &lt;&lt; &quot;\n&quot;
		&lt;&lt; person2.stufe &lt;&lt; &quot;\n\n&quot;
	;

	system(&quot;pause&quot;);
	return 0;
}
</code></pre>
<p>Im Konsolenfenster sind immer die zu erwartenden Daten zu sehen (&quot;aa...bb..ff..&quot;).<br />
Im File allerdings finde ich je nach Konstellation der Struct manchmal den Klartext und manchmal eigenartige Schriftzeichen.<br />
Und es wechselt, wenn ich die Chararrays länger bzw. kürzer mache.<br />
So wie es jetzt ist, funktioniert es, aber wenn ich allerdings das Array &quot;Stufe&quot; um 1 kürzer mache, kommen wieder eigenartige Schritzeichen dabei raus.</p>
<p>Könnte es sein, dass die Struct eine gewisse Länge haben muss?<br />
So sind es jetzt 113 Bytes.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2328292</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2328292</guid><dc:creator><![CDATA[Schamote]]></dc:creator><pubDate>Mon, 03 Jun 2013 13:00:59 GMT</pubDate></item><item><title><![CDATA[Reply to Binäres Datei schreiben&#x2F;lesen on Mon, 03 Jun 2013 13:11:58 GMT]]></title><description><![CDATA[<p>Schreib einfach normal.<br />
Nicht binär.<br />
Verschlüsseln kannst du dann auch.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2328297</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2328297</guid><dc:creator><![CDATA[Nathan]]></dc:creator><pubDate>Mon, 03 Jun 2013 13:11:58 GMT</pubDate></item></channel></rss>