<?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[struct verwalten und speichern&#x2F;laden]]></title><description><![CDATA[<p>Hi.</p>
<p>Ich möchte ein struct mit Infos füttern und anschliessend speichern und später wieder einlesen/ändern und wieder speichern können.</p>
<p>Schön und gut .. aber ich scheiter schon daran das es mit <strong>daten _daten[5000];</strong> einen Stack Overflow gibt. Kann mir da jemand helfen es doch hinzubekommen? In das daten-struct müssen noch wesentlich mehr daten rein ^^</p>
<pre><code class="language-cpp">struct daten
{
	unsigned short id;
	char name[512];
	unsigned char wert1;
	unsigned char wert2;
};

int main(int argc, char* argv[])
{
	daten _daten[5000];

	ofstream outFile;
	outFile.open(&quot;xxx.txt&quot;,ios::binary | ios::ate | ios::out);
	if (outFile)
	{
		_daten-&gt;id = 1;
		outFile.write((char*)&amp;_daten,sizeof(_daten));
	}
	outFile.close();

	getch();
	return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/128413/struct-verwalten-und-speichern-laden</link><generator>RSS for Node</generator><lastBuildDate>Tue, 25 Aug 2026 16:17:40 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/128413.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 03 Dec 2005 14:28:36 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to struct verwalten und speichern&#x2F;laden on Sat, 03 Dec 2005 14:28:36 GMT]]></title><description><![CDATA[<p>Hi.</p>
<p>Ich möchte ein struct mit Infos füttern und anschliessend speichern und später wieder einlesen/ändern und wieder speichern können.</p>
<p>Schön und gut .. aber ich scheiter schon daran das es mit <strong>daten _daten[5000];</strong> einen Stack Overflow gibt. Kann mir da jemand helfen es doch hinzubekommen? In das daten-struct müssen noch wesentlich mehr daten rein ^^</p>
<pre><code class="language-cpp">struct daten
{
	unsigned short id;
	char name[512];
	unsigned char wert1;
	unsigned char wert2;
};

int main(int argc, char* argv[])
{
	daten _daten[5000];

	ofstream outFile;
	outFile.open(&quot;xxx.txt&quot;,ios::binary | ios::ate | ios::out);
	if (outFile)
	{
		_daten-&gt;id = 1;
		outFile.write((char*)&amp;_daten,sizeof(_daten));
	}
	outFile.close();

	getch();
	return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/933124</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/933124</guid><dc:creator><![CDATA[ccc]]></dc:creator><pubDate>Sat, 03 Dec 2005 14:28:36 GMT</pubDate></item><item><title><![CDATA[Reply to struct verwalten und speichern&#x2F;laden on Sat, 03 Dec 2005 14:33:32 GMT]]></title><description><![CDATA[<p>Dann legst du die Daten halt nicht auf dem Stack ab, schon ist das Problem gelöst <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /> (das Array wird ca 2,5MB groß, da wäre es schon fast ein Wunder, wenn der Stack nicht in die Knie geht)<br />
(nimm z.B. einen std::vector&lt;daten&gt;, bei dem kannst du sogar nachträglich die Größe anpassen)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/933130</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/933130</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Sat, 03 Dec 2005 14:33:32 GMT</pubDate></item><item><title><![CDATA[Reply to struct verwalten und speichern&#x2F;laden on Sat, 03 Dec 2005 14:52:30 GMT]]></title><description><![CDATA[<p>Danke für den Tipp.</p>
<p>Er compiliert und führt nu auch sauber aus. Allerdings ist die erzeugte Datei nur 16Byte gross <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /> .<br />
Siehst du eventuell meinen Fehler? Mit kleinerem Array war die Dateigrösse wesentlich höher, um nicht zu sagen entsprach den Bytes des structs <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
<pre><code class="language-cpp">struct daten
{
	unsigned short id;
	char name[512];
	unsigned char wert1;
	unsigned char wert2;
};

int main(int argc, char* argv[])
{
	int anzahl = 3400;
	vector&lt;daten&gt; _daten(anzahl);

	for (int i=0;i&lt;anzahl;i++)
	{
		_daten[i].id = 0;
		_daten[i].name[0] = 0x00;
		_daten[i].wert1 = 0;
		_daten[i].wert2 = 0;
	}

	_daten[5].id = 3;
	strcpy(_daten[5].name,&quot;huhu&quot;);

	printf(&quot;%d %s&quot;,_daten[5].id,_daten[5].name);

	ofstream outFile;
	outFile.open(&quot;xxx.txt&quot;,ios::binary | ios::ate | ios::out);
	if (outFile)
	{
		outFile.write((char*)&amp;_daten,sizeof(_daten));
	}
	outFile.close();

	getch();
	return 0;
}
</code></pre>
<p>und kann man den vector so mit read auch wieder einlesen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/933146</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/933146</guid><dc:creator><![CDATA[ccc]]></dc:creator><pubDate>Sat, 03 Dec 2005 14:52:30 GMT</pubDate></item><item><title><![CDATA[Reply to struct verwalten und speichern&#x2F;laden on Sat, 03 Dec 2005 15:59:16 GMT]]></title><description><![CDATA[<p>Ich habe mal bissle weiter rumgespielt</p>
<p>#1<br />
Gibt es eine Möglichkeit beim speichern weniger Platz zu verbrauchen?<br />
Die 512Byte für Name werden extrem selten gebraucht.</p>
<p>#2<br />
Ich habe leider beim ausführen nach 2s den Fehler: &quot;Access Violation&quot;</p>
<pre><code class="language-cpp">struct daten
{
	unsigned short id;
	char name[512];
	unsigned char wert1;
	unsigned char wert2;
};

int main(int argc, char* argv[])
{
	int anzahl = 3400;
	vector&lt;daten&gt; _daten(anzahl);
	vector&lt;daten&gt; datenx;

	for (int i=0;i&lt;anzahl;i++)
	{
		_daten[i].id = 0;
		_daten[i].name[0] = 0x00;
		_daten[i].wert1 = 0;
		_daten[i].wert2 = 0;
	}

	_daten[5].id = 3;
	strcpy(_daten[5].name,&quot;huhu&quot;);

	ofstream outFile;
	outFile.open(&quot;xxx.txt&quot;,ios::binary | ios::ate | ios::out);
	if (outFile)
	{
		for (int i=0;i&lt;anzahl;i++)
		{
			outFile.write((char*)&amp;_daten[i],sizeof(_daten[i]));
		}
	}
	outFile.close();

	ifstream inFile;
	inFile.open(&quot;xxx.txt&quot;);
	printf(&quot;%d %s&quot;,datenx[0].id,datenx[0].name);
	while (!inFile.eof())
	{
		inFile.read((char*)&amp;datenx,sizeof(datenx));
		printf(&quot;%d %s&quot;,datenx[0].id,datenx[0].name);

	}
	inFile.close();

	getch();
	return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/933196</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/933196</guid><dc:creator><![CDATA[ccc]]></dc:creator><pubDate>Sat, 03 Dec 2005 15:59:16 GMT</pubDate></item><item><title><![CDATA[Reply to struct verwalten und speichern&#x2F;laden on Sat, 03 Dec 2005 18:22:02 GMT]]></title><description><![CDATA[<p>Du kannst einen vector so nicht einlesen.<br />
Lies einen Datensatz nach dem anderen ein.<br />
Dein Programm stürzt ab bei</p>
<pre><code class="language-cpp">printf(&quot;%d %s&quot;,datenx[0].id,datenx[0].name);
</code></pre>
<p>Denn datenx it da noch leer.<br />
Kurt</p>
]]></description><link>https://www.c-plusplus.net/forum/post/933314</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/933314</guid><dc:creator><![CDATA[ZuK]]></dc:creator><pubDate>Sat, 03 Dec 2005 18:22:02 GMT</pubDate></item></channel></rss>