dreidimensionales, dynamisches char array
-
hallo,
ich habe ein problem damit ein dreidimensionales dynamisches char array zu erstellen...
{ char ***three; three = malloc(sizeof(char **)); three[0] = malloc(5 * sizeof(char *)); three[0][0] = malloc(25 * sizeof(char)); three[0][1] = malloc(25 * sizeof(char)); three[0][2] = malloc(25 * sizeof(char)); strcpy(three[0][0], "hallo, ein test"); strcpy(three[0][1], "und das zweite element"); strcpy(three[0][2], "und dann hier das dritte element..."); three = realloc(three, 2 * sizeof(char **)); three[1] = malloc(5 * sizeof(char *)); three[1][0] = malloc(25 * sizeof(char)); three[1][1] = malloc(25 * sizeof(char)); three[1][2] = malloc(25 * sizeof(char)); strcpy(three[1][0], "hallo, test2"); strcpy(three[1][1], "sdkhfhsdf"); strcpy(three[1][2], "sdfjkshdfkj"); printf("%s\n" "%s\n" "%s\n\n", three[0][0], three[0][1], three[0][2]); printf("%s\n" "%s\n" "%s", three[1][0], three[1][1], three[1][2]); printf("\n\n\npress return to exit program"); getchar(); return 0; }
das konsolenfenster klappt immer nur auf und dann wieder zu, was mache ich denn falsch? wenn ich das ganze ohne realloc mache, dann werden die ersten elemente mit dem index 0 korrekt angezeigt.
kann mir jemand helfen?
ps: ich weiss, dass ich am ende 5 char arrays habe und dass ich nur drei belege... ist halt nur ein test...
-
hi !
Moh schrieb:
das konsolenfenster klappt immer nur auf und dann wieder zu, was mache ich denn falsch?
nichts.
Moh schrieb:
wenn ich das ganze ohne realloc mache, dann werden die ersten elemente mit dem index 0 korrekt angezeigt.
mit realloc auch.
-
p.s. wegen dem fenster zuklappen
vielleicht vor getchar() mal den tastaturpuffer leer machen.
-
leider bringt etwas wie:
void fignore(FILE *f) { while((fgetc(f) != '\n') && !feof(f)); }
vor dem getchar() auch nichts...
und wenn ich direkt aus der konsole auf das programm zugreife, gibt es einen speicherfehler... (bisher habe ich nur aus der ide heraus das programm aufgerufen)
-
"und dann hier das dritte element..." ist > als 25 zeichen.
vielleicht schmiert das teil deshalb ab weil strcpy nicht rafft das dem so ist ?
-
char *strcpy( char *strDestination, const char *strSource );
The strcpy function copies strSource, including the terminating null character, to the location specified by strDestination. No overflow checking is performed when strings are copied or appended. The behavior of strcpy is undefined if the source and destination strings overlap.
da hamwa den salat
-
ah verdammt das gibt ja nicht
dankeschoen