Записать числа из файла в динамически созданный массив - 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++;
}

Объяснение кода листинга программы

  1. Объявляется переменная i типа int и инициализируется значением 0.
  2. В цикле while происходит чтение чисел из файла file в массив array.
  3. Для каждого чтения числа в массив array увеличивается значение переменной i на 1.
  4. Цикл while выполняется до тех пор, пока значение переменной i меньше значения переменной j.
  5. Значение переменной j не используется в данном коде.
  6. В данном коде не обрабатываются возможные ошибки при чтении файла или при выделении памяти под массив.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 4.333 из 5
Похожие ответы