<?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[Problem mit char pointern]]></title><description><![CDATA[<p>Ich schreibe der zeit an einem Programm das einen Staz in Teilsätze aufteile. Dazu benutze ich zwei Klassen sentence und subSentence. bei sentence ist der operator= mit einem char pointer überladen. also kann ich hier einfach einen char pointer zuweisen. dieser wird dann analysiert. trifft die funktion auf ein komma, wird der satz von dem letzt komma oder satzanfang bis zu diesem komma kopiert. das alles funktioniert auch. wenn ich die teilsätze dann acuh ausgebe kommt hinter den zweiten ein hochgestelltes L und &quot;3D&quot;. Wenn ich jedoch davor eine Zahl ausgebe wir dieses nicht angezeigt. Hier der Quellcode:</p>
<pre><code>int numChar = lengthOfPChar(sent);
     for(int i,j = 0; i &lt;= numChar; i++)
     {
             char c = sent[i];
             if(c == ',')
             {
                  int numNChar = i - j;
                  cout&lt;&lt;&quot;numNChar&quot;&lt;&lt;numNChar&lt;&lt;endl;//Wenn das hier
//auskommentiert ist wird das L3D angezeigt wenn nicht
//wird es nicht angezeigt
                  char newSent[numNChar];
                  for(int k = 0; k &lt;= numNChar; k++)
                  {
                          cout&lt;&lt;&quot;k&quot;&lt;&lt;k&lt;&lt;endl;
                          cout&lt;&lt;&quot;j&quot;&lt;&lt;j&lt;&lt;endl;
                          newSent[k] = sent[j];
                          cout&lt;&lt;&quot;ck&quot;&lt;&lt;newSent[k]&lt;&lt;endl;
                          cout&lt;&lt;&quot;cj&quot;&lt;&lt;sent[j]&lt;&lt;endl;
                          j++;
                  }
                  cout&lt;&lt;newSent&lt;&lt;endl;
                  j = i + 1;
                  myNumSubSent++;
             }
     }
</code></pre>
<p>Edit: es ist nicht immer das L3D sondenr je nach eingabe etwas anderes, aber es erscheint nur wenn das obige Codeteil auskommentiert ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/221946/problem-mit-char-pointern</link><generator>RSS for Node</generator><lastBuildDate>Mon, 05 Oct 2026 13:42:08 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/221946.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 05 Sep 2008 09:39:18 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Problem mit char pointern on Fri, 05 Sep 2008 09:41:29 GMT]]></title><description><![CDATA[<p>Ich schreibe der zeit an einem Programm das einen Staz in Teilsätze aufteile. Dazu benutze ich zwei Klassen sentence und subSentence. bei sentence ist der operator= mit einem char pointer überladen. also kann ich hier einfach einen char pointer zuweisen. dieser wird dann analysiert. trifft die funktion auf ein komma, wird der satz von dem letzt komma oder satzanfang bis zu diesem komma kopiert. das alles funktioniert auch. wenn ich die teilsätze dann acuh ausgebe kommt hinter den zweiten ein hochgestelltes L und &quot;3D&quot;. Wenn ich jedoch davor eine Zahl ausgebe wir dieses nicht angezeigt. Hier der Quellcode:</p>
<pre><code>int numChar = lengthOfPChar(sent);
     for(int i,j = 0; i &lt;= numChar; i++)
     {
             char c = sent[i];
             if(c == ',')
             {
                  int numNChar = i - j;
                  cout&lt;&lt;&quot;numNChar&quot;&lt;&lt;numNChar&lt;&lt;endl;//Wenn das hier
//auskommentiert ist wird das L3D angezeigt wenn nicht
//wird es nicht angezeigt
                  char newSent[numNChar];
                  for(int k = 0; k &lt;= numNChar; k++)
                  {
                          cout&lt;&lt;&quot;k&quot;&lt;&lt;k&lt;&lt;endl;
                          cout&lt;&lt;&quot;j&quot;&lt;&lt;j&lt;&lt;endl;
                          newSent[k] = sent[j];
                          cout&lt;&lt;&quot;ck&quot;&lt;&lt;newSent[k]&lt;&lt;endl;
                          cout&lt;&lt;&quot;cj&quot;&lt;&lt;sent[j]&lt;&lt;endl;
                          j++;
                  }
                  cout&lt;&lt;newSent&lt;&lt;endl;
                  j = i + 1;
                  myNumSubSent++;
             }
     }
</code></pre>
<p>Edit: es ist nicht immer das L3D sondenr je nach eingabe etwas anderes, aber es erscheint nur wenn das obige Codeteil auskommentiert ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1577012</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1577012</guid><dc:creator><![CDATA[tweenki]]></dc:creator><pubDate>Fri, 05 Sep 2008 09:41:29 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit char pointern on Fri, 05 Sep 2008 09:45:07 GMT]]></title><description><![CDATA[<p>Ohne den Rest angeschaut zu haben, du hast an einigen Stellen sowas: <strong>i &lt;= numChar</strong>, mach da mal <strong>&lt;</strong> draus.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1577017</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1577017</guid><dc:creator><![CDATA[Fellhuhn]]></dc:creator><pubDate>Fri, 05 Sep 2008 09:45:07 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit char pointern on Fri, 05 Sep 2008 09:54:07 GMT]]></title><description><![CDATA[<p>also das zweite &lt;= ist damit das komma mitgenommen wird. das erste weiss ich nicht genau jedenfalls passiert nichts wenn man es zu einem &lt; macht. es nimmt jedenfalls die nullterminierung mit.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1577023</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1577023</guid><dc:creator><![CDATA[tweenki]]></dc:creator><pubDate>Fri, 05 Sep 2008 09:54:07 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit char pointern on Fri, 05 Sep 2008 09:57:44 GMT]]></title><description><![CDATA[<p>tweenki schrieb:</p>
<blockquote>
<p>also das zweite &lt;= ist damit das komma mitgenommen wird.</p>
</blockquote>
<p>Dann mach das Array größer. Der letzte erlaubte Index für newSent ist numNChar-1.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1577025</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1577025</guid><dc:creator><![CDATA[MFK]]></dc:creator><pubDate>Fri, 05 Sep 2008 09:57:44 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit char pointern on Fri, 05 Sep 2008 10:02:26 GMT]]></title><description><![CDATA[<p>Außerdem ist i in der Schleife nicht initialisiert. int i = 0, j = 0;</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1577029</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1577029</guid><dc:creator><![CDATA[Fellhuhn]]></dc:creator><pubDate>Fri, 05 Sep 2008 10:02:26 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit char pointern on Fri, 05 Sep 2008 10:05:53 GMT]]></title><description><![CDATA[<p>Und pack zu <strong>int numNChar = i - j;</strong> noch ein + 1, damit du hinter der Schleife <strong>newSent[numNChar-1] = 0;</strong> setzen kannst. Denn sonst fehlt in dem String die terminierende Null. Und die &lt;= alle durch &lt; ersetzen.<br />
Dann fehlt auch noch am Ende die Ausgabe des Reststrings.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1577032</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1577032</guid><dc:creator><![CDATA[Fellhuhn]]></dc:creator><pubDate>Fri, 05 Sep 2008 10:05:53 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit char pointern on Fri, 05 Sep 2008 10:11:52 GMT]]></title><description><![CDATA[<p>ja durch das komma wäre ein pufferüberlauf passiert. ich habs jetzt immer eins größer. das mit dem int i = 0, j = 0; hab ich auch gemacht aber hat auch nichts gebracht.<br />
Es muss irgendetwas mit diesem numNChar zu tun haben, wenn ich es ausgebe stimmt alles wenn ich es nicht ausgebe, wird nach dem komma immer noch ein buchstabe ausgegeben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1577034</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1577034</guid><dc:creator><![CDATA[tweenki]]></dc:creator><pubDate>Fri, 05 Sep 2008 10:11:52 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit char pointern on Fri, 05 Sep 2008 10:16:57 GMT]]></title><description><![CDATA[<p>Es war die Null-Terminierung.</p>
<pre><code>int numChar = lengthOfPChar(sent);
     for(int i = 0,j = 0; i &lt;= numChar; i++)
     {
             char c = sent[i];
             if(c == ',')
             {
                  int numNChar = i - j;
                  //cout&lt;&lt;&quot;numNChar&quot;&lt;&lt;numNChar&lt;&lt;endl;
                  char newSent[numNChar+2];
                  cout&lt;&lt;sizeof(newSent)&lt;&lt;endl;
                  for(int k = 0; k &lt;= numNChar; k++)
                  {
                          cout&lt;&lt;&quot;k&quot;&lt;&lt;k&lt;&lt;endl;
                          cout&lt;&lt;&quot;j&quot;&lt;&lt;j&lt;&lt;endl;
                          newSent[k] = sent[j];
                          cout&lt;&lt;&quot;ck&quot;&lt;&lt;newSent[k]&lt;&lt;endl;
                          cout&lt;&lt;&quot;cj&quot;&lt;&lt;sent[j]&lt;&lt;endl;
                          j++;
                  }
                  newSent[sizeof(newSent)-1] = '\0';
                  cout&lt;&lt;newSent&lt;&lt;endl;
                  cout&lt;&lt;sizeof(newSent)&lt;&lt;endl;
                  j = i + 1;
                  myNumSubSent++;
             }
     }
</code></pre>
<p>so sieht der Code jetzt aus.</p>
<p>Danke <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1577042</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1577042</guid><dc:creator><![CDATA[tweenki]]></dc:creator><pubDate>Fri, 05 Sep 2008 10:16:57 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit char pointern on Fri, 05 Sep 2008 10:19:02 GMT]]></title><description><![CDATA[<p>Nein, das Problem ist das du stumpf über Array-Grenzen hinweg arbeitest, das du in das neue Char-Array zwar die richtigen Buchstaben schreibst, dann aber die terminierende Null vergißt...</p>
<p>Folgendes funzt nämlich:</p>
<pre><code class="language-cpp">int myNumSubSent = 0;

    int numChar = strlen(sent);
    int j = 0;
    for(int i = 0; i &lt; numChar; i++){
	char c = sent[i];
	if(c == ','){
	    int numNChar = i - j + 1;
	    char newSent[numNChar];
	    for(int k = 0; k &lt; numNChar - 1; k++){
		newSent[k] = sent[j];
		j++;
	    }
	    newSent[numNChar-1] = 0;
	    cout &lt;&lt; newSent &lt;&lt; endl;
	    j = i + 1;
	    myNumSubSent++;
	}
    }
    cout &lt;&lt; &amp;sent[j] &lt;&lt; endl;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1577044</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1577044</guid><dc:creator><![CDATA[Fellhuhn]]></dc:creator><pubDate>Fri, 05 Sep 2008 10:19:02 GMT</pubDate></item></channel></rss>