<?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[Probleme Vergleich char*]]></title><description><![CDATA[<p>Moin,</p>
<p>ich versuche zwei array of char in einer if Abfrage zu vergleichen, leider vergeblich.</p>
<p>Varible1:</p>
<pre><code>const char* subscribe_topic[] ={&quot;/30/SensorID&quot;, 
                                &quot;/30/AktorID&quot;
                                };
</code></pre>
<p>Variable2 wir der methode übergeben:</p>
<pre><code>void broker_callback (char* topic, byte* payload, unsigned int length) {
  char value[10] = &quot;&quot;;

  for (int i = 0; i &lt; length; i++) {
    value[i] = payload[i];
  }
  for (int i = 0; i &lt; (sizeof(subscribe_topic)/sizeof(int)); i++){
    Serial.print(&quot;Topic =    &quot;);
    Serial.print(topic);
    Serial.println(&quot;*&quot;);
    Serial.print(&quot;subscribe =&quot;);
    Serial.print(subscribe_topic[i]);
    Serial.println(&quot;*&quot;);

    if (topic == subscribe_topic[i]){
      Serial.println(&quot;Treffer&quot;);
      topic_action(i, topic, value);
    }
  }  
}
</code></pre>
<p>Hier noch das Printergebnis:</p>
<pre><code>Topic =    /30/AktorID*
subscribe =/30/SensorID*
Topic =    /30/AktorID*
subscribe =/30/AktorID*
</code></pre>
<p>demnach müsste der zweite Durchlauf doch ein TRUE in der IF-clauses geben?<br />
Ist aber nicht so.</p>
<p>Hängen da noch Sonderzeichen dran?</p>
<p>Danke für eure Unterstützung.<br />
Pf@nne</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/334776/probleme-vergleich-char</link><generator>RSS for Node</generator><lastBuildDate>Sat, 25 Apr 2026 06:34:07 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/334776.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 09 Oct 2015 18:41:41 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Probleme Vergleich char* on Fri, 09 Oct 2015 18:44:36 GMT]]></title><description><![CDATA[<p>Moin,</p>
<p>ich versuche zwei array of char in einer if Abfrage zu vergleichen, leider vergeblich.</p>
<p>Varible1:</p>
<pre><code>const char* subscribe_topic[] ={&quot;/30/SensorID&quot;, 
                                &quot;/30/AktorID&quot;
                                };
</code></pre>
<p>Variable2 wir der methode übergeben:</p>
<pre><code>void broker_callback (char* topic, byte* payload, unsigned int length) {
  char value[10] = &quot;&quot;;

  for (int i = 0; i &lt; length; i++) {
    value[i] = payload[i];
  }
  for (int i = 0; i &lt; (sizeof(subscribe_topic)/sizeof(int)); i++){
    Serial.print(&quot;Topic =    &quot;);
    Serial.print(topic);
    Serial.println(&quot;*&quot;);
    Serial.print(&quot;subscribe =&quot;);
    Serial.print(subscribe_topic[i]);
    Serial.println(&quot;*&quot;);

    if (topic == subscribe_topic[i]){
      Serial.println(&quot;Treffer&quot;);
      topic_action(i, topic, value);
    }
  }  
}
</code></pre>
<p>Hier noch das Printergebnis:</p>
<pre><code>Topic =    /30/AktorID*
subscribe =/30/SensorID*
Topic =    /30/AktorID*
subscribe =/30/AktorID*
</code></pre>
<p>demnach müsste der zweite Durchlauf doch ein TRUE in der IF-clauses geben?<br />
Ist aber nicht so.</p>
<p>Hängen da noch Sonderzeichen dran?</p>
<p>Danke für eure Unterstützung.<br />
Pf@nne</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2470537</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2470537</guid><dc:creator><![CDATA[Pf*nne]]></dc:creator><pubDate>Fri, 09 Oct 2015 18:44:36 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme Vergleich char* on Fri, 09 Oct 2015 19:02:07 GMT]]></title><description><![CDATA[<p>Du hast die Zeiger verglichen, nicht worauf sie zeigen.</p>
<p>Wenn du nicht weißt, wie man in C mit Zeichenketten umgeht, dann nutz doch die C++-Zeichenketten. Mit std::string wäre das nicht passiert. Der verhält sich, wie man es intuitiv erwartet.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2470539</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2470539</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Fri, 09 Oct 2015 19:02:07 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme Vergleich char* on Fri, 09 Oct 2015 19:07:57 GMT]]></title><description><![CDATA[<p>Ich habe vorher noch nichts mit C/C++ gemacht, daher tue ich mich ein wenig schwer.</p>
<p>std::string --&gt; schaue ich mir an.</p>
<p>Wie wäre der Vergleich denn richtig?</p>
<p>Das könnte auch erklären warum sizeof=4 ist, obwohl der String länger ist?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2470540</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2470540</guid><dc:creator><![CDATA[Pf*nne]]></dc:creator><pubDate>Fri, 09 Oct 2015 19:07:57 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme Vergleich char* on Fri, 09 Oct 2015 19:20:56 GMT]]></title><description><![CDATA[<p>Pf@nne schrieb:</p>
<blockquote>
<p>Ich habe vorher noch nichts mit C/C++ gemacht, daher tue ich mich ein wenig schwer.</p>
</blockquote>
<p>Eine erste wichtige Erkenntnis wäre, dass C und C++ zwei ganz unterschiedliche Sprachen sind.</p>
<p>Das ist übrigens auch eine gute Möglichkeit, schlechte Lehrbücher und Lehrer zu erkennen, wenn sie behaupten, &quot;C/C++&quot; zu lehren.</p>
<blockquote>
<p>Wie wäre der Vergleich denn richtig?</p>
</blockquote>
<p>Die fertige Funktion strcmp aus der C-Standardbibliothek benutzen. Oder von Hand jedes Zeichen einzeln vergleichen (nichts anderes macht strcmp). Bei std::string einfach ganz intuitiv mittels ==.</p>
<blockquote>
<p>Das könnte auch erklären warum sizeof=4 ist, obwohl der String länger ist?</p>
</blockquote>
<p>Korrekt. Wenn du auch nicht mit rohen C-Arrays umgehen kannst, wären auch hier die C++-Alternativen (std::array oder einer der vielen anderen Container, wie z.B. der sehr nützliche std::vector) besser, denn die kennen ihre Größen selber und machen keine komischen Umwandlungen durch, wenn man sie an Funktionen übergibt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2470541</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2470541</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Fri, 09 Oct 2015 19:20:56 GMT</pubDate></item><item><title><![CDATA[Reply to Probleme Vergleich char* on Fri, 09 Oct 2015 19:25:11 GMT]]></title><description><![CDATA[<p>Ich hab es jetzt mit strcmp gelöst.</p>
<pre><code>if (strcmp(topic, subscribe_topic[i]) == 0){
</code></pre>
<p>Ich bin mir nicht sicher ob ich den vollen c++ Umfang zu Verfügung habe,<br />
da ich mt der Arduino-Umgebung für µC arbeite.</p>
<p>Ich komme da schritweise hinter, solange mir so nette Leute wie du helfen!!</p>
<p>Danke für deine Mühe!</p>
<p>Schönen Freirag Abend.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2470542</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2470542</guid><dc:creator><![CDATA[Pf*nne]]></dc:creator><pubDate>Fri, 09 Oct 2015 19:25:11 GMT</pubDate></item></channel></rss>