Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.65/55: Рейтинг темы: голосов - 55, средняя оценка - 4.65
1 / 1 / 1
Регистрация: 24.10.2017
Сообщений: 7

Чтение данных из файла в динамический массив структур

16.02.2018, 08:29. Показов 10850. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, подскажите пожалуйста, как можно осуществить чтение данных из файла в динамический массив структур? Или может можно как то разделить данные файла на разные типы переменных, не через структуры?

Общий текст задания:
"В текстовом файле с исходными данными находится таблица, состоящая из n строк, в каждой из которых по m слов, образующих, соответственно, m столбцов. Между словами расстояние — 1 пробел.

Количество строк: 4. Столбцы: Название программы, Разработчик, Версия, Год выпуска

Действия, выполняемые программой:
1.Чтение данных из файла в динамический массив.
2.Просмотр данных, хранящихся в массиве.
3.Корректировка данных заданной строки.
4.Сохранение данных в новом файле (имя файла вводится с клавиатуры)."

Вот я сделал только ручной ввод данных:

Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
#include <iostream>
#include <fstream>
#include <iomanip>
#include <stdlib.h>
 
using namespace std;
 
struct Programms
{
    char name[15];
    char author[20];
    float ver;
    int year;
};
 
void input_struct(Programms* p, int n)
{
 
    for (int i=0; i<n; i++)
    {
        cout<<"Name:  ";
        cin.getline(p[i].name,15);
 
        cout<<"Author:  ";
        cin.getline(p[i].author, 20);
 
        cout<<"Version:  ";
        cin>>(p[i].ver);
        cin.ignore();
 
        cout<<"Year  ";
        cin>>(p[i].year);
        cin.ignore();
 
        cout<<"\n";
 
    }
 
};
 
void output_struct(Programms* p, int n)
{
    for (int i=0; i<n; i++)
    {
        cout<<p[i].name<<endl;
        cout<<p[i].author<<endl;
        cout<<p[i].ver<<endl;
        cout<<p[i].year<<endl;
        cout<<"\n";
    }
};
 
int main()
{
    setlocale(LC_ALL, "rus");
 
    Programms *p = new Programms[4];
    input_struct(p, 4);
    output_struct(p, 4);
 
    delete []p;
 
    return 0;
}
А вот данные из файла:

Code
1
2
3
4
AdobePhotoshop AdobeSystems 1.0 1988
Code::Blocks TheCode::BlocksTeam 17.12 2017
KOMPAS-3D ASCON 10 2008
LabVIEW  NationalInstrument 7.1 2004
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
16.02.2018, 08:29
Ответы с готовыми решениями:

Чтение данных из файла в массив структур.
Нужна помощь, не могу понять почему оно не хочет считывать с файла, записывает нормальна а вот данные считать и в структуру запхать не...

Чтение данных из файла, запись в массив структур
Всем привет, помогите, пожалуйста, с программой. Суть такова: имеется файл вида нужно записать данный файл в массив структур, как...

Чтение двоичного файла и занесение данных в массив структур
/*чтение двоичного файла и занесение данных в массив S (кото- рый объявлен как указатель на тип Stud)*/ bool read_file(FILE * f,...

4
Модератор
Эксперт С++
 Аватар для zss
13771 / 10964 / 6491
Регистрация: 18.12.2011
Сообщений: 29,242
16.02.2018, 08:42
Лучший ответ Сообщение было отмечено Askide как решение

Решение

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
void input_from_file(char* filename,Programms* p, int n)
{
    ifstream ff(filename);
    if(ff)
    {
       for (int i=0; i<n; i++)
       {
           ff>>p[i].name;
           ff>>p[i].author;
           ff>>p[i].ver;
           ff>>p[i].year;
       }
       ff.close();
    }else
      cout<<"Open file error";
 
}
Только name и autor не должны иметь пробельных символов
(т.е. надо так, как у Вас в образце).
1
1617 / 1182 / 553
Регистрация: 08.01.2012
Сообщений: 4,561
16.02.2018, 08:43
C++
1
2
3
4
5
ifstream f("file.txt");
 
for(int i=0; i<4; i++)
  f>>p[i].name>>p[i].author>>p[i].ver>>p[i].year;
f.close();
вроде так
0
1 / 1 / 1
Регистрация: 24.10.2017
Сообщений: 7
16.02.2018, 09:12  [ТС]
Спасибо огромное)
0
0 / 0 / 0
Регистрация: 12.05.2022
Сообщений: 5
12.05.2022, 17:51
А можете объяснить что значит n в этом фрагменте? Точнее какое значение присвоено n?
C++
1
void output_struct(Programms* p, int n)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
12.05.2022, 17:51
Помогаю со студенческими работами здесь

Чтение данных из текстового файла и добавление их в динамический массив
Здравствуйте. Имеется динамический массив записей ( номер, ФИО, должность), а также текстовый файл откуда берутся данные для массива....

Ввод данных в динамический массив структур
Помогите правильно написать функцию - сколь не пробовал, не получается - getinfo(), которая требует ввода данных о студентах. Она...

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

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

Нужно сохранить и прочитать динамический массив структур из бинарного файла
struct city{ char name_city; char metro; int year_city; int naselenie; };


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru