All pastes #2067128 Raw Edit

Something

public text v1 · immutable
#2067128 ·published 2011-05-22 20:28 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";      /*Zwei Beispiel-Strings*/
        char *string2 = "folge dem weissen Kaninchen";

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

        scanf("%d", &aufgabe);
        switch (aufgabe)                    /*Aufgabe waehlen*/
        {
            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;

    }

    /*Haengt zwei Strings aneinander*/
    char *mergeStr( char *string1, char *string2, int strlaenge1, int strlaenge2)
    {
        char *mergey;
        mergey = (char*) malloc(strlaenge1+strlaenge2+1);      /*Speicherzuweisung für den neuen String*/

        mergey -= (strlaenge1+strlaenge2+1);                        /*Pointerzuruecksetzung*/

        while (*string1 != '\0') *mergey++ = *string1++;        /*Aneinanderhaengen*/
        while (*string2 != '\0') *mergey++ = *string2++;
        *mergey='\0';                                          /*Nullpointer am Ende*/
        mergey -= (strlaenge1+strlaenge2);                        /*Pointerzuruecksetzung*/

        printf("%s", mergey);

        return mergey;
    }

    char *inverseStr(char *string1, int strlaenge1)
    {
        int j;
        j=0;
        char *inverse;
        inverse=(char*) malloc (strlaenge1+1);                  /*Speicherzuweisung für den neuen String*/


        while (*string1++ != '\0');     /*Setze Stringpointer nach hinten*/
        string1-=2;
        while (j < strlaenge1)                              /*Char-zuweisung für Inversen String*/
        {
            *inverse++ = *string1--;
            j++;
        }
        *inverse='\0';                                    /*Nullpointer am Ende*/
        inverse -= (strlaenge1+1);          /*Pointerzuruecksetzung*/
        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);                                /*Speicherzuweisung für den neuen String*/

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

        i=0;
        while (i<(b-a))                              /*Schreibe Teilstring*/
        {
            i++;
            *teil++=*string1++;
        }

        *teil='\0';       /*Nullpointer am Ende*/
        teil -=(b-a);                                          /*Pointerzuruecksetzung*/

        printf("%s", teil);

        return teil;
    }