Array von Struct
-
Hi,
ich möchte ein Array von meinem Struct mittels malloc/realloc erzeugen.
Leider kann ich das Array nur beschreiben (wo auch immer ich hinschreibe)
Beim lesen ist das Array leer. Warum ???typedef struct { int mpi_adr; char typ; int db_nr; int byte_nr; int datenlaenge; /* in Worten */ int var_laenge; /* in Worten */ } block; int main(int argc, char *argv[]) { FILE* fp; int sst,i,z,x,y,blocknr; int akt_mpi = 0; int zwischenspeicher; char *lesen; char zeile[255]; char ausgabebuffer[512][10]; block *blockkennung; while (1) { if ((fp = fopen("/home/user/projekte/visual_sst/visual_sst/parameter", "r")) == NULL) { /* ERROR */ ; printf ("parameter-Datei konnte zum lesen für die Schnittstelle nicht geöffnet werden"); return -1; } blocknr = 0; /* zeilenzähler aus der parameterdatei */ /* File komplett einlesen */ while ( fgets(zeile, sizeof(zeile), fp) ) { if (zeile[0] == '#' || strlen(zeile) == 0) { continue; } if (blockkennung == NULL || blocknr <= 0) { blockkennung = malloc(sizeof(block)); sscanf (zeile , "%i , %c , %i , %i , %i , %i" , &blockkennung[0].mpi_adr , &blockkennung[0].typ, &blockkennung[0].db_nr, &blockkennung[0].byte_nr, &blockkennung[0].datenlaenge, &blockkennung[0].var_laenge ); blocknr++; } else { blockkennung = realloc(blockkennung , ((blocknr + 1) * sizeof(block))); sscanf (zeile , "%i , %c , %i , %i , %i , %i" , &blockkennung[blocknr].mpi_adr , &blockkennung[blocknr].typ, &blockkennung[blocknr].db_nr, &blockkennung[blocknr].byte_nr, &blockkennung[blocknr].datenlaenge, &blockkennung[blocknr].var_laenge ); blocknr++; } } fclose (fp); /*--------------------------------------------------------------------------------------------*/ /* jeweiligen Block vorbereiten zum lesen */ for ( i = 0 ; i < blocknr ; i++) { if (blockkennung[blocknr].typ == 'D') { fetchkopf.db_nummer = blockkennung[blocknr].db_nr; } else { fetchkopf.db_nummer = 0; } }
Danke
worst_case[ Dieser Beitrag wurde am 03.07.2003 um 13:48 Uhr von worst_case editiert. ]
[ Dieser Beitrag wurde am 03.07.2003 um 13:49 Uhr von worst_case editiert. ]
[ Dieser Beitrag wurde am 03.07.2003 um 13:51 Uhr von worst_case editiert. ]
-
Wie sieht denn deine Datei aus??
Du kannst übrigens anstatt "&blockkennung[0]." auch einfach "blockkennung." schreiben.
-
Hi,
habe den Fehler gefunden.
Es muss heissen blockkennung[i].typ und nicht blockkennung[blocknr].typ.
Dies muss ich im nachfolgenden Programm noch überprüfen.Danke
worst_case