Kuh-Couch Geschrieben 9. Januar 2010 Geschrieben 9. Januar 2010 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ß Zitieren
Klotzkopp Geschrieben 9. Januar 2010 Geschrieben 9. Januar 2010 Er überschreibt ALLES im Array mit dem aktuellen String, sodass am ende im ganzen Array "Lisa Marie" steht. Was heißt denn "aktueller String"? Hast du in main denn überhaupt mehr als ein Array für die umgewandelten Strings? Wenn du deine Zeiger auf immer dasselbe Array verweisen lässt, ist doch klar, dass hinterher in allen dasselbe drinsteht. Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.