#include <stdio.h>
#include <stdarg.h>
#include <string.h>
#define MAX 40

void strxcat(int n_strings, ...)
{
 va_list zeiger;
 char *quelle, *ziel, *p;
 int counter=0;

 va_start(zeiger,n_strings);

 /*Nun auf den Zielstring*/
 ziel = va_arg(zeiger,char *);
 p = ziel;
 /*Am Ende vom Zielstring*/
 ziel+=strlen(ziel);

 if( (ziel-p) > MAX){
   printf("!!!Max. Anzahl Zeichen überschritten!!!\n");
   return;
   }

 while(--n_strings > 0)
  {
    /*Quelle einlesen*/
    quelle=va_arg(zeiger, char *);
    /*Jetzt Zeichen für Zeichen an ziel*/
    while(*quelle){
      *ziel++ = *quelle++;
      if( (ziel-p) > MAX){
        printf("!!!Max. Anzahl der Zeichen ueberschritten!!!\n");
        return;
        }
       }
  }
 *ziel = '\0';
}


int main()
{
 char string[MAX] = "Test : ";
 char string2[] = " Und";

 strxcat(3, string, "hallo " , "welt");
 printf("%s\n",string);

 strxcat(5, string, string2, " noch", " ein", " Test");
 printf("%s\n",string);

 /*Und nun ein Fehler mit Absicht*/
 strxcat(4, string , " Ueberlauf", " von", " MAX");
 printf("%s\n",string);

 return 0;
}