Считывание в массив с файла - C (СИ)

Узнай цену своей работы

Формулировка задачи:

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

Решение задачи: «Считывание в массив с файла»

textual
Листинг программы
for ( i = 0; i < 100 && fscanf(fmas, "%d", &mas[i]) == 1; ++i )
    ;

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

  1. В цикле for происходит считывание данных из файла fmas в массив mas.
  2. Условие цикла: i < 100 && fscanf(fmas, %d, &mas[i]) == 1.
  3. fscanf(fmas, %d, &mas[i]) — считывает целочисленное значение из файла в переменную mas[i].
  4. Условие цикла проверяет, что значение успешно считерировано и не равно нулю (что означает окончание файла).
  5. Если условие выполняется, то цикл продолжается, иначе он завершается.
  6. Переменная i увеличивается на 1 после каждой итерации цикла.
  7. В теле цикла пустая операция (;) — это просто пауза, чтобы не забывать о назначении оператора.
  8. Если в файле нет более 100 чисел, то цикл завершится по первому условию (i < 100).
  9. Если в файле есть более 100 чисел, то цикл завершится по второму условию (fscanf == 1).

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


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

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

7   голосов , оценка 3.571 из 5