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

Запись\чтение структуры в\из файл(а)

21.04.2013, 05:21. Показов 1555. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Никак не пойму как записать структуру в файл, а потом считать ее.

Есть структура
C++
1
2
3
4
5
6
7
8
9
10
struct sklad
{
    char nazva[20];
    int kilkist;
    float vaga;
    int sort;
    float tsina;
    char otrymuvach[20];
    char data[15];
};
Я ее заполняю, а потом мне нужно записать в файл.
Но никак не получается через write.
C++
1
file.write(структура, размер)
Можно какой то простенький пример, что б разобраться?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
21.04.2013, 05:21
Ответы с готовыми решениями:

Запись/Чтение структуры в файл (бинарный)
Всем привет! у меня такая задачка, очень простая. Нужно записать структуру в файл, а потом хочу проверить что же я там записал - тоесть...

Бинарные запись и чтение структуры в файл
Записываю структуру в файл.. нужно прочитать.. но он не читает... если delete n; убрать, то "Нарушение прав доступа при записи". ...

Запись структуры в файл, чтение из файла и удаление (файловый ввод/вывод)
Добрый вечер! Возникла такая проблема, что при добавлении записи, удаляются уже имеющиеся записи в файле. Также не помешала бы помощь в...

8
Неэпический
 Аватар для Croessmah
18144 / 10728 / 2066
Регистрация: 27.09.2012
Сообщений: 27,028
Записей в блоге: 1
21.04.2013, 14:20
Записывайте каждое поле структуры отдельно.
0
 Аватар для Triall
3 / 3 / 3
Регистрация: 16.02.2011
Сообщений: 68
22.04.2013, 11:31  [ТС]
Цитата Сообщение от Croessmah Посмотреть сообщение
Записывайте каждое поле структуры отдельно.
Тоже думал об этом, но как бы потом ее считать(опять же получить струткуру)?
0
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
22.04.2013, 11:44
Цитата Сообщение от Triall Посмотреть сообщение
Но никак не получается через write.
Почему?
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
#include <iostream>
#include <fstream>
 
using namespace std;
 
struct sklad
{
    char nazva[20];
    int kilkist;
    float vaga;
    int sort;
    float tsina;
    char otrymuvach[20];
    char data[15];
};
 
 
int main()
{
    sklad s;
 
    strcpy( s.nazva, "Some title" );
    s.kilkist = 42;
    // ...
 
    std::ofstream ofile = std::ofstream( "f.dat", ios_base::binary | ios_base::out );
    ofile.write( (const char*)&s, sizeof(sklad) );
    ofile.close();
 
    sklad k;
 
    k.kilkist = 111;
    cout << "before load" << endl;
    cout << k.kilkist << endl;
 
    std::ifstream ifile = std::ifstream( "f.dat", ios_base::binary | ios_base::in );
    ifile.read( (char*)&k, sizeof(sklad) );
    ifile.close();
 
    cout << "after load" << endl;
    cout << k.kilkist << endl;
    cout << k.nazva << endl;
    // ...
 
    system( "pause" );
}
0
 Аватар для Triall
3 / 3 / 3
Регистрация: 16.02.2011
Сообщений: 68
22.04.2013, 18:18  [ТС]
Tulosba, Пробовал так, постоянно вылазит ошибка
ошибка: запрос элемента «write» в «file_name», имеющего не классовый тип «char [40]»|
в таком коде
C++
1
file_name.write((const char*)&s, sizeof(sklad));
0
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
22.04.2013, 18:20
Triall, т.е. мой код выдает такую ошибку?
1
 Аватар для Triall
3 / 3 / 3
Регистрация: 16.02.2011
Сообщений: 68
22.04.2013, 18:22  [ТС]
Tulosba, Ну как бы не Ваш код, а мой, который сделан по примеру Вашего...

Кстати вот он
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
#include <iostream>
#include <fstream>
 
using namespace std;
 
struct sklad
{
    char nazva[20];
    int kilkist;
    float vaga;
    int sort;
    float tsina;
    char otrymuvach[20];
    char data[15];
};
 
int inPut();
int dopovnenia();
int outPut();
int obrobka();
 
int main(void)
{
    int sw;
    do
    {
        cout << "Rezhymy roboty programmy :" << endl
             << "  1 -Organizaciia failu z informacieyu" << endl
             << "  2 -Dopovnenia failu novoyu informatsieyu" << endl
             << "  3 -Vyvid informaytsii iz bazy v tekstovii fail" << endl
             << "  4 -Obrobka failu z informatsieyu" << endl
             << "  0 -Vyhid" << endl << endl;
        cin >> sw;
        switch (sw)
        {
            case 1: inPut(); break;
            case 2: dopovnenia(); break;
            case 3: outPut(); break;
            case 4: obrobka(); break;
            case 0: break;
            default: cout << "Pomylka, vkazhit pravylno rezhym roboty" << endl;
        }
    }
    while (sw);
    return 0;
}
 
 
int inPut()
{
    sklad tmp;
    ofstream file_in;
    char file_name[40];
    cout << "Vvedit imya failu: ";
    cin >> file_name;
    file_in.open(file_name, ios_base::binary | ios_base::out);
    if (!file_in.is_open())
    {
        cout << "Fail ne vidkrytyi dlia zapysu!";
        return 0;
    }
    while (true)
    {
        cout << "Vvedit nazvu produktsii";
        cin >> tmp.nazva;
        cout << "Vvedit kiskist produktsii";
        cin >> tmp.kilkist;
        cout << "Vvedit vagu produktsii";
        cin >> tmp.vaga;
        cout << "Vvedit sort produktsii";
        cin >> tmp.sort;
        cout << "Vvedit tsinu produktsii";
        cin >> tmp.tsina;
        cout << "Vvedit otrymuvacha produktsii";
        cin >> tmp.otrymuvach;
        cout << "Vvedit datu vidgruzky";
        cin >> tmp.data;
        file_name.write((const char*)&s, sizeof(sklad));
    }
}
0
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
22.04.2013, 18:27
Triall, 78 строка ссылается на несуществующие переменные. Неужели не видно?
C++
1
file_in.write((const char*)&tmp, sizeof(sklad));
Ну и игры с бесконечным циклом не понятно к чему.
1
 Аватар для Triall
3 / 3 / 3
Регистрация: 16.02.2011
Сообщений: 68
22.04.2013, 18:29  [ТС]
Tulosba, Вот слепой я какой то )) Спасибо, теперь заработало.

ЗЫ
игры с бесконечным циклом еще не дописаны еще просто )
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
22.04.2013, 18:29
Помогаю со студенческими работами здесь

Чтение и запись структуры в C++
Добрый день, программисты! В общем такая ситуация. Страшно запутался в fread fwrite (это кажется C) и в file.read, file.write (методом...

Чтение/запись структуры
День добрый! Помогите пожалуйста решить задачу: Сформировать текстовый файл, имеющий следующую структуру: фамилия, адрес, марка автомобиля,...

Запись и чтение структуры с файла
Привет всем.Столкнулся с проблема записи структуры в файл и чтения ее из файла.Вот сама структура: struct papa { ...

Запись и чтение структуры из файла
Здравствуйте, у меня дано такое задание: Составить программу &quot;Список студентов группы&quot;, в котором указаны - Фамилия,Имя,пол, место...

запись и чтение структуры в бинарник
как правильно записывать и считывать структуру из бинарника? при этом коде программа виснет сами структуры struct employee { ...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru