Anfängerproblem (Pointer/Array) Übergabe in Funktion



  • Die Funktion "retrorsum" soll ein von main übergebenes Array praktisch rückwärts wiedergeben. D.h kommt 5 6 7 8 an soll daraus 8 7 6 5 werden. Aber ich hab einige Schwierigkeiten mit den Pointern, hab mir das Kapitel in meinem Buch zwar ein paar mal durchgelesen aber das theoretisch ist mir einfach zu trocken. Naja hier mein Versuch :

    main :

    int text_caesar [10240];
    
    *text_caesar = retrorsum (text_caesar);
    

    retrorsum-Funktion :

    int retrorsum (int *text_caesar) {
    
        int text_temp [10240];
        int i = 0, r = 0;
    
        while (text_caesar[i] != '\0') {i++;}
    
        while (i != 0) 
        {
            text_temp [r] = text_caesar[i];
            i--;
            r++;
        }      
    
        return *text_temp;
    
    }
    

    Aber ich bekomme leider keine Ausgabe, die erfolgt mit einer Textdatei ( ohne das rückwärts gedings geht es).



  • Das geht so nicht.
    Wenn dein Array kein C-String ist, kannst du nicht auf '\0' abprüfen um die Länge zu bestimmen, du musst die Längeninformation mit an die Funktion übergeben, implizit (über den Typ) oder explizit als eigener Parameter.
    Auch gibt deine Funktion einen int zurück, wahrscheinlich soll aber doch wohl das Array zurückgegeben werden, wobei du überhaupt kein Array rückgeben musst, du änderst in der Funktion einfach das übergebene Array, da brauchst du dann auch nicht mit Zeigern und so Zeugs rumhantieren.
    Auch gibt es einfachere Algorithmen zur Umkehr ohne temporäre Hilfsvariablen.



  • Nu nennst du es schon text_temp. text_temp liegt auf dem Stack, der wird aber wieder abgebaut nachdem die Funktion beendet ist. Ausserdem stimmt dein Rückgabetyp nich.

    mach doch einfach zwei argumente, für Source and Destination und übergib zwei arrays

    void retrorsum (char *text_dest, char *text_source)
    {
      // do your work
    }
    

Anmelden zum Antworten