Ich habe dieses Array von Strukturen und diese Funktion nimmt einen Zeiger auf den Zeiger des Arrays. Die ursprüngliche Größe ist 2, wenn die Größe erreicht ist, muss ich die Größe neu zuweisen und verdoppeln. Wenn dieser Code ausgeführt wird, erhalte ich einen ungültigen alten Fehler von der Realloc. Was mache ich falsch?Wie verwenden Sie Realloc, wenn Sie einen Zeiger auf einen Zeiger einer Struktur haben?
int PopulateArray(struct Inventory **inv, int *size, FILE *inputFile) {
int count = 0;
printf("address: %u\n", inv);
printf("address: %u\n", **inv);
int itemNumber;
int quantity;
float price;
int month;
int year;
while (fscanf(inputFile, "%i %i %f %i/%i", &itemNumber,
&quantity, &price, &month, &year) != EOF) {
(*inv)->itemNumber = itemNumber;
(*inv)->quantity = quantity;
(*inv)->price = price;
(*inv)->expDate.month = month;
(*inv)->expDate.year = year;
printf("count: %i size: %i\n", count, *size);
if (count == *size - 1) {
inv = realloc(inv, (*size * 2 * sizeof(struct Inventory)));
*size *= 2;
}
inv++;
count++;
}
return count;
}
'while (fscanf (...)! = EOF)' ist nicht sicher. Überlegen Sie, was passiert, wenn * einige *, aber nicht * alle * Conversions erfolgreich sind. – EOF