/*
Projekt RepeatString

Erstellen einer Zeichenkette (string) aus wiederholten Zeichenketten.

Version 1.0 und 2.0 / 2002.04.01
Autor: pstrainer@gmx.net
*/

#include 
#include 
#include 

#define line_maxlen 500
#define myversion 2		// valid options: {1,2}

int repeat_string(int i,char*,char*);

// *************** Version 1 ********************
#if myversion==1

void main (void) {
	int n;
	char mystring[line_maxlen];
	char rep[]="test 123 ";

	printf("Projekt RepeatString\n");

	n=3;
	repeat_string(n,rep,mystring);
	printf("RepeatString(%d,%s)=%s\n",n,rep,mystring);
}

int repeat_string(int nrep,char *r,char *s) {
/*
Funktion repeat_string
Erstellen einer Zeichenkette aus wiederholten Zeichenketten.

Version 1.0 / 2002.04.01
Autor: Peter Schindler, pstrainer@gmx.net

Syntax:
	int repeat_string(int i,char*,char*);
	...
	int n,sl;
	char mystring[...];
	char rep[...];
	...
	sl=repeat_string(n,rep,mystring);
Length: 
15 lines of code
*/
	int i,j,n;
	char c;

	i=0;								// mystring index
	for (n=0;n0) {
		fflush(stdin);			// flush console input buffer
		printf("\nGeben sie einen Wiederhol-Text ein:         ");
		gets(rep);				// get text from the console
		rl=strlen(rep);
		if (rl) {
			printf("Wie oft soll dieser Text wiederholt werden: ");
			scanf("%d",&n);		// get number of repetitions
			sl=repeat_string(n,rep,mystring);
			printf("RepeatString(%d,%s)=%s\n",n,rep,mystring);
		}
	}

#ifdef _DEBUG
	printf("\nPress any key to continue ");
	_getch();
#endif
}

int repeat_string(int nrep,char *r,char *s) {
/*
Funktion repeat_string
Erstellen einer Zeichenkette aus wiederholten Zeichenketten.

Version 2.0 / 2002.04.01
Autor: Peter Schindler, pstrainer@gmx.net

>>   Updates und einstellbare Optionen:
> Wenn das Argument n<=0 ist, wird ein leerer string erzeugt.
> Wenn das Argument n>100 ist, wird n=100 gesetzt (einstellbar).
> Falls der repeat-string kein Ende enthält, so wird die Funktion 
  nach 100 Zeichen (einstellbar) abgebrochen.
> Falls die string-Länge (mystring) 100 Zeichen überschreitet, 
  so wird der string nur bis zu dieser Länge erzeugt.
> Die Funktion gibt die Gesamtlänge des erzeugten strings 
  an das aufrufende Programm zurück.

Syntax:
	int repeat_string(int i,char*,char*);
	...
	int n,sl;
	char mystring[...];
	char rep[...];
	...
	sl=repeat_string(n,rep,mystring);
Length: 
25 lines of code
*/
#define nmin 0							// min repeats
#define nmax 100						// max repeats
#define repmax 100						// max length of rep string
#define mystrmax 100					// max length of result string

	int i,j,n;
	char c;

	if(nrepnmax) nrep=nmax;
	if(nrep0) {
		for (n=0;nrepmax) || (i>=mystrmax) ) c='\0';
				if (c!='\0') s[i++]=c;
			}
		}
	}
	s[i]='\0';							// terminate string
	return i-1;							// return length of string
}

// *************** Version ? ********************
#else

void main (void) {
	printf("Makro #myversion wurde illegal definiert\n");
}

#endif

/* ========== eof ========== */

    Source: geocities.com/pstrainer/entwicklung/c/aufgaben

               ( geocities.com/pstrainer/entwicklung/c)                   ( geocities.com/pstrainer/entwicklung)                   ( geocities.com/pstrainer)