Ahoi!
Voraussetzung: Ansi-C
Aus der main():
int NamAnz = 5;
char *TstNamPtrArr[MAXNAMA] = {"hans", "FRANZ", "oTTo", "lisa-marie", "LISA MARIE"};
ConvertNamen(TstNamPtrArr, NamAnz);
So weit so klar.
void ConvertNamen(char *PtrNamPtrArr[], int NamAnz){ //Namen korrigieren
char Name[51]; //Hilfsvariable f. String
clrscr();
printf("Ausgabe 2: Namen in Original-Reihenfolge und korrigierter Schreibweise\n\n");
for(int i = 0; i < NamAnz; i++){ //Strings in Hilfsvariable kopieren
strcpy(Name, PtrNamPtrArr[i]);
for(int j = 0; j < strlen(Name); j++){
Name[j] = tolower(Name[j]);
if(Name[j] == ' ' || Name[j] == '-'){
j++;
Name[j] = toupper(Name[j]);
}
Name[0] = toupper(Name[0]);
}
PtrNamPtrArr[i] = Name;
printf("Name %2d: %s\n", i+1, Name);
//printf("NamPtr: %s\n", PtrNamPtrArr[i]);
}
ClrStdIn();
}
Damit konvertiere ich die Strings, auf die der Pointer zeigt, in normale Schreibweise.
Das Problem:
Es sollen die konvertierten Namen wieder an die Adressen des Pointers zurückgespeichert werden, damit ich sie -über die main-Funktion- in einer Funktion void SortNamen(char *PtrNamPtrArr[], int NamAnz) lexikographisch sortieren kann. Das tut er so aber nicht. Er überschreibt ALLES im Array mit dem aktuellen String, sodass am ende im ganzen Array "Lisa Marie" steht.
Und in der Sort-Funktion macht er bisher nur Mist und bricht das Programm mit 'System.AccessViolationException' ab.Kann gut sein, dass es daran liegt das in ConvertNamen() irgendwas kaputt gemacht wird.
Würd mich über eine Erklärung freuen. =)
Schönen Gruß