pyhax schrieb:
Noch eine Frage zu deiner Lösung: Warum kopierst du in Zeile 14, 15, 16 den String? Du könntest doch einfach token_pointer als Argument für printf nehmen? (Ich programmiere eigentlich immer nur C++ :D)
Ich war fälschlicherweise davon ausgegangen, dass der Zeiger ungültig würde, sobald man strtok nochmals aufruft. Ich habe mal im Standard nachgeschlagen, aber da steht tatsächlich nichts davon.
Jetzt frage ich mich, wie strtok wohl funktioniert, ohne Speicherlöcher zu erzeugen.
Klar, jetzt sehe ich es: Das Argument ist ein char*, kein const char*! strtok zerstört also den Ursprungsstring! :p
Wie auch immer, dadurch vereinfacht sich meine Funktion natürlich erheblich und hat auch eine viel bessere Laufzeitkomplexität . Was mit dem Ursprungsstring passiert, kann bei dieser Aufgabenstellung herzlich egal sein:
void print_reverse(char *string)
{
char * token = strtok(string, delimiters);
if (token)
{
print_reverse(NULL);
fputs(token, stdout);
putchar(' ');
}
}