All pastes #2067097 Raw Edit

Unnamed

public text v1 · immutable
#2067097 ·published 2011-05-22 19:38 UTC
rendered paste body
/*Ein Programm, um Dinge mit Strings zu machen, aber ohne die String-Lib*/

# include <stdio.h>
# include <stdlib.h>

char *mergeStr( char *string1, char *string2, int strlaenge1, int strlaenge2);
char *inverseStr(char *string1, int strlaenge1);
char *Teilstr(char *string1, int strlaenge1);

int main()
{
    int aufgabe, string1laenge, string2laenge;
    aufgabe = string1laenge = string2laenge = 0;
    printf("\nWas möchten sie machen?\n");
    printf("1 - 2 Zeichenketten aneinanderhaengen.\n");
    printf("2 - Eine Zeichenkette umkehren.\n");
    printf("3 - Eine Teilzeichenkette erstellen.\n");


    char *string1 = "Ab mit dem Kopf";
    char *string2 = "folge dem weissen Kaninchen";

    while (*string1++ != '\0') string1laenge++;
    string1 -= (string1laenge+1);
    while (*string2++ != '\0') string2laenge++;
    string2 -= (string2laenge+1);

    printf("%s , %s, %d, %d", string1, string2, string1laenge, string2laenge);    
    scanf("%d", &aufgabe);
    switch (aufgabe)
    {
	case 1:
	{
	    mergeStr(string1, string2, string1laenge, string2laenge);
	    break;
	}
	case 2:
	{
	    inverseStr(string1, string1laenge);
	    break;
	}
	case 3:
	{
	    Teilstr(string1, string1laenge);
	    break;
	}
	default:
	{
	    printf("Diese Aufgabe gibt es nicht!\n");
	    break;
	}

    }
    return 0;

}

char *mergeStr( char *string1, char *string2, int strlaenge1, int strlaenge2)
{
    char *mergey;
    mergey = (char*) malloc(strlaenge1+strlaenge2+1);
    *mergey = '\0';
    mergey -= (strlaenge1+strlaenge2+1);

    while (*string1 != '\0') *mergey++ = *string1++;
    while (*string2 != '\0') *mergey++ = *string2++;
    *mergey='\0';
    mergey -= (strlaenge1+strlaenge2+1);

    printf("%s", mergey);

    return mergey;    
}

char *inverseStr(char *string1, int strlaenge1)
{
    int j;
    j=0;
    char *inverse;
    inverse=(char*) malloc (strlaenge1+1);
    *inverse = '\0';
    inverse -= strlaenge1;

    while (*string1++ != '\0');
    string1--;
    while (j < strlaenge1)
    {
	*inverse++ = *string1--;
	*string1--;
	j++;
	printf("%s , %s, %d\n", string1, inverse, j);    
    }
    inverse -= strlaenge1;
    printf("\n\n\n%s", inverse);
    return inverse;
}

char *Teilstr(char *string1, int strlaenge1)
{
    char *teil;
    int a, b, i;
    a=b=i=0;
    printf("Wo soll gestartet werden?");
    scanf("%d", &a);
    printf("Bis wohin?");
    scanf("%d", &b);
    teil=(char*) malloc (b-a+1);
    *teil='\0';
    teil -=(b-a);

    while(i<=b)
    {
	i++;
	*string1++;
    }

    i=0;
    while (i<=a)
    {
	i++;
	*teil++=*string1++;
    }

    printf("%s", string1);

    return teil;
}