Im ursprünglichen Code machst du meiner Meinung nach einiges verkehrt. Du benutzt define für eine Konstante, du übergibst der Funktion nicht die Länge, du allokierst ein temporäres unnötiges Array, welches plötzlich eine andere Grösse haben soll, als die Konstante es vorgibt, du gehst über deinen std::string, statt direkt zum QString. Es ist irgendwie so viel falsch, dass es fast keinen Sinn hat, diese Funktion weiterzuverwenden.
ZSchneidi schrieb:
da array[33] felder hat, ich aber nur 0 - 32 kopiere, jetzt wollte ich nachträglich noch die [33] ans ende von secarray zuweisen, aber irgendwie ging das auch daneben.
Und hier machst du wohl auch einen Denkfehler. Array hat 33 Felder, welche die Indices 0 bis einschliesslich 32 haben. Ein Index 33 existiert nicht.
Also, wie man sowas ganz einfach macht:
#include <cstddef> // für std::size_t
#include <algorithm> // für std::swap, bzw. std::iter_swap
void reverse(char* array, std::size_t length)
{
char* first = array;
char* last = first + length;
while( (first != last) && (first != --last) )
{
std::iter_swap(first++, last);
}
}
Mehr braucht es nicht. Falls du lieber eine Kopie machen willst, dann musst du nur wenig erweitern, damit dies geht und das kannst du als Übung selber machen
Grüssli