Schreibzugriff auf festes Array aus Main...
-
Hallo!
Ich habe ein Array in der Main Methode erzeugt:
char *TstNamPtrArr[10] = { "hans", "FRANZ", "oTTo", "lisa-marie", "LISA MARIE" };
Nun sage ich mir in einer Untermethode Convert, dass ich die Groß- und Kleinschreibung anpassen möchte. Das mache ich und am Ende mache ich:
void Convert(char *NamPtrArr[], int NamAnz){ // einige Operationen vom jeweiligen String in eine puffer Variable strcpy(puffer, NamPtrArr[i]); }
Auf den Puffer habe ich Operationen gemäß der Konvertierung angewandt. Diese möchte ich in das Array realisieren. Das führt zum Absturz.
Weiß jemand warum?Gruß,
sourci
-
char* TstNamPtrArr[10] = { "hans", "FRANZ", "oTTo", "lisa-marie", "LISA MARIE" }; char a = TstNamPtrArr[0][0]; // a == 'h' TstNamPtrArr[0][0] = 'A'; // Zugriffsverletzung beim Schreiben an Position 0x..
Es handelt sich um Zeiger auf const char ! Du könntest das umgehen, indem du schreibst:
char* TstNamPtrArr[10][20] = { "hans", "FRANZ", "oTTo", "lisa-marie", "LISA MARIE" }; char a = TstNamPtrArr[0][0]; // a == 'h' TstNamPtrArr[0][0] = 'A'; // Ok!
-
Sorry!
char TstNamPtrArr[10][20] = { "hans", "FRANZ", "oTTo", "lisa-marie", "LISA MARIE" }; char a = TstNamPtrArr[0][0]; // a == 'h' TstNamPtrArr[0][0] = 'A'; // Ok!
-
Danke für die Antwort ;).
Das klingt sehr einleuchtend. Find ich grad etwas schade, dass man nicht das TstNamPtrArr gesondert in der main als char-Pointer auf veränderliche Werte allokiert... mhh... vielleicht lässt sich da was über Speicherklassen machen.
-
sourci schrieb:
Danke für die Antwort ;).
Das klingt sehr einleuchtend. Find ich grad etwas schade, dass man nicht das TstNamPtrArr gesondert in der main als char-Pointer auf veränderliche Werte allokiert... mhh... vielleicht lässt sich da was über Speicherklassen machen.
Dass was Du vorhast (Groß- und Kleinschreibung anpassen) und TstNamPtrArr gesondert in der main als char-Pointer auf veränderliche Groß- und Kleinschreibung vorbereiten ereichst Du indem Du Stackspeicher verwendest, z.B. so:
char hans[] = "hans"; char franz[] = "FRANZ"; char otto[] = "oTTo"; char lisa[] = "lisa-marie"; char marie[] = "LISA MARIE"; char* TstNamPtrArr[10] = { hans, franz, otto, lisa, marie }; char a = TstNamPtrArr[0][0]; // a == 'h' TstNamPtrArr[0][0] = 'H'; // Ok!