<?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[Memcpy]]></title><description><![CDATA[<pre><code>//---------------------------------------------------------------------------

#pragma hdrstop
#include &lt;string.h&gt;
#include &lt;iostream.h&gt;
//---------------------------------------------------------------------------

#pragma argsused
int main(int argc, char* argv[])
{

int Input[] = {0, 1, 3, 5, 7, 9, 0};//7
int Output[7];
char Buffer[100];
memset(Buffer,0,100);
memset(&amp;Output,0,4*7);
cout &lt;&lt; &quot;Int: &quot;&lt;&lt;sizeof(int)&lt;&lt;&quot;\tChar: &quot;&lt;&lt;sizeof(char)&lt;&lt;endl;
for ( int i = 0; i &lt; sizeof(Input)/sizeof(int); i++){
  memcpy(Buffer+(i*sizeof(int)), &amp;Input[i]+(i*sizeof(int)), sizeof(int));
  }
for ( int i = 0; i &lt; sizeof(Output)/sizeof(int); i++){
  memcpy(&amp;Output[i]+(i*sizeof(int)), Buffer+(i*sizeof(int)), sizeof(int));
  }
        return 0;
}
//---------------------------------------------------------------------------
</code></pre>
<p>Also ich versuche gerade nen paar variablen in nen buffer zu kopieren und dann später wieder rauszuholen.. aber das ganze funktioniert noch nicht so wie ichs mir dachte.<br />
Kann mir da jemand helfen bitte?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/221828/memcpy</link><generator>RSS for Node</generator><lastBuildDate>Mon, 05 Oct 2026 18:37:50 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/221828.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 04 Sep 2008 01:54:54 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Memcpy on Thu, 04 Sep 2008 01:58:26 GMT]]></title><description><![CDATA[<pre><code>//---------------------------------------------------------------------------

#pragma hdrstop
#include &lt;string.h&gt;
#include &lt;iostream.h&gt;
//---------------------------------------------------------------------------

#pragma argsused
int main(int argc, char* argv[])
{

int Input[] = {0, 1, 3, 5, 7, 9, 0};//7
int Output[7];
char Buffer[100];
memset(Buffer,0,100);
memset(&amp;Output,0,4*7);
cout &lt;&lt; &quot;Int: &quot;&lt;&lt;sizeof(int)&lt;&lt;&quot;\tChar: &quot;&lt;&lt;sizeof(char)&lt;&lt;endl;
for ( int i = 0; i &lt; sizeof(Input)/sizeof(int); i++){
  memcpy(Buffer+(i*sizeof(int)), &amp;Input[i]+(i*sizeof(int)), sizeof(int));
  }
for ( int i = 0; i &lt; sizeof(Output)/sizeof(int); i++){
  memcpy(&amp;Output[i]+(i*sizeof(int)), Buffer+(i*sizeof(int)), sizeof(int));
  }
        return 0;
}
//---------------------------------------------------------------------------
</code></pre>
<p>Also ich versuche gerade nen paar variablen in nen buffer zu kopieren und dann später wieder rauszuholen.. aber das ganze funktioniert noch nicht so wie ichs mir dachte.<br />
Kann mir da jemand helfen bitte?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1576207</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1576207</guid><dc:creator><![CDATA[Schurke]]></dc:creator><pubDate>Thu, 04 Sep 2008 01:58:26 GMT</pubDate></item><item><title><![CDATA[Reply to Memcpy on Thu, 04 Sep 2008 04:43:00 GMT]]></title><description><![CDATA[<p>memcpy(Buffer+(i<em>sizeof(int)), (**(char</em>)**&amp;Input[i]+(i*sizeof(int))), sizeof(int));</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1576212</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1576212</guid><dc:creator><![CDATA[BorisDieKlinge]]></dc:creator><pubDate>Thu, 04 Sep 2008 04:43:00 GMT</pubDate></item><item><title><![CDATA[Reply to Memcpy on Thu, 04 Sep 2008 07:46:48 GMT]]></title><description><![CDATA[<p>Achsoo... ja danke wenn mans erstmal sieht machts sinn <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="😃"
    /> vielen dank!</p>
<p>Edit: Mm.. aber selbst mit dem abgeändertem Code erziele ich jetzt noch nicht das gewollte Ergebnis ...</p>
<pre><code>for ( int i = 0; i &lt; sizeof(Input)/sizeof(int); i++){
  memcpy(Buffer+(i*sizeof(int)), ((char*)&amp;Input[i]+(i*sizeof(int))), sizeof(int));
  }
for ( int i = 0; i &lt; sizeof(Input)/sizeof(int); i++){
  memcpy(&amp;Output[i]+(i*sizeof(int)), ((int*)Buffer+(i*sizeof(int))), sizeof(int));
  }
</code></pre>
<p>also jetzt müsste es ja eigentlich gehen da die Adresstypen auch gleich sind <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=":O"
      alt="😮"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1576249</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1576249</guid><dc:creator><![CDATA[Schurke]]></dc:creator><pubDate>Thu, 04 Sep 2008 07:46:48 GMT</pubDate></item><item><title><![CDATA[Reply to Memcpy on Thu, 04 Sep 2008 07:28:42 GMT]]></title><description><![CDATA[<p>/edit: Forenlag...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1576262</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1576262</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Thu, 04 Sep 2008 07:28:42 GMT</pubDate></item><item><title><![CDATA[Reply to Memcpy on Thu, 04 Sep 2008 08:12:21 GMT]]></title><description><![CDATA[<p>Schurke schrieb:</p>
<blockquote>
<pre><code>//---------------------------------------------------------------------------
 
#pragma hdrstop
#include &lt;string.h&gt;
#include &lt;iostream.h&gt;
//---------------------------------------------------------------------------
</code></pre>
</blockquote>
<p>- du kannst hier im Forum die [ cpp]-Tags benutzen (ohne Leerzeichen dazwischen)- mit farbigem Syntaxhighlighting und damit besser lesbar <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="🙂"
    /><br />
- &lt;string.h&gt; und &lt;iostream.h&gt; sind seit ca. 10 Jahren veraltet (der aktuelle Standard ist von '98) benutz stattdessen &lt;string&gt; (bzw. in deinem Fall &lt;cstring&gt;) und &lt;iostream&gt; etc.</p>
<p>Schurke schrieb:</p>
<blockquote>
<pre><code class="language-cpp">int Input[] = {0, 1, 3, 5, 7, 9, 0};//7
int Output[7];
char Buffer[100];
memset(Buffer,0,100);
memset(&amp;Output,0,4*7);
</code></pre>
</blockquote>
<p>- als automatische Variablen sind Buffer und Output meines Wissens eh schon mit 0 initalisiert, damit sind die memset-aufrufe überflüssig.<br />
- davon abgesehen bezeichnet Output schon den pointer auf den Anfang des Arrays, &amp;Output ist damit fehlerhaft und sollte dir um die Ohren fliegen<br />
- selbst wenn es nötig wäre, die Arrays zu initialisieren, ist memset C und kein C++. Das C++-pendant nennt sich fill:</p>
<pre><code class="language-cpp">#include &lt;algorithm&gt;
//...
int Output[7];
char Buffer[100];
std::fill(Output, Output+7, 0);
std::fill(Buffer, Buffer+100, 0);
</code></pre>
<p>Schurke schrieb:</p>
<blockquote>
<pre><code class="language-cpp">for ( int i = 0; i &lt; sizeof(Input)/sizeof(int); i++){
  memcpy(Buffer+(i*sizeof(int)), &amp;Input[i]+(i*sizeof(int)), sizeof(int));
  }
for ( int i = 0; i &lt; sizeof(Output)/sizeof(int); i++){
  memcpy(&amp;Output[i]+(i*sizeof(int)), Buffer+(i*sizeof(int)), sizeof(int));
  }
</code></pre>
</blockquote>
<p>- memcpy ist wieder C, nicht typsicher und spätestens bei non-PODs wird sowas krachen (gilt übrigens auch für memset). Eine C++-Version hiervon würde lauten:</p>
<pre><code class="language-cpp">assert(sizeof(Input) &lt; sizeof(Buffer)); //man kann ja nie wissen...
char* bufferend = std::copy( reinterpret_cast&lt;char*&gt;(Input),
          reinterpret_cast&lt;char*&gt;(Input+7),
          Buffer );
*bufferend = '\0'; //bufferend und diese zeile sind eigentlich unnötig, da eh nullinitialisiert, das hier schließt den C-String auf jeden Fall ab.

std::copy(Input, Input + 7, Output);
</code></pre>
<p>Schurke schrieb:</p>
<blockquote>
<p>funktioniert noch nicht so wie ichs mir dachte</p>
</blockquote>
<p>Schurke schrieb:</p>
<blockquote>
<p>erziele ich jetzt noch nicht das gewollte Ergebnis ...</p>
</blockquote>
<p>Wenn du nicht erzählen magst wie das gewollte Ergebnis aussieht bzw. was du dir gedacht hast (und was stattdessen rausgekommen ist), dann wird dir niemand richtig helfen können...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1576264</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1576264</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Thu, 04 Sep 2008 08:12:21 GMT</pubDate></item><item><title><![CDATA[Reply to Memcpy on Thu, 04 Sep 2008 07:44:04 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">for ( int i = 0; i &lt; sizeof(Input)/sizeof(int); i++){
  memcpy(Buffer+(i*sizeof(int)),((char*)&amp;Input[i])+(i*sizeof(int)), sizeof(int));
  }
for ( int i = 0; i &lt; sizeof(Input)/sizeof(int); i++){
  memcpy(((char*)&amp;Output[i])+(i*sizeof(int)),Buffer+(i*sizeof(int)), sizeof(int));
 }
</code></pre>
<p>memcpy erwartet char* bei der quelle und beim ziel</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1576269</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1576269</guid><dc:creator><![CDATA[BorisDieKlinge]]></dc:creator><pubDate>Thu, 04 Sep 2008 07:44:04 GMT</pubDate></item><item><title><![CDATA[Reply to Memcpy on Thu, 04 Sep 2008 07:48:05 GMT]]></title><description><![CDATA[<p>Vernichtend... Trotzdem Danke, sehr ausführlich</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1576273</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1576273</guid><dc:creator><![CDATA[Schurke]]></dc:creator><pubDate>Thu, 04 Sep 2008 07:48:05 GMT</pubDate></item><item><title><![CDATA[Reply to Memcpy on Thu, 04 Sep 2008 09:24:47 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>pumuckl schrieb:</p>
<blockquote>
<p>als automatische Variablen sind Buffer und Output meines Wissens eh schon mit 0 initalisiert, damit sind die memset-aufrufe überflüssig.</p>
</blockquote>
<p>Nein, das ist nicht der Fall, automatische Variablen werden nicht initialisiert.</p>
<p>MfG,</p>
<p>Probe-Nutzer</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1576330</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1576330</guid><dc:creator><![CDATA[Probe-Nutzer]]></dc:creator><pubDate>Thu, 04 Sep 2008 09:24:47 GMT</pubDate></item><item><title><![CDATA[Reply to Memcpy on Thu, 04 Sep 2008 09:30:29 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">int Output[7] = { };
char Buffer[100] = { };
</code></pre>
<p>Jetzt sind sie mit 0 initialisert <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1576337</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1576337</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Thu, 04 Sep 2008 09:30:29 GMT</pubDate></item><item><title><![CDATA[Reply to Memcpy on Thu, 04 Sep 2008 11:49:56 GMT]]></title><description><![CDATA[<p>BorisDieKlinge schrieb:</p>
<blockquote>
<p>memcpy erwartet char* bei der quelle und beim ziel</p>
</blockquote>
<p>nein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1576431</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1576431</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Thu, 04 Sep 2008 11:49:56 GMT</pubDate></item><item><title><![CDATA[Reply to Memcpy on Thu, 04 Sep 2008 11:56:10 GMT]]></title><description><![CDATA[<p>Wie gesagt, <code>memcpy()</code> und <code>memset()</code> sind C und haben ihre entsprechenden Probleme (eben bei komplexeren Klassen). Die Header &lt;string.h&gt; und &lt;iostream.h&gt; waren im Übrigen nie C++-Standard.</p>
<p>Zu C++: Benutz die STL und deren Container. Dann kannst du dir auch die <code>sizeof</code> -Orgien sparen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1576436</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1576436</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Thu, 04 Sep 2008 11:56:10 GMT</pubDate></item><item><title><![CDATA[Reply to Memcpy on Thu, 04 Sep 2008 12:00:59 GMT]]></title><description><![CDATA[<p>&lt;string.h&gt; ist und war schon immer Teil des ANSI-C Standards, gehört mithin auch zu C++. Dessen Pendant ist im Übrigen &lt;cstring&gt; und nicht &lt;string&gt;. Woher nimmst du sonst die Deklarationen für memcpy&amp;co?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1576442</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1576442</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Thu, 04 Sep 2008 12:00:59 GMT</pubDate></item><item><title><![CDATA[Reply to Memcpy on Thu, 04 Sep 2008 12:05:33 GMT]]></title><description><![CDATA[<p>camper schrieb:</p>
<blockquote>
<p>&lt;string.h&gt; ist und war schon immer Teil des ANSI-C Standards, gehört mithin auch zu C++. Dessen Pendant ist im Übrigen &lt;cstring&gt; und nicht &lt;string&gt;. Woher nimmst du sonst die Deklarationen für memcpy&amp;co?</p>
</blockquote>
<p>Wie hat man eigentlich den C++ Header &lt;string&gt; vorher genannt? &lt;iostream&gt; war &lt;iostream.h&gt; und wie ist es mit &lt;string&gt;, wenn &lt;string.h&gt; schon von ANSI C besetzt ist?</p>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1576447</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1576447</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Thu, 04 Sep 2008 12:05:33 GMT</pubDate></item><item><title><![CDATA[Reply to Memcpy on Thu, 04 Sep 2008 12:13:57 GMT]]></title><description><![CDATA[<p>camper schrieb:</p>
<blockquote>
<p>&lt;string.h&gt; ist und war schon immer Teil des ANSI-C Standards, gehört mithin auch zu C++. Dessen Pendant ist im Übrigen &lt;cstring&gt; und nicht &lt;string&gt;. Woher nimmst du sonst die Deklarationen für memcpy&amp;co?</p>
</blockquote>
<p>Stimmt, da hast du Recht. Ich habe wohl zu wenig genau geschaut.</p>
<p>Aber die Frage von Dravere würde mich auch interessieren.</p>
<p>Die Header der C++-Bibliothek mit .h (z.B. &lt;iostream.h&gt;) waren ja bei MSVC 6 aufgekommen... Wieso gibt es die immer noch? Abwärtskompatibilität?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1576455</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1576455</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Thu, 04 Sep 2008 12:13:57 GMT</pubDate></item></channel></rss>