Записать числа из файла в динамически созданный массив - 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
не используется в данном коде. - В данном коде не обрабатываются возможные ошибки при чтении файла или при выделении памяти под массив.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д