У меня есть этот массив структур, и эта функция принимает указатель на указатель массива. Исходный размер равен 2, поэтому всякий раз, когда он достигает размера, мне нужно перераспределить и удвоить размер. Когда этот код запускается, я получаю ошибку недопустимого старого размера от realloc. Что я делаю неправильно?
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)
небезопасно. Подумайте, что происходит, когда некоторые, но не все преобразования завершаются успешно. - person EOF   schedule 14.12.2016