<?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[Zeichenketten, Zeiger]]></title><description><![CDATA[<p>Hallo,</p>
<p>Es geht darum eine Funktion zu schreiben die höchstens n Zeichen der Zeichenkette t an das Ende der Zeichenkette s anhängt. Wenn t weniger als n Zeichen enthält, wird mit '\0' aufgefüllt. Der Parameter s wird als Funktionsergebnis zurückgegeben. Es darf allerdings keine Funktion aus &lt;cstring&gt; verwendet werden. Ich habs mal probiert. Ist wahrscheinlich nicht gerade der effizienteste Ansatz und eben genau darum geht es. Vielleicht könnt ihr mir helfen ein gute Lösung zu finden.</p>
<pre><code class="language-cpp">char* strncat(char* s, char* t, int n)
{      
    int i=0; 

    while(s[i] != '\0')
    {
      i++;
    }

    int k=0;
    int j=i;
    for(j; j&lt;i+n; j++)
    {
      if(t[k] == '\0')
      {
          for(int l=j; l&lt;i+n; l++)
            s[l] = '\0';
          return s;

      }
      else
         s[j] = t[k];
      k += 1;
    }

    s[j+n] = '\0';

    return s;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/117226/zeichenketten-zeiger</link><generator>RSS for Node</generator><lastBuildDate>Sat, 04 Apr 2026 18:59:19 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/117226.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 04 Aug 2005 14:53:10 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Zeichenketten, Zeiger on Thu, 04 Aug 2005 14:53:10 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>Es geht darum eine Funktion zu schreiben die höchstens n Zeichen der Zeichenkette t an das Ende der Zeichenkette s anhängt. Wenn t weniger als n Zeichen enthält, wird mit '\0' aufgefüllt. Der Parameter s wird als Funktionsergebnis zurückgegeben. Es darf allerdings keine Funktion aus &lt;cstring&gt; verwendet werden. Ich habs mal probiert. Ist wahrscheinlich nicht gerade der effizienteste Ansatz und eben genau darum geht es. Vielleicht könnt ihr mir helfen ein gute Lösung zu finden.</p>
<pre><code class="language-cpp">char* strncat(char* s, char* t, int n)
{      
    int i=0; 

    while(s[i] != '\0')
    {
      i++;
    }

    int k=0;
    int j=i;
    for(j; j&lt;i+n; j++)
    {
      if(t[k] == '\0')
      {
          for(int l=j; l&lt;i+n; l++)
            s[l] = '\0';
          return s;

      }
      else
         s[j] = t[k];
      k += 1;
    }

    s[j+n] = '\0';

    return s;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/845781</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/845781</guid><dc:creator><![CDATA[GR_Watto]]></dc:creator><pubDate>Thu, 04 Aug 2005 14:53:10 GMT</pubDate></item><item><title><![CDATA[Reply to Zeichenketten, Zeiger on Thu, 04 Aug 2005 15:44:20 GMT]]></title><description><![CDATA[<p>Ist zwar schon ewig her, dass ich mal 'ne strncat Implementierung geschrieben habe, aber glücklicherweise habe ich den Code noch.</p>
<pre><code class="language-cpp">char* strncat(char* destination, const char* source, size_t count)
{
	const char* src = source;
	char* dest = destination;
	while (*dest != '\0')
		++dest;
	const char* end = src + count;
	while (src != end &amp;&amp; *src != '\0')
	{
		*dest = *src;
		++src;
		++dest;
	}
	*dest = '\0';
	return destination;
}
// keine garantie auf korrektheit
</code></pre>
<p>Ist allerdings eine standardkonforme C Implementierung. Dh, das Auffüllen mit '\0' wird nicht gemacht. Kann man aber relativ leicht einbauen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/845844</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/845844</guid><dc:creator><![CDATA[groovemaster]]></dc:creator><pubDate>Thu, 04 Aug 2005 15:44:20 GMT</pubDate></item><item><title><![CDATA[Reply to Zeichenketten, Zeiger on Thu, 04 Aug 2005 15:47:39 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">char* strncat(char* s, const char* t, int n)
{
	int i, sn=0;

	for(;*s != 0;++s,++sn);
	--s;

	for(i=0; *t!=0 &amp;&amp; i&lt;n; ++i, ++t)
		*(++s) = *t;

	do
		*(++s) = 0;
	while(++i&lt;n);

	return s - sn - i + 1;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/845845</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/845845</guid><dc:creator><![CDATA[jumping pointer]]></dc:creator><pubDate>Thu, 04 Aug 2005 15:47:39 GMT</pubDate></item><item><title><![CDATA[Reply to Zeichenketten, Zeiger on Fri, 05 Aug 2005 16:20:24 GMT]]></title><description><![CDATA[<p>derb ihr habt den dreh aber raus!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/846669</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/846669</guid><dc:creator><![CDATA[non4me]]></dc:creator><pubDate>Fri, 05 Aug 2005 16:20:24 GMT</pubDate></item></channel></rss>