<?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 Array Pointer]]></title><description><![CDATA[<p>Moin,</p>
<p>habe eine problem mit ponter QueryData welcher auf einen Array zeigt.<br />
Nur wird wenn ich drauf zugreife ab der hälfte des String anscheinend nicht mehr richtig zugeweisen leider habe ich den Fehler noch nicht gefunden.<br />
Das merkwürdige ist auch wenn ich innerhalb der Funktion urlencode drauf zugreife habe ich dieses phenomän nicht.<br />
Vllt kann mir hier jemand weiterhelfen.</p>
<pre><code class="language-cpp">char ***QueryData;

void urlencode(const char *input){
  if(input==0){
    return;
  }
  char* res=strtok((char*)input,&quot;&amp;&quot;);
  QueryData = new char**[strlen(res)+1];
  int i = 0;
  while( res != 0 &amp;&amp; i &lt; (sizeof(res)/sizeof(int))) {
    QueryData[i]= new char*[2];
    QueryData[i][0]=strtok(res,&quot;=&quot;);
    QueryData[i][1]=strtok(NULL,&quot;\0&quot;);
    i++;
  }
  if(QueryData[0][0]!=0){
    std::cout &lt;&lt; QueryData[0][0] &lt;&lt;std::endl;
  }
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/294234/problem-mit-array-pointer</link><generator>RSS for Node</generator><lastBuildDate>Sat, 15 Aug 2026 23:26:52 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/294234.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 20 Oct 2011 14:31:01 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Problem mit Array Pointer on Thu, 20 Oct 2011 14:32:18 GMT]]></title><description><![CDATA[<p>Moin,</p>
<p>habe eine problem mit ponter QueryData welcher auf einen Array zeigt.<br />
Nur wird wenn ich drauf zugreife ab der hälfte des String anscheinend nicht mehr richtig zugeweisen leider habe ich den Fehler noch nicht gefunden.<br />
Das merkwürdige ist auch wenn ich innerhalb der Funktion urlencode drauf zugreife habe ich dieses phenomän nicht.<br />
Vllt kann mir hier jemand weiterhelfen.</p>
<pre><code class="language-cpp">char ***QueryData;

void urlencode(const char *input){
  if(input==0){
    return;
  }
  char* res=strtok((char*)input,&quot;&amp;&quot;);
  QueryData = new char**[strlen(res)+1];
  int i = 0;
  while( res != 0 &amp;&amp; i &lt; (sizeof(res)/sizeof(int))) {
    QueryData[i]= new char*[2];
    QueryData[i][0]=strtok(res,&quot;=&quot;);
    QueryData[i][1]=strtok(NULL,&quot;\0&quot;);
    i++;
  }
  if(QueryData[0][0]!=0){
    std::cout &lt;&lt; QueryData[0][0] &lt;&lt;std::endl;
  }
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2133737</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2133737</guid><dc:creator><![CDATA[Tuxist]]></dc:creator><pubDate>Thu, 20 Oct 2011 14:32:18 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Array Pointer on Thu, 20 Oct 2011 14:45:47 GMT]]></title><description><![CDATA[<p>Tuxist schrieb:</p>
<blockquote>
<pre><code class="language-cpp">char ***QueryData;
</code></pre>
</blockquote>
<p>Das habe ich jetzt seit Jahren nicht mehr gesehen. Wahnsinn!!!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2133743</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2133743</guid><dc:creator><![CDATA[hmpf]]></dc:creator><pubDate>Thu, 20 Oct 2011 14:45:47 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Array Pointer on Thu, 20 Oct 2011 14:55:43 GMT]]></title><description><![CDATA[<p>inwiefern ? das verweist nur auf nen 2 dimensionales array wo ein char array drinne gespeichert wird.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2133747</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2133747</guid><dc:creator><![CDATA[Tuxist]]></dc:creator><pubDate>Thu, 20 Oct 2011 14:55:43 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Array Pointer on Thu, 20 Oct 2011 14:56:47 GMT]]></title><description><![CDATA[<p>Uff.</p>
<pre><code class="language-cpp">char* res=strtok((char*)input,&quot;&amp;&quot;);
</code></pre>
<p>Da müssten eigentlich sofort sämtliche Alarmglocken schrillen.</p>
<p>Auch nicht schlecht:</p>
<pre><code class="language-cpp">while( res != 0 &amp;&amp; i &lt; (sizeof(res)/sizeof(int)))
</code></pre>
<p>(wenn man den Typ von res bedenkt)</p>
<p>Fazit: Lass die Pointerfummelei.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2133748</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2133748</guid><dc:creator><![CDATA[Bashar]]></dc:creator><pubDate>Thu, 20 Oct 2011 14:56:47 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Array Pointer on Thu, 20 Oct 2011 15:14:44 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">char* res=strtok((char*)input,&quot;&amp;&quot;);
</code></pre>
<p>type casting von const char* zu char * dar strtok ein char* erwartet und mir den zeiger auf die gewünschten werte zurück gibt. Sehe hier jetzt kein Problem aber lasse mich gerne eines besseren belehren.</p>
<p>habe ich geprüft gibt mir immer die länge des arrays, aber wenn es eine bessere Lösung gibt würde ich die gerne hören.</p>
<pre><code class="language-cpp">while( res != 0 &amp;&amp; i &lt; (sizeof(res)/sizeof(int)))
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2133754</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2133754</guid><dc:creator><![CDATA[Tuxist]]></dc:creator><pubDate>Thu, 20 Oct 2011 15:14:44 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Array Pointer on Thu, 20 Oct 2011 15:24:34 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">sizeof(res)/sizeof(int) = 1
</code></pre>
<p>das kann nicht das sein, was du haben willst. Schau dir lieber mal std::vector und std::string an. Dann wird dein Code sicherer (und letztendlich funktionieren)</p>
<p>greetz KN4CK3R</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2133757</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2133757</guid><dc:creator><![CDATA[KN4CK3R]]></dc:creator><pubDate>Thu, 20 Oct 2011 15:24:34 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Array Pointer on Thu, 20 Oct 2011 15:28:28 GMT]]></title><description><![CDATA[<p>Ich bin verwirrt... <em>res</em> ist doch ein Zeiger, hat damit wahrscheinlich eine Größe von 4Byte, genauso wie wahrscheinlich dein <em>int</em> 4Byte hat. Und 4/4 ergibt ja bekanntlich 1, was deine Schleife nur 1x durchlaufen ließe. Und <em>const</em> wegzucasten ist glaub auch nicht so das wahre. Du musst immer bedenken, nur weil der Compiler nicht meckert heißt das noch lange nicht, dass das Programm funktioniert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2133758</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2133758</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Thu, 20 Oct 2011 15:28:28 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Array Pointer on Thu, 20 Oct 2011 15:35:05 GMT]]></title><description><![CDATA[<p>Bei mir ist sizeof(res) / sizeof(int) == 2.</p>
<p>Wenn du einen char const * entgegennimmst, versprichst du, nicht darin herumzuschreiben. Ihn an strtok weiterzureichen, ist dementsprechend keine gute Möglichkeit. Die Funktionalität von strtok scheint dir auch nicht so richtig klar zu sein.</p>
<p>Überhaupt: Wo wir doch im C++-Forum sind, warum arbeitest du nicht mit std::string und std::stringstream? Damit wäre das viel einfacher zu haben. Wenn ich richtig verstehe, was du vorhast (ungetestet):</p>
<pre><code class="language-cpp">#include &lt;stdexcept&gt;
#include &lt;sstream&gt;
#include &lt;string&gt;
#include &lt;vector&gt;
#include &lt;utility&gt;

std::vector&lt;std::pair&lt;std::string, std::string&gt; &gt; urldecode(std::string const &amp;url) {
  std::vector&lt;std::pair&lt;std::string, std::string&gt; &gt; result;
  std::istringstream url_stream(url);
  std::string resource;

  while(std::getline(url_stream, resource, '&amp;')) {
    std::istringstream resource_stream(resource);
    std::string name, value;

    std::getline(resource_stream, name, '=');
    value = resource_stream.str();

    if(!resource_stream) { throw std::invalid_argument(resource); }

    result.push_back(std::make_pair(name, value));
  }

  return result;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2133762</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2133762</guid><dc:creator><![CDATA[seldon]]></dc:creator><pubDate>Thu, 20 Oct 2011 15:35:05 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Array Pointer on Thu, 20 Oct 2011 16:36:41 GMT]]></title><description><![CDATA[<p>seldon schrieb:</p>
<blockquote>
<p>Bei mir ist sizeof(res) / sizeof(int) == 2.</p>
</blockquote>
<p>Eben. Das kann von System zu System variieren.</p>
<p>Was ich aber nicht ganz verstehe, ist wozu du diese Zeile</p>
<pre><code class="language-cpp">std::cout &lt;&lt; QueryData[0][0] &lt;&lt;std::endl;
</code></pre>
<p>brauchst?</p>
<pre><code class="language-cpp">printf (&quot;%c\n&quot;,QueryData[0][0]);
</code></pre>
<p>hätte es doch auch getan (zumindest syntaktisch) und du wärst vor allem einheitlich bei deinem C geblieben.<br />
Ich versuch mal deine Frage zu verstehen (an deiner Zeichensetzung solltest du auch arbeiten): wenn du auf dein Array über QueryData nicht über diese Funktion zugreifst (d.h. dann wahrscheinlich in einer anderen Methode), dann passieren komische Dinge, die sich hier im Forum nur schwer beschreiben lassen. Wenn du das aber innerhalb von urlencode() machst, dann läuft dein Programm erwartungsgemäß und das Phänomen tritt nicht auf. Habe ich das richtig entziffert?<br />
Wenn ja, dann wo ist das problem?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2133779</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2133779</guid><dc:creator><![CDATA[*Rewind*]]></dc:creator><pubDate>Thu, 20 Oct 2011 16:36:41 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Array Pointer on Thu, 20 Oct 2011 18:16:24 GMT]]></title><description><![CDATA[<p>das ist nur ein Auszug aus einer klasse später wird noch mal auf Querydata Zugriffen mit einem Get. Ich habe es in C implementiert dar ich die Befürchtung hege das mit einem multiform Datei Upload der Arm zu sehr ins schwitzen kommt und c array schneller sind als stl Container. Der Datei Upload hat ist natürlich in einer anderen Funktion speichert aber im selben array.</p>
<p>prinft ist natürlich schöner das cout hatte ich aber nur zum Debuggen drinne und fliegt wieder raus.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2133812</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2133812</guid><dc:creator><![CDATA[Tuxi]]></dc:creator><pubDate>Thu, 20 Oct 2011 18:16:24 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Array Pointer on Thu, 20 Oct 2011 18:43:09 GMT]]></title><description><![CDATA[<p>Tuxi schrieb:</p>
<blockquote>
<p>das ist nur ein Auszug aus einer klasse später wird noch mal auf Querydata Zugriffen mit einem Get. Ich habe es in C implementiert dar ich die Befürchtung hege das mit einem multiform Datei Upload der Arm zu sehr ins schwitzen kommt und c array schneller sind als stl Container. Der Datei Upload hat ist natürlich in einer anderen Funktion speichert aber im selben array.</p>
<p>prinft ist natürlich schöner das cout hatte ich aber nur zum Debuggen drinne und fliegt wieder raus.</p>
</blockquote>
<p>Kommt immer darauf an, wie du die STL-Container verwendest.<br />
std::vector ist praktisch immer gleichschnell wie deine manuelle Speicherverwaltung.<br />
Seldons Beispiel hingegen verbrät aber schon massig Rechenzeit.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2133821</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2133821</guid><dc:creator><![CDATA[Ethon__]]></dc:creator><pubDate>Thu, 20 Oct 2011 18:43:09 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Array Pointer on Fri, 21 Oct 2011 09:37:03 GMT]]></title><description><![CDATA[<p>habe die funktion nochmal überarbeitet leider mit dem selben erfolg</p>
<pre><code class="language-cpp">char ***QueryData;

void urlencode(char *input){ 
  if(input==0){
    return;
  }
  char* res=strtok(input,&quot;&amp;&quot;);
  QueryData = new char**[strlen(res)+1];
  int i = 0;  
  while( res != 0 &amp;&amp; i &lt; strlen(res)/sizeof(int)) {
    QueryData[i]= new char*[2];
    QueryData[i][0]=strtok(res,&quot;=&quot;);
    QueryData[i][1]=strtok(NULL,&quot;\0&quot;);
    i++;
  }
  if(QueryData[0][0]!=0){
    std::cout &lt;&lt; QueryData[0][0] &lt;&lt;std::endl; //ausgabe hier noch korreckt
  }
}
</code></pre>
<p>Das die funktion wie auf den Array zugreife:</p>
<pre><code class="language-cpp">const char getFormdata(const char *name){
  if(QueryData==0){
    return 0;    
  }
  printf(QueryData[0][0]); //debug ausgabe gib wirre zeichen
  printf(QueryData[0][1]); //value wird korrekt ausgegeben 
  for( int pos = 0; pos &lt; sizeof(QueryData)/sizeof(int); pos++ ){
    if(strcmp(QueryData[pos][0],name)==0){
      return QueryData[pos][1];    
    }
  }
  return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2133976</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2133976</guid><dc:creator><![CDATA[Tuxist]]></dc:creator><pubDate>Fri, 21 Oct 2011 09:37:03 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Array Pointer on Fri, 21 Oct 2011 09:26:49 GMT]]></title><description><![CDATA[<p>Tuxist schrieb:</p>
<blockquote>
<p>habe die funktion nochmal überarbeitet leider mit dem selben erfolg</p>
</blockquote>
<p>Ich seh keine Überarbeitung. Meine angemeckerten Punkte sind noch drin. Vielleicht hast du die aber auch gar nicht verstanden, aber ... sie sind einfacher zu verstehen als die Benutzung von strtok <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/2133980</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2133980</guid><dc:creator><![CDATA[Bashar]]></dc:creator><pubDate>Fri, 21 Oct 2011 09:26:49 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Array Pointer on Fri, 21 Oct 2011 09:39:18 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">urlencode(char *input)
</code></pre>
<p>ist jetzt nen char *</p>
<pre><code class="language-cpp">while( res != 0 &amp;&amp; i &lt; strlen(res)/sizeof(int))
</code></pre>
<p>verwende jetzt strlen()</p>
<p>?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2133987</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2133987</guid><dc:creator><![CDATA[Tuxist]]></dc:creator><pubDate>Fri, 21 Oct 2011 09:39:18 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Array Pointer on Fri, 21 Oct 2011 11:59:27 GMT]]></title><description><![CDATA[<p>Fast perfekt nur str copy koppiert immer nur erste value ist aber lösbar <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="😃"
    /></p>
<pre><code class="language-cpp">void urlencode(char *input){ 
  if(input==0){
    return;
  }
  char *res;
  int i=0;  
  QueryData = new char**[strlen(input)+1]; 
  while((res=strsep(&amp;input,&quot;&amp;&quot;))!=0) {      
    char *res2;
    while((res2=strsep(&amp;res,&quot;=&quot;))!=0) {
      if(res!=0){
        QueryData[i]= new char*[2];
        QueryData[i][0]=new char;
        strcpy(QueryData[i][0],res2);
        QueryData[i][1]=new char;
        strcpy(QueryData[i][1],res);
        printf(&quot;%s: %s\n&quot;,res2,res);
      }
    }
    i++; 
  }
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2133993</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2133993</guid><dc:creator><![CDATA[Tuxist]]></dc:creator><pubDate>Fri, 21 Oct 2011 11:59:27 GMT</pubDate></item></channel></rss>