Member 13504219 Ответов: 2

Как я могу сканировать записи из txt файла в динамический массив в функции


Мне нужна функция, которая будет сканировать записи в текстовом файле и хранить их в динамически выделенном массиве, и мне нужно использовать этот массив в других функциях.
Мне нужен доступ к некоторым линиям позже.

У меня есть такой текстовый файл:

record1.1
record1.2
record1.3

record2.1
record2.2
record2.3

И так далее, между этими блоками всегда есть пустая линия..

Я был бы признателен за подробное объяснение, потому что я новичок.

Что я уже пробовал:

Я делал это таким образом, но я не знаю, как сохранить созданный массив в функции, чтобы использовать его в другой.

Arr[j] = (char*)malloc(10*sizeof(char));
fscanf (fr, "%s", Arr[j]);

Richard MacCutchan

Не выделяйте буфер до тех пор, пока не прочтете строку текста. затем вы можете сначала проверить, является ли это пустой строкой, а также получить ее фактическую длину из strlen.

2 Ответов

Рейтинг:
2

KarstenK

Для таких задач является стандартным библиотечным классом вектор-лучшее решение. Здесь вы найдете документация о векторах с некоторыми образцами. Если у вас есть фиксированный размер Вы можете использовать массивы.

Совет: попробуйте пример кода и посмотрите несколько видеороликов на Youtube для обучения. ;-)


Member 13504219

У меня есть фиксированный размер для каждой записи, и да, мне нужно поместить его в массив, но я не знаю, как это сделать в функции, мне нужно поместить record1.2 - record 2.2 ... в динамический массив, чтобы я мог использовать его вне функции

Рейтинг:
0

CPallini

Вы также отметили свой вопрос C++- так вот ты где:

#include <vector>
#include <string>
#include <algorithm>
#include <iostream>
#include <iterator>
using namespace std;


int main()
{
  // store the strings into the vector
  vector<string> word;
  copy(istream_iterator<string>(cin), istream_iterator<string>(), back_inserter(word));

  // report the vector content
  for (const auto & w : word)
    cout << w << endl;
}

Программа ожидает ввода данных от stdin (чтобы скормить его вместе с вашим входным файлом, вы можете использовать < оператор для перенаправления ввода).