Hab jetzt hier ein anderes problem.
ich habe ein
char ** woerter Ein Array von Char Pointern. In einer Sortierfunktion möchte ich jetzt
woerter[x] mit
woerter[y]tauschen.
Also eigentlich will ich nur die Char Pointer tauschen nicht die zeichenketten.
Ich versuche das mit
char * temp = woerter[x];
woerter[x]=woerter[y];
woerter[y]=temp;
jedoch bekomme ich eine Warnung wenn zum ersten mal
char * temp aufgerufen wird.
Dann hab ich es mit
new probiert...
Wenn ich es mit
char * temp = new char [strlen(woerter[x])];
temp=woerter[x];
woerter[x]=woerter[y];
woerter[y]=temp;
Dann funktioniert es obwohl ich nicht weis ob noch doch die Zeichenkette kopiert wird.
Wenn ich allerdings dabei kein Speicherfresser erzeugen will und
char * temp = new char [strlen(woerter[x])];
temp=woerter[x];
woerter[x]=woerter[y];
woerter[y]=temp;
delete [] temp;
Bringt er mir auch einen Speicherfehler
Hier mein ganzer Veruchscode:
int main() {
char * woerter[3];
woerter[0]="Das ist ein Test";
woerter[1]="Das ist ein Test2";
woerter[2]="Das ist ein TEs3";
char * temp = new char [strlen(woerter[1])];
temp=woerter[1];
woerter[1]=woerter[2];
woerter[2]=temp;
delete [] temp;
printf("%s\n",woerter[2]);
return 0;
}
Kann mir bitte jemand mit den Pointern helfen. Ich krieg das nicht in den Kopf rein. Wann weise ich dem wirklich eine neue Adresse zu und was brauche ich dafür. Normalerweise ist doch ein Pointer nur
int lang. Dazu brauche ich doch normalerweise nicht die Länge der dahinter stehenden Daten zu wissen oder?
Gruß Alex\n\n
<!--EDIT|format_c|1132327871-->