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