<?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[strlen Probleme]]></title><description><![CDATA[<p>Hallo.</p>
<p>Ich habe in einem String mehrere Hex-Commandos gespeichert.<br />
Nun möchte ich die Länge des Strings bestimmen (ja ich weiss mit <strong>strlen</strong> soll das gehen) und diesen Wert als als Hex-Wert in einem neuen String zusammen mit den Hex-Commandos schreiben.</p>
<p>Beispiel:<br />
Stringalt = 0x60, 0x05, 0x 00, 0x01, \n<br />
Stringlänge = 4<br />
--&gt; Stringneu = 0x04, 0x60, 0x05, 0x00, 0x01, \n</p>
<p>Da ich diese Strings durch verschiedene Funktionen jonglieren möchte, wäre es recht mühselig jedesmal das in ein Char-Array zu wandeln und dann wieder zurück in Strings.<br />
Hat jemand ne Idee?</p>
<p>Btw:</p>
<pre><code class="language-cpp">int iBytecount=strlen(CommandIn);
</code></pre>
<p>Warum steht da hinterher nix drin?<br />
Bzw. strlen gibt glaube ich size_t zurück. Wie wandel ich das in int?<br />
Danke.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/188450/strlen-probleme</link><generator>RSS for Node</generator><lastBuildDate>Fri, 25 Sep 2026 02:30:55 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/188450.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 31 Jul 2007 13:39:23 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to strlen Probleme on Tue, 31 Jul 2007 13:45:14 GMT]]></title><description><![CDATA[<p>Hallo.</p>
<p>Ich habe in einem String mehrere Hex-Commandos gespeichert.<br />
Nun möchte ich die Länge des Strings bestimmen (ja ich weiss mit <strong>strlen</strong> soll das gehen) und diesen Wert als als Hex-Wert in einem neuen String zusammen mit den Hex-Commandos schreiben.</p>
<p>Beispiel:<br />
Stringalt = 0x60, 0x05, 0x 00, 0x01, \n<br />
Stringlänge = 4<br />
--&gt; Stringneu = 0x04, 0x60, 0x05, 0x00, 0x01, \n</p>
<p>Da ich diese Strings durch verschiedene Funktionen jonglieren möchte, wäre es recht mühselig jedesmal das in ein Char-Array zu wandeln und dann wieder zurück in Strings.<br />
Hat jemand ne Idee?</p>
<p>Btw:</p>
<pre><code class="language-cpp">int iBytecount=strlen(CommandIn);
</code></pre>
<p>Warum steht da hinterher nix drin?<br />
Bzw. strlen gibt glaube ich size_t zurück. Wie wandel ich das in int?<br />
Danke.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1335785</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1335785</guid><dc:creator><![CDATA[Mackie1980]]></dc:creator><pubDate>Tue, 31 Jul 2007 13:45:14 GMT</pubDate></item><item><title><![CDATA[Reply to strlen Probleme on Tue, 31 Jul 2007 13:43:53 GMT]]></title><description><![CDATA[<p>Mackie1980 schrieb:</p>
<blockquote>
<p>...<br />
Ich habe in einem String mehrere Hex-Commandos gespeichert.<br />
Nun möchte ich die Länge des Strings bestimmen (ja ich weiss mit <strong>strlen</strong> soll das gehen)...</p>
</blockquote>
<p>Nein. Geht nicht !<br />
Du musst Dir die Länge explizit merken.<br />
Kannst aber auch std::string nehmen, der macht das für Dich.</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1335791</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1335791</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Tue, 31 Jul 2007 13:43:53 GMT</pubDate></item><item><title><![CDATA[Reply to strlen Probleme on Tue, 31 Jul 2007 13:46:42 GMT]]></title><description><![CDATA[<p>Die Dinger solltest du evtl. besser garnicht als wirkliche Strings benutzen. Denn in deinem Stringinhalt sehe ich z.B. ein 0x00 und wenn cih net ganz irre ist das das Terminierungszeichen fuer C-Strings. Was hindert dich, einfach ein char array zu nutzen? Die Laenge rausfinden kannst du im allgemeinen nur, wenn du sie speicherst, da strlen afaik nur nach der Nullterminierung sucht.</p>
<p>k</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1335798</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1335798</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Tue, 31 Jul 2007 13:46:42 GMT</pubDate></item><item><title><![CDATA[Reply to strlen Probleme on Tue, 31 Jul 2007 13:48:35 GMT]]></title><description><![CDATA[<p>Hallo Simon.<br />
Superschnelle Antwort. Danke.</p>
<p>Genaugenommen verwende ich CString.<br />
Jetzt ist es so, dass sich diese Commandos in anderen Funktionen zusammensetze<br />
und diese unterschiedliche Länge haben können. Deswegen muss ich die Länge bestimmen können. Muss ich dann doch über den Umweg gehen, dass in ein Char-Array zu kopieren?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1335799</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1335799</guid><dc:creator><![CDATA[Mackie1980]]></dc:creator><pubDate>Tue, 31 Jul 2007 13:48:35 GMT</pubDate></item><item><title><![CDATA[Reply to strlen Probleme on Tue, 31 Jul 2007 13:54:49 GMT]]></title><description><![CDATA[<p>Hallo Pumuckl.<br />
Das einzige was mich daran hindert Char-Arrays zu nutzen ist, dass ich keine Ahnung habe wie ich diese verschiedenen Funktionen übergebe und ob das überhaupt geht?!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1335810</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1335810</guid><dc:creator><![CDATA[Mackie1980]]></dc:creator><pubDate>Tue, 31 Jul 2007 13:54:49 GMT</pubDate></item><item><title><![CDATA[Reply to strlen Probleme on Tue, 31 Jul 2007 14:03:14 GMT]]></title><description><![CDATA[<p>Mackie1980 schrieb:</p>
<blockquote>
<p>...Deswegen muss ich die Länge bestimmen können. Muss ich dann doch über den Umweg gehen, dass in ein Char-Array zu kopieren?</p>
</blockquote>
<p>Letzteres wird Dir auch nicht helfen, wenn Du nicht die Länge kennst.<br />
Es ist einfach so, dass Länge und Inhalt unabhängige Größen sind. Bei C-Strings hat man eine Kopplung mit einem &quot;ungültigen Wert&quot; gefunden, das als &quot;Ende-Kennzeichen&quot; verwendet wird.</p>
<p>Wenn aber Deine Daten JEDEN Wert annehmen dürfen, geht das nicht mehr.</p>
<p>Also entweder musst Du die Länge der Daten explizit bekommen (was ich immer bevorzuge) oder anhand von fachlichen Kritierien entscheiden, wann Schluss ist.</p>
<p>z.B. ein eigenes &quot;Endekennzeichen&quot; (muss aber 100%ig zuverlässig sein; außerdem arbeiteen die ganzen C-String-Funktionen nicht damit) oder eine &quot;innere Struktur&quot; wie sie z.B. bei vielen technischen Protokollen (wo implizit Längenangaben mitgegeben werden) verwendet wird.</p>
<p>Aber in jedem Fall musst Du dieses Wissen selbst einbauen.</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1335826</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1335826</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Tue, 31 Jul 2007 14:03:14 GMT</pubDate></item><item><title><![CDATA[Reply to strlen Probleme on Tue, 31 Jul 2007 14:10:07 GMT]]></title><description><![CDATA[<p>Der &quot;Trick&quot; ist, dass ein Array, das an eine Funktion uebergeben wird, in einen Pointer auf sein erstes Element umgewandelt wird. Andererseits kann man mit dem Indexoperator, angewendet auf Pointer, auf die Plaetze &quot;hinter&quot; dem Pointer zugreifen (vorausgesetzt, man darf das, sprich der Speicher dahinter gehoert dir.</p>
<p>In C-Routinen kommt sowas haeufig vor:</p>
<pre><code class="language-cpp">void dosomething(char* ptr, int len)
{
  for (int i =0; i &lt; len; i++)
    ptr[i] = 'g';
}

int main()
{
  char arr[10];   
  dosomething(arr, 7);
}
</code></pre>
<p>Hier wird mittels dosomething() ei 'g' in die ersten 7 bytes des arrays arr geschrieben <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
<p>Bei dir ginge das in etwa wie folgt:</p>
<pre><code class="language-cpp">void tuwas(char* befehle, int laenge)
{ 
  //hier deine Verarbeitung
}

int main()
{
  char foo[5] = {0x60[url], 0x05, 0x00, 0x01, '\n'[/url]}; //die Laenge ist uebrigens 5 nicht 4!
  int length = 4;

  tuwas(foo, 4);
}
</code></pre>
<p>Du kannst natuerlich statt die Laenge als eigenen Parameter anzugeben, sie in den ersten arrayindex schreiben:</p>
<pre><code class="language-cpp">char foo[6] = {4, 0x60, 0x05, 0x 00, 0x01, \n };
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1335833</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1335833</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Tue, 31 Jul 2007 14:10:07 GMT</pubDate></item></channel></rss>