#include <stdio.h>

char * textKopie(char*, char*);
int textLaenge(char*);
char * textAnhang(char*, char*);
int textVergleich(char*, char*);

/*
 * Funktion gibt Originalinhalt des Ziels
 * zurück, falls der Wert gesichert werden
 * soll während Überschrieben wird...
 */
char * textKopie(char *ziel, char *quelle) {
	char *temp = ziel;
	while (*ziel++ = *quelle++);
	return temp;
}

int textLaenge(char *text) {
	char *temp = text;
	while (*temp) temp++; 
	return (temp - text);
}

/*
 * Funktion gibt Originalinhalt des Ziels
 * zurück, falls der Wert gesichert werden
 * soll während Überschrieben wird...
 */
char * textAnhang(char *ziel, char *quelle) {
	char *temp = ziel;	
	while (*ziel) ziel++; 
	while (*ziel++ = *quelle++);
	return temp;
}

int textVergleich(char *text1, char *text2) {
	while (*text1 == *text2++)
		if (*text1++ == '\0')
			return 0; 
	return (*text1 - *text2);
}

int main(void) {
	/*
	 * ohne Optimierung des Speichers:
	 * Wir erlauben einfach alle Texte mit
	 * maximal 80 Zeichen...
	 */
	char text1[80+1], text2[80+1], zieltext[80+1];
	int laenge;
	/*
	 * Zeichenketten von der Tastatur einlesen
	 */
	printf("ersten Text eingeben:  ");
	fflush(stdin);
	scanf("%s", text1);

	printf("zweiten Text eingeben: ");
	fflush(stdin);
	scanf("%s", text2);

	/*
	 * Funktionen ausprobieren
	 */
	textKopie(&zieltext, &text1);
	printf("Zieltext (%s) mit Text 1 (%s) hat die Länge %d\n", zieltext, text1, textLaenge(&zieltext));

	textAnhang(&zieltext, &text2);
	printf("Zieltext (%s) mit Text 1 (%s) und Text 2 (%s) hat die Länge %d\n", zieltext, text1, text2, textLaenge(&zieltext));
	
	laenge = textVergleich(&zieltext, &text1);
	if (laenge < 0)
		printf("Text 1 ist lexikografisch größer als Zieltext.\n");
	else if (laenge == 0)
		printf("Text 1 und Zieltext sind lexikografisch identisch.\n");
	else if (laenge > 0)
		printf("Zieltext ist lexikografisch größer als Text 1.\n");

	return 0;
}
