<?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[variable Paramterlisten]]></title><description><![CDATA[<p>Also ich habe folgender Problem! Ich hab mal schnell ein kleines Programm geschrieben, was mir die oft mühsamen strcat Funktion ersparen soll. Es erstellt einfach durch Aufzählung der einzlnen Komponenten einen String, mit dem man später weiterarbeiten kann.<br />
So und nun mein Problem:<br />
Wie ihr unten seht rufe ich 2xmal die Funktion auf. Einmal mit vielen beliebigen Strings und einmal mit Variablen, die vorher definiert wurden.<br />
Beim ersten Aufruf macht er alles richtig, aber beim zweiten nimmt er nur 2 Argumente, WARUM?. er nimmt ja auch beim erstenmal alle stringe und nicht nur zwei.<br />
Naja wahrscheinlich ist die Lösung eh ganz simpel, aber im vorraus schon danke für mögliche Lösungen.</p>
<p>Fabulous</p>
<pre><code class="language-cpp">/*Dies ist ein Programm mit dem es möglich ist
ohne lange mit strcat arbeiten zu müssen, mehrere
Strings schnell und einfach miteinander verbinden
kann*/

#include &lt;stdio.h&gt;
#include &lt;conio.h&gt;
#include &lt;string.h&gt;
#include &lt;stdarg.h&gt;

void connect(char[80],char[80],...);    //Prototyp der Funktion

main()
{
      char probe[80]={&quot;Connect kann Strings&quot;};
      char probe_2[80]={&quot;verbinden&quot;};
      char space[2]={&quot; &quot;};

      connect(&quot;DAS &quot;,&quot;\n&quot;,&quot;IST &quot;,&quot;EIN&quot;,&quot; &quot;,&quot;TEST &quot;,&quot;_&amp;_&quot;); //hier wird die Funktion aufgerufen, mit _&amp;_ wird das Ende gekennzeichnet
      printf(&quot;\n&quot;);
      connect(probe,space,probe_2,&quot;_&amp;_&quot;);            //hier nun ein Bsp mit Variablen die übergeben werden
      getch();
}//end main

/* Funktion zum Verbinden von Strings  *
 * Als letztes Argument wird immer _&amp;_ erwartet */
void connect(char a[80], char b[80], ...)
{
    va_list params;
    char summe[200]={&quot;&quot;},param[200]={&quot;&quot;}; //Hilfevariablen werden gleich mit 0 initialisiert
    char *s;

    strcat(summe,a);
    strcat(summe,b);
    strcat(param,b);
    va_start(params,b);          //Das Makro va_start initialisiert params mit     der Adresse des ersten optionalen Arguments
                                 //Dazu muss als zweiter Parameter der letzte Pflichtparameter eingegeben werden      

    while(s!=&quot;_&amp;_&quot;)
     {            
      s = va_arg(params,char*);  //hier wird param sukzessive jedes Wahlargument übergeben werden
                                 //der zweite Parameter ist der erwartete Datentyp
      if(s==&quot;_&amp;_&quot;)
       break;                    //hier wird abgebrochen wenn das Argument gleich _&amp;_ ist

      strcat(summe,s);
     }
    va_end(params);              //Die Var param wird mit Hilfe von va_end zurückgesetzt

    printf(&quot;%s&quot;,summe);          //Der endgültige String wird ausgegeben
}//end add
</code></pre>
<p><strong>&lt;edit&gt;Bitte Code-Tags verwenden&lt;/edit&gt;</strong></p>
]]></description><link>https://www.c-plusplus.net/forum/topic/124333/variable-paramterlisten</link><generator>RSS for Node</generator><lastBuildDate>Sun, 23 Aug 2026 21:55:00 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/124333.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 26 Oct 2005 15:14:41 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to variable Paramterlisten on Wed, 26 Oct 2005 15:28:18 GMT]]></title><description><![CDATA[<p>Also ich habe folgender Problem! Ich hab mal schnell ein kleines Programm geschrieben, was mir die oft mühsamen strcat Funktion ersparen soll. Es erstellt einfach durch Aufzählung der einzlnen Komponenten einen String, mit dem man später weiterarbeiten kann.<br />
So und nun mein Problem:<br />
Wie ihr unten seht rufe ich 2xmal die Funktion auf. Einmal mit vielen beliebigen Strings und einmal mit Variablen, die vorher definiert wurden.<br />
Beim ersten Aufruf macht er alles richtig, aber beim zweiten nimmt er nur 2 Argumente, WARUM?. er nimmt ja auch beim erstenmal alle stringe und nicht nur zwei.<br />
Naja wahrscheinlich ist die Lösung eh ganz simpel, aber im vorraus schon danke für mögliche Lösungen.</p>
<p>Fabulous</p>
<pre><code class="language-cpp">/*Dies ist ein Programm mit dem es möglich ist
ohne lange mit strcat arbeiten zu müssen, mehrere
Strings schnell und einfach miteinander verbinden
kann*/

#include &lt;stdio.h&gt;
#include &lt;conio.h&gt;
#include &lt;string.h&gt;
#include &lt;stdarg.h&gt;

void connect(char[80],char[80],...);    //Prototyp der Funktion

main()
{
      char probe[80]={&quot;Connect kann Strings&quot;};
      char probe_2[80]={&quot;verbinden&quot;};
      char space[2]={&quot; &quot;};

      connect(&quot;DAS &quot;,&quot;\n&quot;,&quot;IST &quot;,&quot;EIN&quot;,&quot; &quot;,&quot;TEST &quot;,&quot;_&amp;_&quot;); //hier wird die Funktion aufgerufen, mit _&amp;_ wird das Ende gekennzeichnet
      printf(&quot;\n&quot;);
      connect(probe,space,probe_2,&quot;_&amp;_&quot;);            //hier nun ein Bsp mit Variablen die übergeben werden
      getch();
}//end main

/* Funktion zum Verbinden von Strings  *
 * Als letztes Argument wird immer _&amp;_ erwartet */
void connect(char a[80], char b[80], ...)
{
    va_list params;
    char summe[200]={&quot;&quot;},param[200]={&quot;&quot;}; //Hilfevariablen werden gleich mit 0 initialisiert
    char *s;

    strcat(summe,a);
    strcat(summe,b);
    strcat(param,b);
    va_start(params,b);          //Das Makro va_start initialisiert params mit     der Adresse des ersten optionalen Arguments
                                 //Dazu muss als zweiter Parameter der letzte Pflichtparameter eingegeben werden      

    while(s!=&quot;_&amp;_&quot;)
     {            
      s = va_arg(params,char*);  //hier wird param sukzessive jedes Wahlargument übergeben werden
                                 //der zweite Parameter ist der erwartete Datentyp
      if(s==&quot;_&amp;_&quot;)
       break;                    //hier wird abgebrochen wenn das Argument gleich _&amp;_ ist

      strcat(summe,s);
     }
    va_end(params);              //Die Var param wird mit Hilfe von va_end zurückgesetzt

    printf(&quot;%s&quot;,summe);          //Der endgültige String wird ausgegeben
}//end add
</code></pre>
<p><strong>&lt;edit&gt;Bitte Code-Tags verwenden&lt;/edit&gt;</strong></p>
]]></description><link>https://www.c-plusplus.net/forum/post/901261</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/901261</guid><dc:creator><![CDATA[Fabulous]]></dc:creator><pubDate>Wed, 26 Oct 2005 15:28:18 GMT</pubDate></item><item><title><![CDATA[Reply to variable Paramterlisten on Wed, 26 Oct 2005 15:50:52 GMT]]></title><description><![CDATA[<p>schalt mal alle compilerwarnungen ein, dann wirst du es wissen</p>
]]></description><link>https://www.c-plusplus.net/forum/post/901289</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/901289</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Wed, 26 Oct 2005 15:50:52 GMT</pubDate></item><item><title><![CDATA[Reply to variable Paramterlisten on Wed, 26 Oct 2005 16:51:29 GMT]]></title><description><![CDATA[<p>Was sofort auffällt - String-Litarale werden eigentlich nicht in {} eingeschlossen <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="😉"
    /> (also richtig: &quot;char space[2]=&quot; &quot;;&quot;)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/901335</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/901335</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 26 Oct 2005 16:51:29 GMT</pubDate></item><item><title><![CDATA[Reply to variable Paramterlisten on Wed, 26 Oct 2005 17:00:05 GMT]]></title><description><![CDATA[<p>Also ich hab mich da jetzt noch gespielt und auch gesucht, aber ich find den Fehler nicht. Im Internet hab ich leider auch nix gefunden, aber danke für den Tipp mit der Stringdefinition, schaut echt besser aus.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/901344</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/901344</guid><dc:creator><![CDATA[Fabulous]]></dc:creator><pubDate>Wed, 26 Oct 2005 17:00:05 GMT</pubDate></item><item><title><![CDATA[Reply to variable Paramterlisten on Wed, 26 Oct 2005 17:10:17 GMT]]></title><description><![CDATA[<p>Der Vergleich mit &quot;<em>&amp;</em>&quot; vergleicht Adressen und keine Inhalte. strcmp verwenden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/901351</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/901351</guid><dc:creator><![CDATA[niemand]]></dc:creator><pubDate>Wed, 26 Oct 2005 17:10:17 GMT</pubDate></item><item><title><![CDATA[Reply to variable Paramterlisten on Wed, 26 Oct 2005 18:47:19 GMT]]></title><description><![CDATA[<p>Also irgendwie hat sich das Problem gelöst. Ich hab die ganze Zeit mit Dev-C++ programmiert, wo es bis jetzt nicht funktioniert. Aber in Borland C konnte ich mit der Einfügung von strcmp den Fehler beheben. Danke nochmal für die schnelle HIlfe.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/901455</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/901455</guid><dc:creator><![CDATA[Fabulous]]></dc:creator><pubDate>Wed, 26 Oct 2005 18:47:19 GMT</pubDate></item><item><title><![CDATA[Reply to variable Paramterlisten on Wed, 26 Oct 2005 21:37:19 GMT]]></title><description><![CDATA[<p>Bitte denke daran, dass du s noch initialisieren musst. Bereits das Lesen eines unitialisierten Pointers führt zu undefiniertem Verhalten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/901580</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/901580</guid><dc:creator><![CDATA[HumeSikkins]]></dc:creator><pubDate>Wed, 26 Oct 2005 21:37:19 GMT</pubDate></item></channel></rss>