B
Moin,
entschuldigt, wenn ich noch eine weiter Frage habe, aber ich komme nun bei einem anderem Problem nicht weiter:
Die Eingabe der Namen soll dynamisch erfolgen. Also, es soll ein char Array mit einer bestimmten Anzahl von Feldern erstellt werden - für jeden Namen eins. Dann ist dieses eine Feld eines bestimmten Namens ebenso ein Char Feld mit dynamischer Länge: der Länge des Namens.
Die funktion die das realisieren soll, heißt GetNamen.
Im main wird Sie folgendermaßen aufgerufen:
char ** PtrNamPtrArr = NULL;
int NamAnz;
clrscr();
printf(" Anzahl der Namen: "); scanf("%d",&NamAnz);
ClrStdIn(); /* leert den Eingabepuffer */
GetNamen( PtrNamPtrArr, NamAnz );
Hier die Implementierung der Funktion:
void GetNamen( char * NamPtrArr[], int NamAnz )
{
char AktNam[NAMSTRLEN_MAX];
char * PtrNam;
int iAktNamPtr;
int iEnd;
for ( iAktNamPtr = 0; iAktNamPtr < NamAnz; iAktNamPtr++) {
printf(" Name %2d: ", iAktNamPtr + 1);
fgets( AktNam, NAMSTRLEN_MAX+1, stdin );
iEnd = strlen(AktNam) - 1;
if( AktNam[iEnd] == '\n' ) {
AktNam[iEnd] = '\0';
iEnd--;
}
else ClrStdIn();
PtrNam = (char *) calloc( iEnd+2, sizeof(char) );
strcpy( PtrNam, AktNam );
NamPtrArr[iAktNamPtr] = PtrNam;
}
}
Es hakt am letzen Befehl: "NamPtrArr[iAktNamPtr] = PtrNam;" Das Programm stürzt ab. Wenn ich die Fehlersuche aktiviere und Schrittweise ausführe, kommt in der letzten Zeile folgende Warnung:
"Eine Zugriffsverletzung (Segmentation Fault) trat in Ihrem Programm aus."
WIeso kann ich dem NamPtrArr mit dem Index iAktNamPtr nichts übergeben? Auch NamPtrArr[iAktNamPtr] = "Test"; funktioniert leider nicht.
Es wäre super, wenn sich nochmal jemand das Problem anschauen könnte, natürlich nur, wer Zeit und Lust hat
Vielen dank!
mfg, brc