Thread Ganze Zeile einlesen incl. Leerzeichen: ANSI C (21 answers)
Opened by format_c at 2005-11-17 14:27

format_c
 2005-11-18 17:29
#11279 #11279
User since
2003-08-04
1706 Artikel
HausmeisterIn
[Homepage] [default_avatar]
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
Code: (dl )
1
2
3
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
Code: (dl )
1
2
3
4
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
Code: (dl )
1
2
3
4
5
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:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
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-->

View full thread Ganze Zeile einlesen incl. Leerzeichen: ANSI C