Считывание в массив с файла - C (СИ)
Формулировка задачи:
Есть файл, в котором записаны цифры, например: "10 15 16 17 1 -4 -6 78 -1 7 18 15". Мне надо записать их в массив. Для этого использую этот фрагмент кода, где mass размером 100. Но, появляется проблема. Цифр меньше в файле (я не знаю сколько их будет изначально), и все что идет после заполняется нулями.
Думал реализовать через динамический массив, однако, не знаю как реализовать выделение нужного количество памяти. Есть возможность как-либо посчитать количество цифр в этом файле?
for (i=0; i<100; i++) fscanf(fmas, "%d", &mas[i]);
Решение задачи: «Считывание в массив с файла»
textual
Листинг программы
for ( i = 0; i < 100 && fscanf(fmas, "%d", &mas[i]) == 1; ++i ) ;
Объяснение кода листинга программы
- В цикле for происходит считывание данных из файла
fmas
в массивmas
. - Условие цикла: i < 100 && fscanf(fmas,
%d
, &mas[i]) == 1. - fscanf(fmas,
%d
, &mas[i]) — считывает целочисленное значение из файла в переменнуюmas[i]
. - Условие цикла проверяет, что значение успешно считерировано и не равно нулю (что означает окончание файла).
- Если условие выполняется, то цикл продолжается, иначе он завершается.
- Переменная
i
увеличивается на 1 после каждой итерации цикла. - В теле цикла пустая операция (;) — это просто пауза, чтобы не забывать о назначении оператора.
- Если в файле нет более 100 чисел, то цикл завершится по первому условию (i < 100).
- Если в файле есть более 100 чисел, то цикл завершится по второму условию (fscanf == 1).
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д