Записать числа из файла в динамически созданный массив - C (СИ)
Формулировка задачи:
Итак есть у меня файл heap.txt в котором 11 чисел:
23 6 11 12 17 8 7 11 12 14
Как показано ниже в коде, я открыл файл, посчитал количество чисел в этом файле и присвоил это значениние переменной j.Закрыл файл, выделил память под будущий массив размером j. Снова открыл файл и хочу поочередно, записать данные числа в массив array. Вот тут то и проблема. Может кто подскажет как справиться с данной задачей?#include<stdio.h>
#include<stdlib.h>
#define ERROR_OPEN_FILE -3
int main(){
int j = 0,i;
int d;
FILE *file = fopen("heap.txt","rw");
if(file == NULL){
printf("Error opening file");
exit(ERROR_OPEN_FILE);
}
while(fscanf(file,"%d",&d)==1){
j++;
}
fclose(file);
int *array = (int*)malloc(sizeof(int)*j);
file = fopen("heap.txt","rw");
if(file == NULL){
printf("Error opening file");
exit(ERROR_OPEN_FILE);
}
while(fscanf(file,"%d",&d)==1){
//??????????????????????????????????????
}
fclose(file);
printf("j = %d\n",j);
for(i=0;i<j;i++)printf("%d\n", array[i]);
return 0;
}Решение задачи: «Записать числа из файла в динамически созданный массив»
textual
Листинг программы
i = 0;
while(i < j) {
fscanf(file, "%d", &array[i]);
i++;
}
Объяснение кода листинга программы
- Объявляется переменная
iтипа int и инициализируется значением 0. - В цикле while происходит чтение чисел из файла
fileв массивarray. - Для каждого чтения числа в массив
arrayувеличивается значение переменнойiна 1. - Цикл while выполняется до тех пор, пока значение переменной
iменьше значения переменнойj. - Значение переменной
jне используется в данном коде. - В данном коде не обрабатываются возможные ошибки при чтении файла или при выделении памяти под массив.