Я пытаюсь прочитать целые числа из файла и сохранить их в массиве.Затем я хочу записать эти значения в другой файл.Чтение записи производится в отдельном файле из основного файла, где был создан массив.Я не могу изменить аргументы функции (это для присваивания, поэтому аргумент массива должен быть int ** ppPerm).Вызывается функция и изначально созданный массив в основной функции другого файла.Файл, из которого я читаю, выглядит следующим образом:
15
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
Где 15 - количество цифр.Таким образом, хронологический порядок функций:
Массив Perm создается в основной функции основного файла (int * Perm = NULL).Передается в readP ()
readP(In, &Perm);
Числа из файла читаются и сохраняются в Перми.Затем та же переменная Perm передается в writeP ().
writeP(Out, Perm, permLength);
Perm читается и записывается в другой файл.Я не могу изменить ни одну из этих строк.Где-то вдоль дороги массив облажался.Вот readP ().
int readP(FILE* In, int** ppPerm) {
int numElements = 0;
fscanf(In, "%d", &numElements);
*ppPerm = (int*)calloc(numElements, sizeof(int));
int i;
for (i = 0; i < numElements; i++) {
fscanf(In, "%p", &ppPerm[i]);
}
return numElements;
}
Сейчас массив полностью не читается.По какой-то причине сохраненные числа представляют собой что-то вроде 0x0, а затем случайный набор шестнадцатеричных чисел.Затем массив используется в writeP () для записи значений в другой файл:
void writeP(FILE* Out, const int* pPerm, int permLength) {
int i = 2;
for (i = 0; i < permLength; i++) {
fprintf(Out, "%d ", pPerm[i]);
}
return;
}
int * pPerm - это тот же массив, который был передан в readP ().По какой-то причине, используя отладку, я вижу, что pPerm содержит совершенно другие значения, чем ppPerm, а в некоторых случаях он кажется наполовину пустым.Что именно не так с моими функциями?Почему я не могу правильно хранить числа в массиве?И почему массив продолжает путаться между readP () и writeP ()?