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

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

25.05.2018, 00:25. Показов 6405. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Не могу разобраться как реализовать чтение структуры из данных . Перечитал много всего, так и не понял. помогите пожалуйста. Заранее спасибо.
C++
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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
#include <iostream>  
#include<fstream>
#include <windows.h>
using namespace std;
void administrator();//админка
void dobav();//добафление товара
void vyvod();//вывод товаров
 
struct prod
{
    int number;// номер записи
    char nametovar[20]; // имя товара
    int optom; // объем партии при оптовой продаже
    int price; // цена
    char uslov[20]; //условия продажи
    char oplata[20]; //форма оплаты
    int telephone; //телефон продавца
    char prim[20]; //примечание
};
int main()
{
    
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    int l;
    cout << "Введите:" << endl;
    cout << "1-Администратор" << endl;
    cout << "2-Пользователь" << endl;
    cout << "3-Выход" << endl;
    cin >> l;
    switch (l)
        {
        case 1: administrator();
            break;
        case 2:user();
            break;
        case 3:exit();
            break;
        }
    }
void administrator()
{
    int pass, r;
    cout << "Пароль:" << endl;
    cin >> pass;
    if (pass == 1234)
    {
        cout << "Введите:" << endl;
        cout << "1-для добавления записи" << endl;
        cout << "2-для вывода записи(ей)" << endl;
        cout << "3-2-для удаление записи" << endl;
        cout << "4-для поиска записи(ей)" << endl;
        cout << "5-для выхода" << endl;
        cin >> r;
        
            switch (r)
            {
            case 1:  dobav();
                break;
            case 2:vyvod();
                break;
            case 3:del();
                break;
            case 4:poisk();
                break;
            case 5:exit();
                break;
            }
        }
}
void dobav()
{
    int kol;
    cout << "Сколько товаров вы хотите добавить?" << endl;
    cin >> kol;
    prod *tovar=new prod[kol];
    for (int i = 0; i <kol; i++)
    {
        cout << "Запись номер : ";
        cout << i << endl;
        tovar[i].number = i;
        cout << "Наименование товара " << endl;
        cin >> tovar[i].nametovar;
        cout << "Объем партии при оптовой продаже" << endl;
        cin >> tovar[i].optom;
        cout << "Цена " << endl;
        cin >> tovar[i].price;
        cout << "Условия продажи-отгрузки" << endl;
        cin >> tovar[i].uslov;
        cout << "Форма оплаты" << endl;
        cin >> tovar[i].oplata;
        cout << "Телефон продавца" << endl;
        cin >> tovar[i].telephone;
        cout << "Примечания" << endl;
        cin >> tovar[i].prim;
        ofstream f;
        f.open("prod.txt", std::ios::app);
        f <<tovar[i].nametovar<<"\n"<<tovar[i].optom <<" \n "<<tovar[i].price << " \n" << tovar[i].uslov<< " \n " << tovar[i].oplata << " \n " << tovar[i].telephone<<" \n " << tovar[i].prim <<"\n";
        f.close();
    }
    delete[] tovar;
    tovar = NULL;
    cout<<"Для продолжение введите пароль повторно!" << endl;
    administrator();
        
}
void vyvod()
{
    int kolv;//кол-во записей для вывода
    char s = '\n';
    cout << "Сколько записей вы хотите показать?" << endl;
    cin >> kolv;
    prod *tovar = new prod[kolv];
    ifstream fout;
    fout.open("prod.txt",ios::in);
    for (int i = 0; i < kolv; i++)
    {
        
    
    }
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
25.05.2018, 00:25
Ответы с готовыми решениями:

Запись структуры и чтение из файла в структуру ( как бы лучше )
Подкиньте идею как лучше записать структуру в файл и обратно из файла в структуру У меня есть мысль: даны 4 элемента вводим их в...

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

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

10
475 / 427 / 290
Регистрация: 10.03.2015
Сообщений: 1,782
25.05.2018, 00:35
Цитата Сообщение от user111111 Посмотреть сообщение
чтение структуры из данных
Как записал, так и считывай.
C++
1
fout >> tovar[i].nametovar ...
А вообще, для структур можно использовать бинарный режим, тогда целиком как записывать, так и считывать.
0
0 / 0 / 0
Регистрация: 09.06.2016
Сообщений: 12
25.05.2018, 00:42  [ТС]
написал для примера
C++
1
2
3
4
5
6
for (int i = 0; i < kolv; i++)
    {
        fout >> tovar[i].nametovar;
        cout << tovar[i].nametovar;
        
    }
ничего не выводит.
Цитата Сообщение от SuperKir Посмотреть сообщение
А вообще, для структур можно использовать бинарный режим, тогда целиком как записывать, так и считывать.
задание именно на работу с текстовыми файлами
0
475 / 427 / 290
Регистрация: 10.03.2015
Сообщений: 1,782
25.05.2018, 01:01
user111111, я взял твой код и тоже самое написал для пример: почему-то у меня всё считалось и вывело (не учитывая конечно твои ошибки).
Миниатюры
Чтение данных из файла и запись в структуру  
0
0 / 0 / 0
Регистрация: 09.06.2016
Сообщений: 12
25.05.2018, 01:08  [ТС]
Цитата Сообщение от SuperKir Посмотреть сообщение
user111111, я взял твой код и тоже самое написал для пример: почему-то у меня всё считалось и вывело (не учитывая конечно твои ошибки).
я так понял запись данных из файла у вас идет во временный объект temp?и после каждого вывода его значение перезаписывается?
0
475 / 427 / 290
Регистрация: 10.03.2015
Сообщений: 1,782
25.05.2018, 01:10
user111111, Да
0
0 / 0 / 0
Регистрация: 09.06.2016
Сообщений: 12
25.05.2018, 01:15  [ТС]
спасибо за подсказку, но мне нужно записать данные в структуру что-бы в дальнейшем проводить с ними операции, а при таком способе это будет невозможно.
0
475 / 427 / 290
Регистрация: 10.03.2015
Сообщений: 1,782
25.05.2018, 01:39
user111111, Все возможно, если захотеть. В твоем случае всего-то нужно создать массив с каким работать будешь или использовать готовый правильно.
П.с. и убрать подальше "ввод количества для считывания", или обрабатывай все исключения, которые могут выплыть при таком подходе.
0
0 / 0 / 0
Регистрация: 09.06.2016
Сообщений: 12
25.05.2018, 03:07  [ТС]
проблему решил, один раз объявил объект структуры tovar(не как массив) и передаю его в функции и все заработало, хотя и криво пока что(выводит больше записей чем в файле).
C++
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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
#include <iostream>  
#include<fstream>
#include <windows.h>
using namespace std;
struct prod
{
    int number;// номер записи
    char nametovar[20]; // имя товара
    int optom; // объем партии при оптовой продаже
    int price; // цена
    char uslov[20]; //условия продажи
    char oplata[20]; //форма оплаты
    int telephone; //телефон продавца
    char prim[20]; //примечание
};
prod tovar;
void administrator(prod);//админка
void dobav(prod);//добафление товара
void vyvod(prod);//вывод товаров
int main()
{
    
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    int l;
    cout << "Введите:" << endl;
    cout << "1-Администратор" << endl;
    cout << "2-Пользователь" << endl;
    cout << "3-Выход" << endl;
    cin >> l;
    switch (l)
        {
    case 1: administrator(tovar);
            break;
        case 2:user();
            break;
        case 3:exit();
            break;
        }
    }
void administrator(prod tovar)
{
    int pass, r;
    cout << "Пароль:" << endl;
    cin >> pass;
    if (pass == 1234)
    {
        cout << "Введите:" << endl;
        cout << "1-для добавления записи" << endl;
        cout << "2-для вывода записи(ей)" << endl;
        cout << "3-2-для удаление записи" << endl;
        cout << "4-для поиска записи(ей)" << endl;
        cout << "5-для выхода" << endl;
        cin >> r;
        
            switch (r)
            {
            case 1:  dobav(tovar);
                break;
            case 2:vyvod(tovar);
                break;
            case 3:del();
                break;
            case 4:poisk();
                break;
            case 5:exit();
                break;
            }
        }
}
void dobav(prod tovar)
{
    int kol;
    cout << "Сколько товаров вы хотите добавить?" << endl;
    cin >> kol;
    for (int i = 0; i <kol; i++)
    {
        cout << "Запись номер : ";
        cout << i << endl;
        tovar.number = i;
        cout << "Наименование товара " << endl;
        cin >> tovar.nametovar;
        cout << "Объем партии при оптовой продаже" << endl;
        cin >> tovar.optom;
        cout << "Цена " << endl;
        cin >> tovar.price;
        cout << "Условия продажи-отгрузки" << endl;
        cin >> tovar.uslov;
        cout << "Форма оплаты" << endl;
        cin >> tovar.oplata;
        cout << "Телефон продавца" << endl;
        cin >> tovar.telephone;
        cout << "Примечания" << endl;
        cin >> tovar.prim;
        ofstream f;
        f.open("prod.txt",std::ios::app);
        f <<tovar.nametovar<<"\n"<<tovar.optom <<" \n "<<tovar.price << " \n" <<tovar.uslov<< " \n " <<tovar.oplata << " \n " <<tovar.telephone<<" \n " <<tovar.prim <<"\n"<<"\n";
        f.close();
    }
    cout<<"Для продолжение введите пароль повторно!" << endl;
    administrator(tovar);
        
}
void vyvod(prod tovar)
{
    ifstream fout;
    fout.open("prod.txt",ios::in);
    while (!fout.eof())
    {
        fout >> tovar.nametovar >> tovar.optom >> tovar.price >> tovar.uslov >> tovar.oplata >> tovar.telephone >> tovar.prim;
        cout << "Наименование товара : " << tovar.nametovar << endl;
        cout << "ОБъем партии при оптовой продаже :" << tovar.optom << endl;
        cout << " Цена : " << tovar.price << endl;
        cout << "Условия продажи : " << tovar.uslov << endl;
        cout<< "Форма оплаты : " << tovar.oplata << endl;
        cout << "Телефон : " << tovar.telephone << endl;
        cout << "Примечание : " << tovar.prim << endl;
    }
    
    system("pause");
}
не подскажите почему?
Миниатюры
Чтение данных из файла и запись в структуру  
0
с++
1282 / 523 / 225
Регистрация: 15.07.2015
Сообщений: 2,562
25.05.2018, 03:27
вы когда грузите файл проверку на пустую строку проверяете?
0
0 / 0 / 0
Регистрация: 09.06.2016
Сообщений: 12
25.05.2018, 03:53  [ТС]
Цитата Сообщение от Antikl Посмотреть сообщение
вы когда грузите файл проверку на пустую строку проверяете?
нет, но как я понял это обязательно. займусь этим. спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
25.05.2018, 03:53
Помогаю со студенческими работами здесь

Чтение файла, чтение названия папки где находится файл, запись данных на PHP
Допустим у нас есть структура с папками типа Large -&gt; Vehicles -&gt; Firetruck_0 В этой папке лежит файл формата .dat Что нужно сделать? ...

Чтение данных из текстового файла в структуру
Добры вечер новичках и профессионалам! Изучаю C++ только четыре месяца и сейчас разбираюсь с записью из файла (библиотека fstream). И...

Запись данных из файла в структуру
Условие задачи ниже. Файл с данными: What are colors in Russian flag (from top to bottom)? Red, blue and white white, blue and red ...

Запись данных в структуру из файла
Пытаюсь прочесть файл и записать содержимое в структуру. #include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; #define NUMBER_OF_GAMES 10 ...

Запись в структуру из файла. База данных
Добрый день. Помогите советом, очень нужно, т.к. собираюсь доделать за ближайшие часы. Я пишу базу данных на основе двусвязного...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка. Рецензия / Мнение Это мой обзор планшета X220 с точки зрения школьника. Недавно я решила попытаться уменьшить свой. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru