<?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[DynamicArray of char :: Mit read füllen.]]></title><description><![CDATA[<p>Hallo,</p>
<p>wenn ich wie folgt eine Datei binär öffne und einige Zeichen lese, dann funktioniert alles.<br />
Im Folgenden Beispiel habe ich in &quot;buf&quot; 10 Zeichen:</p>
<pre><code class="language-cpp">handle=open(File,O_RDONLY | O_BINARY);
char buf[10];
read(handle,&amp;buf,10);
</code></pre>
<p>Da ich aber nicht weiß, wieviele Zeichen ich jedes Mal lesen muss, versuche ich es mit DynamicArray:</p>
<pre><code class="language-cpp">DynamicArray&lt;char&gt;buffer;
buffer.Length = length;
read(handle,&amp;buffer,length);
</code></pre>
<p>In &quot;buffer&quot; wird allerdings nichts geschrieben.<br />
Wie kann ich sonst mit &quot;read&quot; mein DynamicArray &quot;buffer&quot; füllen?</p>
<p>P.S. Ich kann hier kein AnsiString nehmen, da unter den gelesenen Zeichen das Zeichen '\0' sein kann, das das Ende eines Strings markiert.</p>
<p>Danke für jeden Tipp</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/187321/dynamicarray-of-char-mit-read-füllen</link><generator>RSS for Node</generator><lastBuildDate>Sun, 16 Aug 2026 16:00:23 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/187321.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 18 Jul 2007 12:47:12 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to DynamicArray of char :: Mit read füllen. on Wed, 18 Jul 2007 12:47:12 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>wenn ich wie folgt eine Datei binär öffne und einige Zeichen lese, dann funktioniert alles.<br />
Im Folgenden Beispiel habe ich in &quot;buf&quot; 10 Zeichen:</p>
<pre><code class="language-cpp">handle=open(File,O_RDONLY | O_BINARY);
char buf[10];
read(handle,&amp;buf,10);
</code></pre>
<p>Da ich aber nicht weiß, wieviele Zeichen ich jedes Mal lesen muss, versuche ich es mit DynamicArray:</p>
<pre><code class="language-cpp">DynamicArray&lt;char&gt;buffer;
buffer.Length = length;
read(handle,&amp;buffer,length);
</code></pre>
<p>In &quot;buffer&quot; wird allerdings nichts geschrieben.<br />
Wie kann ich sonst mit &quot;read&quot; mein DynamicArray &quot;buffer&quot; füllen?</p>
<p>P.S. Ich kann hier kein AnsiString nehmen, da unter den gelesenen Zeichen das Zeichen '\0' sein kann, das das Ende eines Strings markiert.</p>
<p>Danke für jeden Tipp</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1327776</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1327776</guid><dc:creator><![CDATA[yanix]]></dc:creator><pubDate>Wed, 18 Jul 2007 12:47:12 GMT</pubDate></item><item><title><![CDATA[Reply to DynamicArray of char :: Mit read füllen. on Wed, 18 Jul 2007 15:08:17 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>Das wird so nichts. Was für einen Wert hat denn die Variable length?<br />
Vermutlich ist es eh nicht gültig DynamicArray in ein C-Array zu casten.<br />
Besser ist es mit new selber Speicher für ein normales C-Array zu besorgen</p>
<pre><code class="language-cpp">handle=open(File,O_RDONLY | O_BINARY);
char *buf = new char[length];
read(handle,buf,length);
// mit bug arbeiten
delete[] buf; // Wenn buf nicht mehr gebraucht wird oder bevor ihm ein neuer Speicherbreich zugewiesen wird
</code></pre>
<p>Eventuell solltest du auch auf std::fstream umsteigen. Bringt zwar bei Binärlesen nicht mehr Konfort ist aber dafür eine gute Gelegenheit die C++ STL kennenzulernen.</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1327867</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1327867</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Wed, 18 Jul 2007 15:08:17 GMT</pubDate></item><item><title><![CDATA[Reply to DynamicArray of char :: Mit read füllen. on Wed, 18 Jul 2007 16:29:44 GMT]]></title><description><![CDATA[<p>Danke <a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/7971">@akari</a> für die Antwort.</p>
<p>akari schrieb:</p>
<blockquote>
<p>Was für einen Wert hat denn die Variable length?</p>
</blockquote>
<p>Die Länge ist variabel und kann bis zu 20000000 sein (oder vielleicht auch noch länger)</p>
<pre><code class="language-cpp">char *buf = new char[length];
</code></pre>
<p>Damit hatte ich es schon versucht. Hier enthält &quot;buf&quot; die Zeichen bis zum nächsten <strong>'\0'</strong>. Dann ist die &quot;Zeichenkette&quot; für ih zu Ende. Die danach folgenden Zeichen sind dann weg.</p>
<p>Danke für die Mühe</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1327923</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1327923</guid><dc:creator><![CDATA[yanix]]></dc:creator><pubDate>Wed, 18 Jul 2007 16:29:44 GMT</pubDate></item><item><title><![CDATA[Reply to DynamicArray of char :: Mit read füllen. on Wed, 18 Jul 2007 16:41:24 GMT]]></title><description><![CDATA[<p>Hallo</p>
<blockquote>
<p>Damit hatte ich es schon versucht. Hier enthält &quot;buf&quot; die Zeichen bis zum nächsten '\0'. Dann ist die &quot;Zeichenkette&quot; für ih zu Ende. Die danach folgenden Zeichen sind dann weg.</p>
</blockquote>
<p>Falsch. Es werden solange Zeichen gelesen wie in der Datei vorhanden, nur begrenzt durch den Wert length.<br />
Wahrscheinlich hast du dir den Inhalt des C-Arrays mit einer der typischen C-String Methoden ausgeben lassen. Aber das wird natürlich nichts denn diese Funktion sind für C-Strings, nicht für C-Arrays. Und C-Strings sind Arrays deren ende durch ein '\0' gekennteichnet sind, darum heißen sie auch Null-terminiert.</p>
<p>Wenn du also benäre Daten anzeigen lassen willst must du schon manuell jedes Zeichen einzeln ausgeben, dann kannst du auch selber das Ende bestimmen.</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1327929</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1327929</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Wed, 18 Jul 2007 16:41:24 GMT</pubDate></item><item><title><![CDATA[Reply to DynamicArray of char :: Mit read füllen. on Wed, 18 Jul 2007 16:50:52 GMT]]></title><description><![CDATA[<p>Aha!<br />
Ich werde es gleich machen.<br />
Danke!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1327932</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1327932</guid><dc:creator><![CDATA[yanix]]></dc:creator><pubDate>Wed, 18 Jul 2007 16:50:52 GMT</pubDate></item><item><title><![CDATA[Reply to DynamicArray of char :: Mit read füllen. on Wed, 18 Jul 2007 17:22:45 GMT]]></title><description><![CDATA[<p>Du hast recht. Das war's.<br />
Wenn ich die Zeichen in einer Datei binär schreibe, dann sind sie auch alle da.</p>
<p>Vielen Dank nochmals!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1327953</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1327953</guid><dc:creator><![CDATA[yanix]]></dc:creator><pubDate>Wed, 18 Jul 2007 17:22:45 GMT</pubDate></item></channel></rss>