<?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[2D char Array übergeben, kopieren und zurückgeben]]></title><description><![CDATA[<p>Hallo,</p>
<p>Ich möchte ein 2D char Array in einer Funktion kopieren und die Kopie zurückgeben.<br />
Leider muss es ein Array und darf kein Vector sein. Die Größen des Arrays sind festgelegt und das Original ist als globales Array abgelegt.</p>
<pre><code>#include &lt;iostream&gt;
using namespace std;

const int HEIGHT = 21;
const int WIDTH = 16;
char field [HEIGHT][WIDTH] = {
    &quot;###############&quot;,
    &quot;#CGo.         #&quot;, //C = pac G = Ghost o = fruit . = points; nur zu testzwecken
    &quot;# ## ### #### #&quot;,
    &quot;# ## ### #### #&quot;,
    &quot;#             #&quot;,
    &quot;# ########  # #&quot;,
    &quot;# #         # #&quot;,
    &quot;# #  #####  # #&quot;,
    &quot;# #  #####  # #&quot;,
    &quot;# #         # #&quot;,
    &quot;# #         # #&quot;,
    &quot;#             #&quot;,
    &quot;# ## ######## #&quot;,
    &quot;# ## ######## #&quot;,
    &quot;# ## ######## #&quot;,
    &quot;#             #&quot;,
    &quot;# ###     ### #&quot;,
    &quot;# ########### #&quot;,
    &quot;# ########### #&quot;,
    &quot;#             #&quot;,
    &quot;###############&quot;,
};
char copyArray() {
    int j = 0;
    for (int i = 0; i &lt; HEIGHT; i++) {
       newField[i][j] = field[i][j];

        for (int j = 0; j &lt; WIDTH; j++)
            newField[i][j] = field[i][j];
    }

    return newField[1][1];
}

int main() {
char newField[HEIGHT][WIDTH] = copyArray();
cout &lt;&lt; newField[1][1] &lt;&lt; endl;
    return 0;
}
</code></pre>
<p>Ich hab es schon geschafft das Array zu kopieren und in der Funktion direkt auszugeben. Allerdings eben nicht die Übergabe <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
<p>Mfg</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/321740/2d-char-array-übergeben-kopieren-und-zurückgeben</link><generator>RSS for Node</generator><lastBuildDate>Sun, 19 Jul 2026 01:20:39 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/321740.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 22 Nov 2013 19:54:08 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to 2D char Array übergeben, kopieren und zurückgeben on Fri, 22 Nov 2013 19:54:08 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>Ich möchte ein 2D char Array in einer Funktion kopieren und die Kopie zurückgeben.<br />
Leider muss es ein Array und darf kein Vector sein. Die Größen des Arrays sind festgelegt und das Original ist als globales Array abgelegt.</p>
<pre><code>#include &lt;iostream&gt;
using namespace std;

const int HEIGHT = 21;
const int WIDTH = 16;
char field [HEIGHT][WIDTH] = {
    &quot;###############&quot;,
    &quot;#CGo.         #&quot;, //C = pac G = Ghost o = fruit . = points; nur zu testzwecken
    &quot;# ## ### #### #&quot;,
    &quot;# ## ### #### #&quot;,
    &quot;#             #&quot;,
    &quot;# ########  # #&quot;,
    &quot;# #         # #&quot;,
    &quot;# #  #####  # #&quot;,
    &quot;# #  #####  # #&quot;,
    &quot;# #         # #&quot;,
    &quot;# #         # #&quot;,
    &quot;#             #&quot;,
    &quot;# ## ######## #&quot;,
    &quot;# ## ######## #&quot;,
    &quot;# ## ######## #&quot;,
    &quot;#             #&quot;,
    &quot;# ###     ### #&quot;,
    &quot;# ########### #&quot;,
    &quot;# ########### #&quot;,
    &quot;#             #&quot;,
    &quot;###############&quot;,
};
char copyArray() {
    int j = 0;
    for (int i = 0; i &lt; HEIGHT; i++) {
       newField[i][j] = field[i][j];

        for (int j = 0; j &lt; WIDTH; j++)
            newField[i][j] = field[i][j];
    }

    return newField[1][1];
}

int main() {
char newField[HEIGHT][WIDTH] = copyArray();
cout &lt;&lt; newField[1][1] &lt;&lt; endl;
    return 0;
}
</code></pre>
<p>Ich hab es schon geschafft das Array zu kopieren und in der Funktion direkt auszugeben. Allerdings eben nicht die Übergabe <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
<p>Mfg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2367166</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2367166</guid><dc:creator><![CDATA[Ares_]]></dc:creator><pubDate>Fri, 22 Nov 2013 19:54:08 GMT</pubDate></item><item><title><![CDATA[Reply to 2D char Array übergeben, kopieren und zurückgeben on Fri, 22 Nov 2013 20:06:54 GMT]]></title><description><![CDATA[<p>Und das ist eines der Gründe wieso in C++11 std::array eingeführt wurde. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_down"
      title=":-1:"
      alt="👎"
    /><br />
Vorschlag:</p>
<pre><code>template &lt;typename T, std::size_t Size&gt;
void copy_arr(T src[], T (&amp;dst)[Size])
{
	for (auto i = 0u; i &lt; Size; ++i)
		dst[i] = src[i];
}
</code></pre>
<p>(ungetestet)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2367170</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2367170</guid><dc:creator><![CDATA[Nathan]]></dc:creator><pubDate>Fri, 22 Nov 2013 20:06:54 GMT</pubDate></item><item><title><![CDATA[Reply to 2D char Array übergeben, kopieren und zurückgeben on Fri, 22 Nov 2013 20:45:27 GMT]]></title><description><![CDATA[<p>Danke für deinen Vorschlag Nathan!<br />
Ich weiß Arrays sind doof. Das hab ich in der letzten Woche rumgooglen zu dem Problem auch rausgefunden :D.<br />
Aber die Aufgabe verlangt von mir das ganze so zu machen:</p>
<p>(a) Implementieren Sie eine Funktion copyArray, die ein zweidimensionales Array mit festen Dimensionen in ein<br />
anderes Array kopiert, d.h. die Funktion soll z.B. obiges Array maze in ein anderes Array kopieren.</p>
<p>(Das Array maze war nur ein Beispiel, ich nehme mein field Array.)<br />
Das ist eine Hausaufgabe mit der ich schon eine Woche im Verzug bin. Der Rest ist soweit kein Problem, aber dieses doofe kopieren gelingt mir einfach nicht.</p>
<p>Da wir templates noch nicht behandelt haben denke ich nicht das ich die benutzen darf.</p>
<p>Ist das denn unmöglich mit einer einer Funktion wie der oben?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2367178</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2367178</guid><dc:creator><![CDATA[Ares_]]></dc:creator><pubDate>Fri, 22 Nov 2013 20:45:27 GMT</pubDate></item><item><title><![CDATA[Reply to 2D char Array übergeben, kopieren und zurückgeben on Fri, 22 Nov 2013 20:59:50 GMT]]></title><description><![CDATA[<p>Versuchs mal so:</p>
<pre><code>void copy_arr(int dst[HEIGHT][WIDTH], int src[HEIGHT][WIDTH])
{
	// Schleife	
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2367184</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2367184</guid><dc:creator><![CDATA[Nathan]]></dc:creator><pubDate>Fri, 22 Nov 2013 20:59:50 GMT</pubDate></item><item><title><![CDATA[Reply to 2D char Array übergeben, kopieren und zurückgeben on Fri, 22 Nov 2013 21:08:02 GMT]]></title><description><![CDATA[<blockquote>
<p>Ist das denn unmöglich mit einer einer Funktion wie der oben?</p>
</blockquote>
<p>Nein, das ist durchaus möglich.</p>
<pre><code>void* copy_array( void const* src, void* dest, std::size_t N )
{
	unsigned char const* p = src;
	unsigned char* p2 = dest;
	while( N-- )
		*p2++ = *p++;

	return dest;
}
</code></pre>
<p>(ungetestet)<br />
Und das ist eine typische Funktion, wie sie in C vorkommt. Und was besseres fällt mir nicht ein, ganz ohne Templates...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2367188</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2367188</guid><dc:creator><![CDATA[Columbo]]></dc:creator><pubDate>Fri, 22 Nov 2013 21:08:02 GMT</pubDate></item><item><title><![CDATA[Reply to 2D char Array übergeben, kopieren und zurückgeben on Sat, 23 Nov 2013 15:11:10 GMT]]></title><description><![CDATA[<p>Ich hab das jetzt folgend:</p>
<pre><code>char copyArray(char newField[HEIGHT][WIDTH], char field[HEIGHT][WIDTH]) {

    int i = 0;
    int j = 0;
    for (int i = 0; i &lt; HEIGHT; i++) {
       newField[i][j] = field[i][j];

        for (int j = 0; j &lt; WIDTH; j++)
            newField[i][j] = field[i][j];
    }

    return newField[i][j];
}

int main(){
char newField[0][0] = copyArray();  
cout &lt;&lt; newField[1][1] &lt;&lt; endl;

return 0;
}
</code></pre>
<p>Allerdings gibt er mir bei copyArray(char newField[HEIGHT][WIDTH], char field[HEIGHT][WIDTH])<br />
diesen Error:<br />
<a href="http://img534.imageshack.us/img534/8116/0nrm.png" rel="nofollow">http://img534.imageshack.us/img534/8116/0nrm.png</a></p>
<p>Ich bin echt am verzweifeln. Alles was ich machen soll klappt aber das einfach nicht ..</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2367373</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2367373</guid><dc:creator><![CDATA[Ares_]]></dc:creator><pubDate>Sat, 23 Nov 2013 15:11:10 GMT</pubDate></item><item><title><![CDATA[Reply to 2D char Array übergeben, kopieren und zurückgeben on Sat, 23 Nov 2013 15:48:38 GMT]]></title><description><![CDATA[<p>Vielleicht solltest du dir erst einmal angucken, wie Funktionen mit Parametern funktionieren, bevor du mit Arrays rumspielst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2367390</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2367390</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Sat, 23 Nov 2013 15:48:38 GMT</pubDate></item><item><title><![CDATA[Reply to 2D char Array übergeben, kopieren und zurückgeben on Sat, 23 Nov 2013 16:05:37 GMT]]></title><description><![CDATA[<p>SeppJ schrieb:</p>
<blockquote>
<p>Vielleicht solltest du dir erst einmal angucken, wie Funktionen mit Parametern funktionieren, bevor du mit Arrays rumspielst.</p>
</blockquote>
<p>Tut mir leid, ich bin grade zu fertig damit.</p>
<p>Das hier ist ein simples Beispiel wie ich es gelernt habe mit der Übergabe/Rückgabe.</p>
<pre><code>int calc (int x){

    return x*x*x;

}

int main() {
   int length = 0;
    cout &lt;&lt; &quot;Kantenlänge eingeben: &quot; &lt;&lt; endl;
    cin &gt;&gt; length;
    cout &lt;&lt; &quot;Volumen beträgt: &quot; &lt;&lt; calc(length) &lt;&lt; endl;

    return 0;
}
</code></pre>
<p>Aber ich bekomm es einfach nicht hin mit Arrays, damit stell ich mich zu doof an <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/2367401</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2367401</guid><dc:creator><![CDATA[Ares__]]></dc:creator><pubDate>Sat, 23 Nov 2013 16:05:37 GMT</pubDate></item><item><title><![CDATA[Reply to 2D char Array übergeben, kopieren und zurückgeben on Sat, 23 Nov 2013 16:09:06 GMT]]></title><description><![CDATA[<p>Funktioniert:</p>
<pre><code>int calc (int x){

...

cout &lt;&lt; &quot;Volumen beträgt: &quot; &lt;&lt; calc(length) &lt;&lt; endl;
</code></pre>
<p>Fehler:</p>
<pre><code>char copyArray(char newField[HEIGHT][WIDTH], char field[HEIGHT][WIDTH]) {

...

char newField[0][0] = copyArray();
</code></pre>
<p>Fehlt da nicht irgendwas?</p>
<p>P.S.: Das heißt nicht unbedingt, dass deine Funktion macht, was du willst, was sie macht, wenn du diesen Fehler korrigierst. Aber ein Schritt nach dem anderen. Erstmal die Grundlagen von Funktionen lernen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2367402</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2367402</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Sat, 23 Nov 2013 16:09:06 GMT</pubDate></item><item><title><![CDATA[Reply to 2D char Array übergeben, kopieren und zurückgeben on Sat, 23 Nov 2013 16:27:57 GMT]]></title><description><![CDATA[<p>Hm beim Aufruf von der copyArray Funktion muss ich was übergeben, also<br />
char newField[0][0] = copyArray(newField[HEIGHT][WIDTH]);</p>
<p>Allerdings bin ich mir nicht sicher ob ich die Höhe und Breite auch übergeben muss, die hab ich ja schließlich schon in einer globalen Variable.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2367412</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2367412</guid><dc:creator><![CDATA[Ares_]]></dc:creator><pubDate>Sat, 23 Nov 2013 16:27:57 GMT</pubDate></item><item><title><![CDATA[Reply to 2D char Array übergeben, kopieren und zurückgeben on Sat, 23 Nov 2013 17:44:38 GMT]]></title><description><![CDATA[<p>Lies im Grundlagenbuch deiner Wahl nochmal nach, wie man Arrays erstellt, an Funktionen uebergibt und einzelne Elemente adressiert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2367448</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2367448</guid><dc:creator><![CDATA[nman]]></dc:creator><pubDate>Sat, 23 Nov 2013 17:44:38 GMT</pubDate></item></channel></rss>