Array mit Pointers in C
Marcel
- programmiertechnik
Hallo
Ich möchte eine Datei mit C zeilenweise einlesen und für jede Zeile genau entsprechend Memory allozieren. Ich habe folgendes:
.
..
char cBuffer[MAX_LENGTH_LINE];
void *ptrs[count];
int i = 0;
while( fgets(cBuffer, MAX_LENGTH_LINE, pFile) != NULL ) {
ptrs[i] = (double *)malloc((strlen(cBuffer) + 1) * sizeof(char));
printf("ref: %i \n", ptrs[i]);
printf("val: %i \n", &ptrs[i]); //Funktioniert nicht
i++;
}
..
.
Die entsprechenden Pointer habe ich im Pointer Array gespeichert. Wie erhalte ich nun wieder den eingelesenen Text aufgrund des Wertes im Pointer-Array?
Gruss Marcel
Hallo,
ich blicke durch Deinen Code nicht so ganz durch:
char cBuffer[MAX_LENGTH_LINE];
void *ptrs[count];
ptrs ist ein Feld der Laenge count und hat Zeiger vom Typ (void *) als Inhalt.
int i = 0;
while( fgets(cBuffer, MAX_LENGTH_LINE, pFile) != NULL ) {
ptrs[i] = (double *)malloc((strlen(cBuffer) + 1) * sizeof(char));
Hier castest Du den Inhalt von ptrs[i] auf (double *), das ist also ein Zeiger auf eine double.
printf("ref: %i \n", ptrs[i]);
Hier gibst Du den pointer aus, was als Integer i.O. ist.
printf("val: %i \n", &ptrs[i]); //Funktioniert nicht
Aber wieso willst Du hier eine Integer ausgeben, wenn Du doch oben gesagt hast, dass prts[i] auf eine double zeigt? Und warum willst Du die Adresse des Pointers ptrs[i]? Den Wert, auf den Du mit prts[i] zeigst, kriegst Du mit einem "*" davor.
Gruss
Thomas