<?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[Anfänger: Array und Funktionsrückgabe]]></title><description><![CDATA[<p>hallo,</p>
<p>könnte mir jemand bei diesme code helfen? Also aufagbe ist es aus dem string die zahlen herauszufiltern, aber es könnten auch verscheidene formate sein zB. TT.MM.JJJJ oder T.M.JJJJ usw.</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;stdlib.h&gt;
#include &lt;string&gt;

using namespace std;

int* kalender(string dtm)
{
    int *a;
    for(int x=0;x&lt;dtm.size();x++)
	{
		if(dtm[x]=='.')
           a = &amp;x; 
    }
    return a;    
}

int main()
{
	string datum = &quot;06.07.08&quot;;
	string tag =&quot;&quot;;
	string monat =&quot;&quot;;
	string jahr=&quot;&quot;;
	int start = 0;
	int *p_p; //PUNKTE-POSITION

    p_p = kalender(datum);

    tag = datum.substr(start,p_p[1]);
    start += p_p[1]+2;

    monat = datum.substr(start,p_p[2]);
    start += p_p[1]+2;

    jahr = datum.substr(start,p_p[3]);

     cout&lt;&lt;tag&lt;&lt;endl;;
     cout&lt;&lt;monat&lt;&lt;endl;
     cout&lt;&lt;jahr&lt;&lt;endl;

  system(&quot;PAUSE&quot;);
  return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/244743/anfänger-array-und-funktionsrückgabe</link><generator>RSS for Node</generator><lastBuildDate>Sat, 19 Sep 2026 04:53:04 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/244743.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 05 Jul 2009 02:19:29 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Anfänger: Array und Funktionsrückgabe on Sun, 05 Jul 2009 02:19:29 GMT]]></title><description><![CDATA[<p>hallo,</p>
<p>könnte mir jemand bei diesme code helfen? Also aufagbe ist es aus dem string die zahlen herauszufiltern, aber es könnten auch verscheidene formate sein zB. TT.MM.JJJJ oder T.M.JJJJ usw.</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;stdlib.h&gt;
#include &lt;string&gt;

using namespace std;

int* kalender(string dtm)
{
    int *a;
    for(int x=0;x&lt;dtm.size();x++)
	{
		if(dtm[x]=='.')
           a = &amp;x; 
    }
    return a;    
}

int main()
{
	string datum = &quot;06.07.08&quot;;
	string tag =&quot;&quot;;
	string monat =&quot;&quot;;
	string jahr=&quot;&quot;;
	int start = 0;
	int *p_p; //PUNKTE-POSITION

    p_p = kalender(datum);

    tag = datum.substr(start,p_p[1]);
    start += p_p[1]+2;

    monat = datum.substr(start,p_p[2]);
    start += p_p[1]+2;

    jahr = datum.substr(start,p_p[3]);

     cout&lt;&lt;tag&lt;&lt;endl;;
     cout&lt;&lt;monat&lt;&lt;endl;
     cout&lt;&lt;jahr&lt;&lt;endl;

  system(&quot;PAUSE&quot;);
  return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1737297</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1737297</guid><dc:creator><![CDATA[merchant]]></dc:creator><pubDate>Sun, 05 Jul 2009 02:19:29 GMT</pubDate></item><item><title><![CDATA[Reply to Anfänger: Array und Funktionsrückgabe on Sun, 05 Jul 2009 02:21:18 GMT]]></title><description><![CDATA[<p>Achso und mein problem ist, dass iwie das fesnter sofirt wieder zugeht nachdem ich kompiliert und ausgeführt habe.</p>
<p>es scheint iwie nen problem mit der adressierung etc zu geben...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1737298</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1737298</guid><dc:creator><![CDATA[merchant]]></dc:creator><pubDate>Sun, 05 Jul 2009 02:21:18 GMT</pubDate></item><item><title><![CDATA[Reply to Anfänger: Array und Funktionsrückgabe on Sun, 05 Jul 2009 05:26:39 GMT]]></title><description><![CDATA[<p>merchant schrieb:</p>
<blockquote>
<p>Achso und mein problem ist, dass iwie das fesnter sofirt wieder zugeht nachdem ich kompiliert und ausgeführt habe.</p>
<p>es scheint iwie nen problem mit der adressierung etc zu geben...</p>
</blockquote>
<p>Versuch mal statt [] die Funktion at()<br />
Dann wirst du den Fehler vielleicht sogar selber finden.<br />
(Tipp: start ist zu weit hinten )</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1737306</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1737306</guid><dc:creator><![CDATA[merchant-killer]]></dc:creator><pubDate>Sun, 05 Jul 2009 05:26:39 GMT</pubDate></item><item><title><![CDATA[Reply to Anfänger: Array und Funktionsrückgabe on Sun, 05 Jul 2009 05:33:23 GMT]]></title><description><![CDATA[<p>merchant-killer schrieb:</p>
<blockquote>
<p>merchant schrieb:</p>
<blockquote>
<p>Achso und mein problem ist, dass iwie das fesnter sofirt wieder zugeht nachdem ich kompiliert und ausgeführt habe.</p>
<p>es scheint iwie nen problem mit der adressierung etc zu geben...</p>
</blockquote>
<p>Versuch mal statt [] die Funktion at()<br />
Dann wirst du den Fehler vielleicht sogar selber finden.<br />
(Tipp: start ist zu weit hinten )</p>
</blockquote>
<p>Wat laberst du? <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><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/26836">@Topic</a>:<br />
int *p_p; //PUNKTE-POSITION Ist absoluter Unsinn! Was provozierst undefiniertes Verhalten. Dein Zeiger p_p zeigt auf nichts, also ist p_p[1] undefiniert.<br />
Gebe zahlen ein:<br />
datum.substr(0,1);<br />
datum.substr(3,4);<br />
datum.substr(6,7);</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1737307</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1737307</guid><dc:creator><![CDATA[merchant-killer-killer]]></dc:creator><pubDate>Sun, 05 Jul 2009 05:33:23 GMT</pubDate></item><item><title><![CDATA[Reply to Anfänger: Array und Funktionsrückgabe on Sun, 05 Jul 2009 05:37:25 GMT]]></title><description><![CDATA[<p>merchant-killer-killer schrieb:</p>
<blockquote>
<p>int *p_p; //PUNKTE-POSITION Ist absoluter Unsinn! Was provozierst undefiniertes Verhalten. Dein Zeiger p_p zeigt auf nichts, also ist p_p[1] undefiniert.</p>
</blockquote>
<p>Du hast aber deinen Kaffee auch noch nicht getrunken, heh? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
<p>in der Funktion kalender musst du wenn schon überhaupt int* a = new int[2];<br />
machen. Dennoch weiß ich nicht warum du das in einem array zwuschenspeichern willst. std::string bietet genug möglichkeiten um die Punkte zu finden.<br />
Zu a=&amp;x;<br />
x ist eine lokale variable in kalender(string); weshalb auch der Zeiger p_p ungültig wird, da x nach Ende von kalender nicht mehr existiert!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1737308</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1737308</guid><dc:creator><![CDATA[Aufklärer]]></dc:creator><pubDate>Sun, 05 Jul 2009 05:37:25 GMT</pubDate></item><item><title><![CDATA[Reply to Anfänger: Array und Funktionsrückgabe on Sun, 05 Jul 2009 05:53:45 GMT]]></title><description><![CDATA[<p>Also ich würde auch ein int array verwenden (Da ja nur 2 . erwünscht sind). So ist es wohl recht bequem und man kann fehler gut abfangen. (Jedoch mit Sicherheit kein dynamisches array!)<br />
Schau dir doch mal string::find an:<br />
<a href="http://www.cppreference.com/wiki/string/find" rel="nofollow">http://www.cppreference.com/wiki/string/find</a></p>
<p>Dort kannst du den nächsten Punkt suchen, wenn du angibst, ab wo du suchen willst (eben nach dem lezten gefundenen Punkt. Alles klar?<br />
Ich würde es so machen:<br />
Nach Punkten suchen und Positionen in int p[2] speichern.<br />
Falls mehr als array voll + punkt gefunden -&gt; zu viele Punkte: fehler<br />
mit substring so machen:<br />
datum.substr(0,p[0]);<br />
datum.substr(p[0],p[1]);<br />
datum.substr(p[1]);<br />
Schau dir auch für substr die referenz an:</p>
<p><a href="http://www.cppreference.com/wiki/string/substr" rel="nofollow">http://www.cppreference.com/wiki/string/substr</a></p>
<p>Wenn du das array in der Funktion kalender füllen willst, dann würde ich das array als argument übergeben, nicht rückgabetyp:</p>
<pre><code class="language-cpp">bool kalender(int* )
{
  //Fülle array und gebe zurück ob alles ok (genau 2 punkte gefunden)
}

int main() {
int p[2];
kalender(p);
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1737309</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1737309</guid><dc:creator><![CDATA[Pigeon]]></dc:creator><pubDate>Sun, 05 Jul 2009 05:53:45 GMT</pubDate></item><item><title><![CDATA[Reply to Anfänger: Array und Funktionsrückgabe on Sun, 05 Jul 2009 08:45:43 GMT]]></title><description><![CDATA[<p>merchant schrieb:</p>
<blockquote>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;stdlib.h&gt;
#include &lt;string&gt;

using namespace std;

int* kalender(string dtm)
{
    int *a;
    for(int x=0;x&lt;dtm.size();x++)
	{
		if(dtm[x]=='.')
           a = &amp;x; 
    }
</code></pre>
</blockquote>
<p>Der Inhalt von <code>a</code> ist an dieser Stelle wertlos, da <code>a</code> entweder nicht initialisiert wurde oder auf eine jetzt nicht mehr existierende Variable <code>x</code> zeigt.</p>
<blockquote>
<pre><code class="language-cpp">return a;    
}

int main()
{
	string datum = &quot;06.07.08&quot;;
	string tag =&quot;&quot;;
	string monat =&quot;&quot;;
	string jahr=&quot;&quot;;
	int start = 0;
	int *p_p; //PUNKTE-POSITION

    p_p = kalender(datum);
</code></pre>
</blockquote>
<p>Der Inhalt von <code>p_p</code> ist Müll.</p>
<blockquote>
<pre><code class="language-cpp">tag = datum.substr(start,p_p[1]);
    start += p_p[1]+2;
</code></pre>
</blockquote>
<p>Undefiniertes Verhalten (Zeigerarithmetik mit ungültigem Zeiger + Dereferenzieren)</p>
<blockquote>
<pre><code class="language-cpp">monat = datum.substr(start,p_p[2]);
    start += p_p[1]+2;
</code></pre>
</blockquote>
<p>Undefiniertes Verhalten</p>
<blockquote>
<pre><code class="language-cpp">jahr = datum.substr(start,p_p[3]);
</code></pre>
</blockquote>
<p>Undefiniertes Verhalten</p>
<p>Probier's mal hiermit:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;stdexcept&gt;
#include &lt;utility&gt;

using namespace std;

/**
 * findet zwei Punkte im String oder wirft eine Ausnahme, falls 
 * es weniger oder mehr Punkte gibt.
 */
pair&lt;int,int&gt; zwei_punkte(string const&amp; s)
{
	size_t pos[3];
	size_t next = 0;
	for (int k=0; k&lt;3; ++k) {
		size_t temp = s.find('.',next);
		if ((k==2) ^ (temp==string::npos))
			throw runtime_error(&quot;format error&quot;);
		pos[k] = temp;
		next = temp+1;
	}
	return pair&lt;int,int&gt;(pos[0],pos[1]);
}
</code></pre>
<p>Gruß,<br />
SP</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1737336</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1737336</guid><dc:creator><![CDATA[Sebastian Pizer]]></dc:creator><pubDate>Sun, 05 Jul 2009 08:45:43 GMT</pubDate></item></channel></rss>