String von rechts ausgeben.



  • Erstmal: don't panic.

    Du weisst, das strings in C eine Menge chars sind, die nacheinander im Speicher stehen. Ist der Wert eines solchen chars '\0' endet der string dort.

    Auf diese '\0' zu prüfen machen z.B. die beiden while Schleifen in zaehlen() und copy_string() .

    Was Du jetzt noch wissen musst, ist das z.B. bei

    void copy_string(char target[], char source[]);
    
    void f(){
      const char *str = "Hallo!";
      char dest[2555];
      copy_string(str, dest);
    }
    

    In copy_string() die beiden Parameter target und source vom Typ "Zeiger auf char" sind. Deswegen kann copy_string() überhaupt so geschrieben werden, wie es geschrieben ist.

    Und zuguterletzt, wenn ich eh Zeiger habe, kann ich auch Zeigerarithmetik betreiben:

    void g(){
      const char src[] = "aaabbb";
      int N = zaehlen(src);
    
      char dest[255];
    
      copy_string(dest, src);
      puts(dest);
    
      copy_string(dest, src+N/2); // hintere Haelfte (Zeigerarithmetik)
      puts(dest);
    }
    

    Im Grunde ist das alles, was Du bisher in der Vorlesung gelernt haben musst, um die Aufgabe lösen zu können.
    (Eigentlich reicht auch viel weniger. Aber das sind die Basics, die Du verstanden haben musst um sowohl zaehlen() , als auch copy_string() zu raffen.)



  • Danke, jetzt läuft es wenigstens.
    Verstehen tue ich es jetzt zwar nicht zu 100%, aber ich denke morgen siehts besser aus. 👍

    Klasse dieses Forum hier.



  • Blutiger.Anfänger schrieb:

    @Belli - damit ist gemeint, dass ich keine vordefinierten Fktionen aus string.h wie z.b. strlen nehmen soll.

    Naja, Du hast geschrieben:
    "ich muss einen String von rechts ausgeben und das ohne vordefinierte Funktionen. "
    benutzt aber dann printf
    Das ist auch eine vordefinierte Funktion ...


Anmelden zum Antworten