<?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[char array kopieren -&amp;gt; Datenverlust]]></title><description><![CDATA[<p>Hallo Leute,</p>
<p>hab mal wieder ein kleines Problem. Ich &quot;mißbrauche&quot; ein char Array um Daten über eine Serielle Schnittstelle an einen µC zu senden.<br />
Ich benutze das char array weil es nur 1 Byte große Elemente hat und dadurch wesentlich kleiner als ein Int-Array ist.<br />
(Ich habe leider auch nicht die Wahl!)</p>
<p>Ich nehme also meine Daten, die von 0x00 bis 0xFF gehen und kopiere sie in die char Elemente. Das funktioniert soweit auch ganz gut.<br />
Mein Problem liegt jetzt darin, dass 0x00 dem '\0' enspricht und wenn ich dann mein gefülltes Array an eine Fkt-übergebe, wird ja eine Kopie des char Array erstellt. Und bei dieser Kopie wird nur bis zum ersten '\0' kopiert! D.h. wenn ich in meinem Array die Daten:</p>
<pre><code class="language-cpp">char arr[20];
arr[0]=0x04;
arr[1]=0x04;
arr[2]=0x00;
arr[3]=0x04;
arr[4]=0x04;
arr[5]=0x04;
</code></pre>
<p>...habe, dann habe ich nach dem Kopieren nur noch die ersten 3 Ellemente und den Rest habe ich verloren! <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>
<p>Kann ich des irgendwie verhindern?</p>
<p>Gruß Kiki</p>
<p>PS: Ich benutze MS Windows und BCB V5</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/157291/char-array-kopieren-gt-datenverlust</link><generator>RSS for Node</generator><lastBuildDate>Mon, 10 Aug 2026 07:58:51 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/157291.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 24 Aug 2006 12:31:23 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to char array kopieren -&amp;gt; Datenverlust on Thu, 24 Aug 2006 12:31:23 GMT]]></title><description><![CDATA[<p>Hallo Leute,</p>
<p>hab mal wieder ein kleines Problem. Ich &quot;mißbrauche&quot; ein char Array um Daten über eine Serielle Schnittstelle an einen µC zu senden.<br />
Ich benutze das char array weil es nur 1 Byte große Elemente hat und dadurch wesentlich kleiner als ein Int-Array ist.<br />
(Ich habe leider auch nicht die Wahl!)</p>
<p>Ich nehme also meine Daten, die von 0x00 bis 0xFF gehen und kopiere sie in die char Elemente. Das funktioniert soweit auch ganz gut.<br />
Mein Problem liegt jetzt darin, dass 0x00 dem '\0' enspricht und wenn ich dann mein gefülltes Array an eine Fkt-übergebe, wird ja eine Kopie des char Array erstellt. Und bei dieser Kopie wird nur bis zum ersten '\0' kopiert! D.h. wenn ich in meinem Array die Daten:</p>
<pre><code class="language-cpp">char arr[20];
arr[0]=0x04;
arr[1]=0x04;
arr[2]=0x00;
arr[3]=0x04;
arr[4]=0x04;
arr[5]=0x04;
</code></pre>
<p>...habe, dann habe ich nach dem Kopieren nur noch die ersten 3 Ellemente und den Rest habe ich verloren! <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>
<p>Kann ich des irgendwie verhindern?</p>
<p>Gruß Kiki</p>
<p>PS: Ich benutze MS Windows und BCB V5</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1123724</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1123724</guid><dc:creator><![CDATA[kiki_666]]></dc:creator><pubDate>Thu, 24 Aug 2006 12:31:23 GMT</pubDate></item><item><title><![CDATA[Reply to char array kopieren -&amp;gt; Datenverlust on Thu, 24 Aug 2006 12:39:02 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>weil das Array dann eben nicht mehr als Array, sondern als Null-Terminierter String behandelt wird.<br />
Du must also eine Funktion aufrufen, die neben dem Pointer auf das Array auch die Anzahl der Elemente übernimmt. Da du aber nichts sagt mit was du sendest noch welche ominöse Funktion du verwendest können wir dir da auch nicht helfen.</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1123733</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1123733</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Thu, 24 Aug 2006 12:39:02 GMT</pubDate></item><item><title><![CDATA[Reply to char array kopieren -&amp;gt; Datenverlust on Thu, 24 Aug 2006 12:47:48 GMT]]></title><description><![CDATA[<p>Also ich beschreibe nach und nach alle Elemente des char array und dieses übergebe ich dann an die FKt-Write_Comport (mit der Länge)</p>
<pre><code class="language-cpp">//beispiel
char arr[22];
for(int i=0;i&lt;22;i++)
{
  arr[i]=i;
}
Write_Comport(arr,length);
</code></pre>
<p>Funktion Write_Comport:</p>
<pre><code class="language-cpp">...
strcpy(a,arr); //und hierbei verliere ich bereits meine Daten
...            
for(int i=0;i&lt;length;i++)  //so geht es die Daten in a zu kopieren
  a[i]=arr[i];
...
</code></pre>
<p>Mein Problem ist jetzt noch, dass ich dieses Array noch zur kontrolle in einem Memo ausgebe. Und mit...</p>
<pre><code class="language-cpp">Memo1-&gt;Lines-&gt;Add(a);
</code></pre>
<p>gibt er mir leider nur wieder bis zum ersten '\0' aus.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1123744</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1123744</guid><dc:creator><![CDATA[kiki_666]]></dc:creator><pubDate>Thu, 24 Aug 2006 12:47:48 GMT</pubDate></item><item><title><![CDATA[Reply to char array kopieren -&amp;gt; Datenverlust on Thu, 24 Aug 2006 13:05:04 GMT]]></title><description><![CDATA[<p>Benutze memcpy statt strcpy, oder halt deine for-Schleife.</p>
<p>Ein Memo eignet sich nicht zur Ausgabe von Binärdaten. Du müßtest die nicht druckbaren Zeichen umwandeln, beispielsweise in ihren Hexadezimalcode für Informationsgehalt oder in Punkte für Lesbarkeit.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1123767</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1123767</guid><dc:creator><![CDATA[Morris Szyslak]]></dc:creator><pubDate>Thu, 24 Aug 2006 13:05:04 GMT</pubDate></item><item><title><![CDATA[Reply to char array kopieren -&amp;gt; Datenverlust on Thu, 24 Aug 2006 13:12:47 GMT]]></title><description><![CDATA[<p>...memcpy funktioniert nicht: Keine Übereinstimmung mit (char*, char <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="😉"
    /> gefunden.<br />
Ist aber auch nicht weiter schlimm, da es mit der Forschleife bestens funktioniert.<br />
Und mein eigentliches Problem hat sich auch gelöst. Ich dachte immer, dass ich die Daten bei der Übertragung über die Serielle Schnittstelle auch verlieren würde, aber das ist gar nicht der Fall! (ich hab leider immer nur in dem Memo-fenster geschaut und nicht in der Variable selber <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>
<p>-&gt;Ergo Problem gelöst!</p>
<p>Danke, gruß Kiki</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1123777</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1123777</guid><dc:creator><![CDATA[kiki_666]]></dc:creator><pubDate>Thu, 24 Aug 2006 13:12:47 GMT</pubDate></item><item><title><![CDATA[Reply to char array kopieren -&amp;gt; Datenverlust on Thu, 24 Aug 2006 13:14:47 GMT]]></title><description><![CDATA[<p>Bei memcpy mußt du die char* erst nach void* casten, dann geht auch das.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1123780</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1123780</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Thu, 24 Aug 2006 13:14:47 GMT</pubDate></item></channel></rss>