<?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[Array aus Funktion zurück]]></title><description><![CDATA[<p>Hallo ich hab folgendes Problem</p>
<p>ich rufe eine Funktion auf die der ich ein char übergebe, die den char in ein Array umwandelt, und nun das Array zurück gibt.<br />
Ich wollte also nur die Speicher adresse des Arrays zurück geben. Aber irgend etwas ging gehörig schief.</p>
<pre><code class="language-cpp">int main(){
char zeile;

rueckGaben = stringToArray(zeile);

}
string stringToArray(char* zeile){      //funktion die alle woerter eines strings splittet und in ein Array speichert

    int i = 0;
    string loadElemente[15];            //stringarray mit max 15 Elementen
    char* pToken = strtok(zeile, &quot; &quot;);
    if (pToken){                        //fuer das erste Element
        loadElemente[i] = pToken;
        i++;
        while ( (pToken = strtok(NULL, &quot; &quot;)) ){ //für alle kommenden Elemente
            loadElemente[i] = pToken;
            i++;
        }
    }
    return *loadElemente;
}
</code></pre>
<p>was zurück kommt ist immer nur der erste Element vom vorhanden Array und nicht die Speicheradresse</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/252702/array-aus-funktion-zurück</link><generator>RSS for Node</generator><lastBuildDate>Mon, 14 Sep 2026 05:43:52 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/252702.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 23 Oct 2009 09:53:20 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Array aus Funktion zurück on Fri, 23 Oct 2009 09:53:20 GMT]]></title><description><![CDATA[<p>Hallo ich hab folgendes Problem</p>
<p>ich rufe eine Funktion auf die der ich ein char übergebe, die den char in ein Array umwandelt, und nun das Array zurück gibt.<br />
Ich wollte also nur die Speicher adresse des Arrays zurück geben. Aber irgend etwas ging gehörig schief.</p>
<pre><code class="language-cpp">int main(){
char zeile;

rueckGaben = stringToArray(zeile);

}
string stringToArray(char* zeile){      //funktion die alle woerter eines strings splittet und in ein Array speichert

    int i = 0;
    string loadElemente[15];            //stringarray mit max 15 Elementen
    char* pToken = strtok(zeile, &quot; &quot;);
    if (pToken){                        //fuer das erste Element
        loadElemente[i] = pToken;
        i++;
        while ( (pToken = strtok(NULL, &quot; &quot;)) ){ //für alle kommenden Elemente
            loadElemente[i] = pToken;
            i++;
        }
    }
    return *loadElemente;
}
</code></pre>
<p>was zurück kommt ist immer nur der erste Element vom vorhanden Array und nicht die Speicheradresse</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1796948</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1796948</guid><dc:creator><![CDATA[Ishmael]]></dc:creator><pubDate>Fri, 23 Oct 2009 09:53:20 GMT</pubDate></item><item><title><![CDATA[Reply to Array aus Funktion zurück on Fri, 23 Oct 2009 09:58:48 GMT]]></title><description><![CDATA[<p>Ishmael schrieb:</p>
<blockquote>
<p>was zurück kommt ist immer nur der erste Element vom vorhanden Array und nicht die Speicheradresse</p>
</blockquote>
<p>Also exakt das, was du mit <code>return *loadElemente;</code> angefordert hast. Der Rückgabewert der Funktion ist außerdem <code>string</code> und nicht 'Array aus Strings'. Ändere das und es sollte tun was du erwartest.<br />
Was da in main steht, kann so nicht stimmen. Und deine Beschreibung des zu lösenden Problems passt auch nicht so recht zum Code.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1796953</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1796953</guid><dc:creator><![CDATA[Registrierter Troll]]></dc:creator><pubDate>Fri, 23 Oct 2009 09:58:48 GMT</pubDate></item><item><title><![CDATA[Reply to Array aus Funktion zurück on Fri, 23 Oct 2009 10:02:52 GMT]]></title><description><![CDATA[<ol>
<li>
<p>Das kann ja schonaml gar nicht gehen, weil zeile ein char ist und weder char* noch char[].</p>
</li>
<li>
<p>Adressen bekommt man mit dem &amp; Operator, der * Operator macht eher das Gegenteil. Deswegen bekommst du etwas anderes zurück als erwartet.</p>
</li>
<li>
<p>Du willst anscheinend einen Pointer oder Referenz auf ein Objekt zurückgeben, dass nur in deiner Funktion lebt. Das wird schiefgehen, weil es nach dem verlassen der Funktion nicht mehr existiert.</p>
</li>
<li>
<p>Du kennst ja offensichtlich std::string. Warum dann das ganze Rumgefrickel mit cstrings?</p>
</li>
</ol>
]]></description><link>https://www.c-plusplus.net/forum/post/1796957</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1796957</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Fri, 23 Oct 2009 10:02:52 GMT</pubDate></item><item><title><![CDATA[Reply to Array aus Funktion zurück on Fri, 23 Oct 2009 10:38:27 GMT]]></title><description><![CDATA[<p>Im Grunde genommen hole ich mir eine Datei und will die zeilenweise splitten und diese Zeile in einer anderen Funtion jedes Element in ein Array speichern.<br />
Damit ich das dann in der Ursprünglichen Funktion weiter verwenden kann.</p>
<pre><code class="language-cpp">void getUptimeinfo(int kerne){

    char     	zeile[MAX];

    ifstream loadavg(&quot;/proc/loadavg&quot;, ios::in | ios::binary);
    if (loadavg.good()){                                                
        loadavg.seekg(0L, ios::beg);                                   
        while (!loadavg.eof()){
            string loadElemente[15];                                    
            string rueckGaben;

            if(loadavg.getline(zeile, MAX)){                               
                rueckGaben = stringToArray(zeile);
                cout &lt;&lt;&quot;Rueckgabewerte:\t\t &quot; &lt;&lt; rueckGaben &lt;&lt; endl;
            }
        }
    }

}

string stringToArray(char* zeile){      

    int i = 0;
    string loadElemente[15];            
    char* pToken = strtok(zeile, &quot; &quot;);
    if (pToken){                        
        loadElemente[i] = pToken;
        i++;
        while ( (pToken = strtok(NULL, &quot; &quot;)) ){ 
            loadElemente[i] = pToken;
            i++;
        }
    }
    return *loadElemente;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1796990</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1796990</guid><dc:creator><![CDATA[Ishmael]]></dc:creator><pubDate>Fri, 23 Oct 2009 10:38:27 GMT</pubDate></item><item><title><![CDATA[Reply to Array aus Funktion zurück on Fri, 23 Oct 2009 10:46:44 GMT]]></title><description><![CDATA[<p>Hast Du die Antwortbeiträge überhaupt gelesen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1796996</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1796996</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Fri, 23 Oct 2009 10:46:44 GMT</pubDate></item><item><title><![CDATA[Reply to Array aus Funktion zurück on Fri, 23 Oct 2009 10:53:35 GMT]]></title><description><![CDATA[<p>Ja hab ich.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1797003</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1797003</guid><dc:creator><![CDATA[Ishmael]]></dc:creator><pubDate>Fri, 23 Oct 2009 10:53:35 GMT</pubDate></item><item><title><![CDATA[Reply to Array aus Funktion zurück on Fri, 23 Oct 2009 11:01:35 GMT]]></title><description><![CDATA[<p>Sorry wenn ich mich an einigen Stellen bissl blöd anstelle, ich bin Perl gewohnt und tu mich an einigen Sachen in C++ schwer.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1797005</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1797005</guid><dc:creator><![CDATA[Ishmael]]></dc:creator><pubDate>Fri, 23 Oct 2009 11:01:35 GMT</pubDate></item><item><title><![CDATA[Reply to Array aus Funktion zurück on Fri, 23 Oct 2009 11:53:14 GMT]]></title><description><![CDATA[<p>Ishmael schrieb:</p>
<blockquote>
<p>Ja hab ich.</p>
</blockquote>
<p>Dann solltest du auch auf sie eingehen anstatt unbehelligt weiterzuerzählen.</p>
<p>Ich würde mich ebenfalls ein wenig von dem <code>char</code> -Array lösen. Da musst du dich nicht auf eine konstante Grösse festlegen, die in den meisten Fällen Speicher verschwendet aber hin und wieder das Programm zum Absturz bringt, weil der Puffer eben doch zu klein war.</p>
<p>Eine Möglichkeit, mehrere Wörter zurückzugeben, sieht folgendermassen aus. Für die Implementierung kannst du dir die Funktionen <code>std::string::find()</code> und <code>std::string::substr()</code> auf <a href="http://www.cplusplus.com" rel="nofollow">www.cplusplus.com</a> anschauen. Du kannst natürlich auch bei deinem <code>strtok()</code> bleiben, aber halte das möglichst lokal.</p>
<pre><code class="language-cpp">std::vector&lt;std::string&gt; split_words(const std::string&amp; line);
</code></pre>
<p>Um eine Zeile einzulesen, bei der die Länge egal ist, gibt es die globale Funktion <code>std::getline()</code> :</p>
<pre><code class="language-cpp">std::ifstream stream(&quot;file.txt&quot;);
std::string line;
std::getline(stream, line);
</code></pre>
<p>Ishmael schrieb:</p>
<blockquote>
<p>Sorry wenn ich mich an einigen Stellen bissl blöd anstelle, ich bin Perl gewohnt und tu mich an einigen Sachen in C++ schwer.</p>
</blockquote>
<p>Ich rate dir, ein gutes Buch wie den C++-Primer zu lesen. C++ ist eine schwierige Programmiersprache - um die Dinge grundlegend zu verstehen, kommst du nicht um ausführliche Theorie herum.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1797033</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1797033</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Fri, 23 Oct 2009 11:53:14 GMT</pubDate></item><item><title><![CDATA[Reply to Array aus Funktion zurück on Fri, 23 Oct 2009 12:05:06 GMT]]></title><description><![CDATA[<p>He danke für deine Hilfe.</p>
<p>Ich glaube ich muss mich mal richtig intensiv damit beschäftigen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1797041</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1797041</guid><dc:creator><![CDATA[Ishmael]]></dc:creator><pubDate>Fri, 23 Oct 2009 12:05:06 GMT</pubDate></item></channel></rss>